v1
latestOpenAPI 3.1.02026-07-241653251.3 MBSubmit or validate a payout
Single endpoint that drives the full payout lifecycle. The optional validate body field switches between two modes:
-
validate: true — runs the full pre-flight pipeline (schema, business-logic, and address-validity checks) with no side effects. Returns 200 OK with body {} on success, 400 Bad Request with errors[] on any validation failure, or 422 Unprocessable Entity with errors[] if the payout asset is currently depegged. Nothing is persisted; no beneficiary, external account, or payment is created. The Idempotency-Key header is not required and is ignored if supplied.
-
validate: false or omitted (submit) — runs the same validation pipeline then executes the payout. Requires the Idempotency-Key header. On success returns 202 Accepted with a slim { idempotency_key, payout_id, status } body; full resource state is retrieved via GET /payouts or observed on payout.status_updated webhooks. The (platform_code, Idempotency-Key) pair is unique: replaying the same key with the canonical-JSON-equivalent body returns the original 202 echo-back; replaying with a different body returns 400.
Headers
HMAC-SHA256 signature of the request, base64-encoded. See the Authentication guide for the exact signing formula.
Current Unix timestamp in seconds. Must be within 60 seconds of server time or the request is rejected.
Caller-supplied idempotency key (stable across retries of the same logical operation). Required when validate is omitted or false. Ignored in validate mode. zerohash stores a SHA-256 hash of the canonicalized JSON body alongside this key; a replay with the same key but a different body returns HTTP 400.
Request body
Example request
{
"payor": {
"participant_code": "PAYOR1",
"payor": {
"participant_code": "ORIG01"
}
},
"beneficiary": {
"participant_code": "BENE01",
"external_account": {
"external_account_id": "ea_3b1d8e4a"
}
},
"payment": {
"asset": "USDC",
"quoted_asset": "USD",
"total": "100.00",
"description": "Monthly payout"
},
"account_model": "omnibus",
"metadata": {
"client_ref": "order-9182",
"region": "us-west",
"campaign": "weekly-payout"
}
}Response
Validate-mode success (only returned when validate: true). All three validation tiers passed. Body is intentionally empty.
Empty acknowledgement.
Example response
{}