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, address-validity and Travel Rule checks) with no side effects. Returns200 OKwith body{}on success,400 Bad Requestwitherrors[]on any validation failure (including a destination address that still needs Travel Rule information),403 Forbiddenwith{ error: true, message }if a payout party (beneficiary or ultimate payor) is not eligible under zerohash rules (e.g. not in an allowed jurisdiction) or the destination address is blocked by the Travel Rule compliance check, or422 Unprocessable Entitywitherrors[]if the payout asset is currently depegged or the destination address is under Travel Rule review. Nothing is persisted; no beneficiary, external account, or payment is created, and no Travel Rule information is submitted in validate mode. TheIdempotency-Keyheader is not required and is ignored if supplied. -
validate: falseor omitted (submit) — runs the same validation pipeline (same400/403/422rejections, nothing persisted), submits anybeneficiary.external_account.travel_ruleinformation the destination address still needs, then executes the payout. Requires theIdempotency-Keyheader. On success returns202 Acceptedwith a slim{ idempotency_key, payout_id, status }body; full resource state is retrieved viaGET /payoutsor observed onpayout.status_updatedwebhooks. The (platform_code,Idempotency-Key) pair is unique: replaying the same key with the canonical-JSON-equivalent body returns the original202echo-back; replaying with a different body returns400. A rejected request does not consume the key.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||