Execute crypto payout
Execute a crypto payout from an account to a crypto beneficiary. Funds are
debited immediately and the payout is processed on-chain. The response
status is LOCKED (pending); txHash is present once the transaction is
broadcast. Chain confirmation is asynchronous: clients should poll
GET /v1/transactions/{id} to observe the transition to COMPLETED
(confirmed on chain) or DECLINED (rejected on chain).
Requires the organization to be enabled for crypto payouts.
Headers
Bearer token. Format: Bearer <api_key>
Unique key per logical operation. UUID v4 recommended. Max 255 characters.
Body
Request body for executing a crypto payout.
Source account to debit.
Crypto beneficiary to pay out to.
Payout amount in major units (e.g. "100.00").
Asset code (e.g. USDC, USDT).
Blockchain network name (e.g. ETHEREUM_MAINNET, SOLANA_MAINNET).
Optional pin against fee drift. Echo the schedule returned by
GET /v1/fees/crypto-payout to guarantee we charge exactly what you
quoted. If the schedule has changed since the quote, we return
409 fee_schedule_drifted and the client should refresh + retry. Omit to
accept whatever the current schedule says.
Optional description.
Free-form tags (max 20 tags, each up to 100 characters).
Arbitrary metadata (max 50 keys, max 4 KB serialized).
Response
The request has succeeded.
A completed crypto payout transaction.
Object type. Always transaction.
transaction Unique transaction identifier.
Transaction type. Always CRYPTO_PAYOUT.
CRYPTO_PAYOUT Transaction status. LOCKED means the payout is pending: it has been accepted
and is being processed on-chain. txHash is present once the transaction is
broadcast. Poll GET /v1/transactions/{id} to observe the final state —
typically COMPLETED within seconds to minutes depending on chain, or
DECLINED if the on-chain tx was rejected.
LOCKED Source account.
Target beneficiary.
Payout amount in major units.
Asset code.
Destination on-chain address.
Fee breakdown for this transaction. Always populated; every component is zero when no fee applies.
amount is what the beneficiary receives on-chain; the user's account is debited amount + fee.total.
When the transaction was created.
On-chain transaction hash. Present once the transaction is broadcast; may be
absent while the payout is still pending (status LOCKED). Poll
GET /v1/transactions/{id} to pick it up.