GET/v1/payouts
List a merchant's payouts
Returns the merchant's payouts, newest first, each with the movements that make it up.
Paged with the cursor of the previous page.
Cursor rather than offset for a reason that bites here: payouts arrive at the head of this list, so a second page read by offset would skip the rows the first page was pushed down by. The reader is a bookkeeper matching bank lines, who is exactly who cannot afford a silently missing one.
Parameters
-
cursorquery · stringOpaque cursor from a previous page's
next_cursor. Omit to start from the beginning.Pass it back exactly as received. It is base64 and its structure is not part of this contract — decoding it, or constructing one by hand, will break without notice.
-
limitquery · integer · int32Maximum items to return. The server may return fewer, so always drive the loop from
has_morerather than from the size of the page you got back.
Responses
-
200
A page of payouts.
Payout page · application/json
has_morebooleanRequired
Whether another page may follow.
-
itemsarray of PayoutRequired
idstring · uuidRequired
-
amountMoneyRequired
What arrived, which is the sum of the items' signed amounts.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
arrival_datestring · dateNullable
When the processor expects it to arrive, where it has said.
-
by_kindarray of PayoutKindTotalRequired
The items summed by kind, signed: what each kind added to the payout or took from it, so they add up to
amount. Captures first, then what reduced them; a kind the payout has none of is absent.kindstring · enumRequired
capturerefundfeechargebackadjustment-
amountMoneyRequired
Signed, so the kinds of a payout add up to its amount.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
-
itemsarray of PayoutItemRequired
The movements that make up the total, in the order the processor gave them.
kindstring · enumRequired
capture— a sale settling, which adds to the payout.refund— money returned to a cardholder, which takes from it.fee— the processor's charge.chargeback— a disputed sale clawed back.adjustment— anything else the processor moved, carrying its own sign.capturerefundfeechargebackadjustment-
amountMoneyRequired
The movement's magnitude. For every kind but
adjustmentthis is non-negative and thekinddecides the direction; anadjustmentcarries its own sign.amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
order_idstring · uuidNullable
The order this movement belongs to, when it is one of ours.
payment_idstring · uuidNullable
The payment this movement settles, when it is one of ours.
referencestringRequired
The processor's own reference for the movement, for reconciliation.
≤ 255 chars
payment_account_idstring · uuidRequired
The payment account the money was paid out of.
settlement_datestring · dateNullable
The processor's settlement day the payout was built from, on the processor's own clock: the takings it pays out. Null for a payout recorded before settlement reports were kept.
statusstring · enumRequired
pending— the processor has announced it but the money has not moved (Stripe's word).paid— it has left the processor. Whether it has cleared the merchant's bank is the bank's business and not something this records.failed— it did not go through; the money stays with the processor and is normally carried into a later payout.pendingpaidfailed-
transitionsarray of PayoutTransitionEvery move of the payout's status, oldest first: who said so and when. Present on a payout read by its id.
-
amountMoneyThe amount the processor gave with the move, where it gave one.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
processor_event_idstringThe processor's own id for the event, where it gave one.
processor_occurred_atstring · date-timeNullable
When the processor says the move happened.
received_atstring · date-timeRequired
When we learned of it.
sourcestring · enumRequired
processorwhen the processor said so,merchantwhen somebody here recorded it, andreconstructedwhen nobody said so and it was inferred from the status the payout held.processormerchantreconstructedstatusstring · enumRequired
pendingpaidfailed
-
next_cursorstringNullable
Pass as
cursorfor the next page, whenhas_moreis true.
-
400
The request could not be parsed. Malformed JSON, a bad query parameter, or a header that failed to decode, among them an
API-Versionlater than the server speaks or not a date (api-version-unknown, with the server's own inapi_version).Distinct from
422: a400never reached validation, soinvalid_paramsis absent. Retrying without changing the request will fail again, except that a request refused for itsAPI-Versiongoes once the server is updated. -
401
No credentials, or credentials that could not be verified — missing bearer token, malformed JWT, expired token, or a signature that failed against the issuer's JWKS.
Refresh the token and retry once. Repeated
401after a refresh means the device needs to re-enrol. -
403
Authenticated, but not permitted. The token is valid and its merchant was resolved, but the caller's role does not allow this operation, or the target belongs to a different merchant.
Cross-tenant access is reported as
403on a resource the caller may not see, and as404where even confirming existence would leak information. Retrying will not help. -
410
The request names an
API-Versionthis server no longer serves (docs/decisions/0011). Nothing in it was read.api_versionnames the version the server speaks: the client is behind, and sends the request again once it is updated. -
422
The request parsed but failed validation.
invalid_paramslists every failing field with a JSON Pointer, not just the first, so a client can mark up a whole form in one pass rather than making the user fix errors one round trip at a time.Also returned when an
Idempotency-Keyis replayed with a different body, and when device-computed order totals disagree with the server's recomputation. -
429
Rate limit exceeded. Honour
Retry-Afterrather than applying your own backoff.A fleet of tills coming back online together after an outage is the realistic cause, which is exactly when uncoordinated client-side retry turns a brief outage into a sustained one. The limit is per process, and per site for what records trade there — a request spends its site's budget, and a till's own smaller one inside it — and per
(client, merchant)for everything else; noRateLimitfield is sent, so this response and itsRetry-Afterare the whole of the contract. -
500
Something failed on our side.
trace_ididentifies the request in our tracing — quote it in a support ticket.The body never carries internal detail: no SQL, no stack traces, no upstream error strings. Safe to retry with the same
Idempotency-Key.