Withdraw the payee's held balance as one consolidated payout
Release every still-owed disbursement for this payee as a single
consolidated payout — the money credited to their wallet and held until they
choose to take it.
This is the API-key counterpart to the creator pressing Withdraw in the hosted portal: the same release spine, the same consolidation, the same gates. Use it when you keep your own wallet UI and want an in-app "Withdraw" button to trigger the payout rather than routing the creator to the portal.
Held-by-default (per rail). Grade holds credited money as owed in the wallet
until an explicit withdraw (so a creator who earned across cycles takes it as ONE
payout and ONE claim link). SideShift auto-releases owed into its managed wallet
the moment the credit lands; the creator drains it (leg-2) later. Stripe/Tipalti
auto-release only when payability flips false→true (KYC completes). Auto-release is
a per-rail behavior, not a property of "custody-free rails" as a class.
No body: a wallet withdraws what is in it; the amount, rail and consolidation
are resolved server-side. Refuses with 409 if the payee is not yet payable
(KYC incomplete) or a per-source min/max/frequency policy blocks it — nothing is
released in that case.
Required scope: disbursements:write.
Authorization
bearerAuth x8xTimestamp x8xSignature Your client API key. Authorization: Bearer <API key>. The gateway stores
only sha256(key); keys are rotatable and revocable.
In: header
Unix time (seconds) at which the request was signed. Must be within 300s of gateway time.
In: header
Hex HMAC-SHA256(signingSecret, "{timestamp}.{rawBody}") over the exact raw
request body (empty string for GET). Defeats tampering and replay.
In: header
Path Parameters
The gateway payee id.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
// The SDK has no helper for this endpoint yet. Use the cURL tab, or// call it with any HTTP client: the SDK's request signing scheme is// documented under Authorization on this page.{ "released": 0, "releasedCents": 0, "awaitingFunding": 0, "held": 0, "failed": 0, "payoutLink": "string"}Email the payee a hosted portal (wallet) link POST
Send the payee a signed, single-use link that lands them **already authenticated** in their gateway portal wallet (`/portal`) — no separate gateway login. The link is delivered **only to the payee's own email address** and is **never returned in the response**: it is a bearer credential that establishes a browser session **and** satisfies the withdraw re-authentication step-up for roughly one hour, and a portal session spans every client that shares the payee's email. Returning it would let a client obtain a working session for an address it merely asserted, so the API hands back only a delivery acknowledgement. The link is single-use (enforced by the gateway's auth provider) — that's also why this is gated by its own scope rather than `onboarding:write`. **Required scope:** `portal:write`.
List your payouts GET
List this client's payouts, newest first, with cursor pagination. Filter by `status`. **Required scope:** `payouts:read`.