Skip to main content
POST
Pay out a selection of line items for one or more vendors (asynchronous)

Authorizations

x-access-token
string
header
required

JWT minted from a merchant API key (mk_live_…) by POST /authenticate. Send the token value directly, with no "Bearer" prefix. Tokens last 14 days and can be renewed at POST /refresh-token; revoking the key refuses the next request made with any token minted from it.

Headers

Idempotency-Key
string
required

Caller-chosen dedupe key, unique per payout you intend to make. Retrying the same request with the same key returns the same requestId and never starts a second run; the engine deduplicates on it. The key is bound to its request body: the same key with a different body is refused with 422 IDEMPOTENCY_KEY_REUSED. A NEW key is a NEW payout: always retry a timed-out or failed-to-connect request with its original key, never a fresh one, or the same items can be paid twice.

Required string length: 8 - 128

Body

application/json
vendors
object[]
required

The vendors to pay, one group each, paid as one batch per vendor. A vendorId may appear only once, and a line item or adjustment id under only one vendor (ids compare case-insensitively). Every vendor must belong to this shop and be ready for the method, or the whole request is refused and nothing is paid.

Required array length: 1 - 50 elements
method
enum<string>
required

READ-side method name, one for every vendor of the run; mapped to legacy resolver keys at the bridge. manual records a payment made outside the app and needs manualMethod

Available options:
stripe,
paypal,
globalPayouts,
manual
manualMethod
enum<string>

How a manual payout was made, the same options as the merchant portal. Recorded as the run's payout method and shown in the vendor email. Required when method is manual, refused with any other method

Available options:
bankTransfer,
paypal,
cash,
other
Example:

"bankTransfer"

notifyVendor
boolean
default:true

Whether the run emails the vendor

payoutDate

Recorded as the payout date. Either an RFC 3339 date-time or a calendar date without a time (YYYY-MM-DD), recorded as that day in the merchant portal's MM/DD/YYYY. When omitted, defaults to today in the shop's timezone (as MM/DD/YYYY), as the merchant portal pre-fills it

Example:

"2026-03-02"

comment
string

Free-text note recorded with the run

Maximum string length: 2000

Response

Replay of a run that already completed under this Idempotency-Key; nothing new was started and the stored result is returned

success
boolean
data
object