Create Payout
Execute a previously-quoted payout.
quote_id; production atomically marks it
used so a second POST with the same quote_id returns 409
quote_already_used. Sandbox skips the consume but mints a
deterministic payout id from (org, quote_id) so the same
inputs produce the same response.
Status returned is always pending at execute time;
partners poll GET /payouts/:id (or, in Phase 4, subscribe
to the payout.* webhooks) for state changes.Authorizations
Paste your Connect API key (sk_live_… for production, sk_test_… for sandbox) without the Bearer prefix. Mint and rotate keys from the admin panel.
Body
Request body for POST /payouts.
Just the quote_id — every other parameter (asset, amount, destination, route) is locked in the quote and we look it up server-side. This is the contract that lets the quote act as a price promise: the partner can't tamper with the inputs between the price they showed the user and what we execute.
From a prior POST /payouts/quote response. Single-use: a second POST /payouts with the same quote_id returns 409 quote_already_used.
1 - 128Response
Successful Response
Response body for POST /payouts and base for GET /payouts/:id.
Status transitions monotonically forward (pending → broadcast
→ delivered, or any → failed). Partners can poll this endpoint
or subscribe to payout.broadcast / payout.delivered /
payout.failed webhooks (Phase 4) for state changes.
Partner-facing payout id (e.g. pay_...). Opaque and stable across the payout's lifetime.
pending, broadcast, delivered, failed A condensed copy of the quote, embedded in the execute / detail response so partners can render the executed terms without a separate /payouts/quote lookup.
Notably omits insufficient_funds (only relevant at quote
time) and recommendation (advisory, not part of what was
executed). Keeps the snapshot focused on what actually
happened.
Server-computed best estimate. Updated as state advances (a quote estimate of 90s shrinks to 20s after the bridge broadcast lands). Partners can drive UI countdowns off this.
Public URL the partner can share with their user or embed for self-service tracking. The hosted page renders the same timeline as GET /payouts/:id.