Yuzu
3PL teams

Manage merchant teams

Create managed merchants, invite their users, assign account managers, and go live.

Use a parent 3PL API key for every request on this page.

List merchants

GET https://app.yuzu.so/api/teams/merchants

The response includes each merchant's lifecycle status, account manager, order count, and onboarding progress.

[
  {
    "id": "org_exampleMerchant123456789",
    "name": "Example Merchant",
    "type": "merchant",
    "parent_team_id": "org_exampleThreePl123456789",
    "status": "onboarding",
    "account_manager_user_id": null,
    "orderCount": 12,
    "onboarding": {
      "total": 5,
      "completed": 3,
      "openThreePlTasks": 1,
      "openMerchantTasks": 1
    }
  }
]

Store the merchant id. You use it as targetTeamId when creating orders.

Create a merchant

POST https://app.yuzu.so/api/teams/merchants
{
  "name": "Example Merchant",
  "email": "operations@example.com"
}
FieldTypeDescription
namestringRequired. Merchant-team name, up to 100 characters.
emailstringOptional. Invites this address as a merchant-team admin.

Yuzu creates the merchant in onboarding, seeds its onboarding tracker and default order flow, and adds the parent team's admins to the merchant team. A successful request returns 201 Created.

{
  "team": {
    "id": "org_exampleMerchant123456789",
    "name": "Example Merchant",
    "type": "merchant",
    "parent_team_id": "org_exampleThreePl123456789",
    "status": "onboarding"
  },
  "invitationSent": true
}

invitationSent can be false even when the team was created. Check it before telling the merchant that an invitation was sent.

Invite another merchant admin

POST https://app.yuzu.so/api/teams/merchants/{merchantTeamId}/invitations
{
  "email": "another.user@example.com"
}

The invited user joins the merchant team as an administrator. Successful requests return 201 Created with { "invitationSent": true }.

Assign an account manager

First list the parent 3PL team's members:

GET https://app.yuzu.so/api/teams/members

Use the selected member's userId when updating the merchant:

PUT https://app.yuzu.so/api/teams/merchants/{merchantTeamId}
{
  "accountManagerUserId": "user_example123"
}

The account manager must belong to the parent 3PL team. Send null to clear the assignment.

Take a merchant live

Take the merchant live after the onboarding tracker is complete and the test print has passed.

POST https://app.yuzu.so/api/teams/merchants/{merchantTeamId}/go-live

The operation is idempotent. Its response contains the updated team, including went_live_at and went_live_by.

Go-live enables automatic printing for new eligible orders. It does not automatically print orders received during onboarding; review and print those orders manually if required.

Status codes

StatusMeaning
200List, update, or go-live request succeeded.
201Merchant creation or invitation succeeded.
400Invalid request data or account-manager assignment.
401Missing, malformed, or invalid API key.
403The authenticated team is not a 3PL team.
404The merchant is not managed by the authenticated 3PL team.
5xxYuzu could not complete the operation.
Copyright © 2026