Execute a payout
Send funds from a virtual account to a recipient. The mode is auto-detected:
Fiat payout (no payment_instructions): debits the virtual account balance and queues the outbound transfer over the recipient’s rail (WIRE or ACH). Requires sufficient balance to cover the amount plus fees, and recipient_id is required. supporting_documents (an invoice) may be attached and is surfaced to compliance, but the API does not enforce it for fiat-mode payouts.
Fiat-to-crypto payout (fiat virtual account, WALLET recipient): debits the balance and delivers stablecoins to the recipient wallet.
Crypto-funded payout (payment_instructions, or mode: "CRYPTO"): returns deposit_instructions with a single-use deposit address; you fund the payout by sending stablecoins to that address, then Kira settles and sends the outbound transfer. supporting_documents (an invoice) is required unless nature_of_payment is first_party or your account is configured to not require documents.
Pass an optional quote_id (reserved via POST .../payout/preview with create_quote: true) to execute at the locked amount, fees, and rate. Prerequisites: the virtual account must be US_BANK and have reached the active state — confirm readiness via account_number being issued (or the virtual_account.activated webhook), not status alone: on the 2026-04-14 pin an active virtual account reads status: approved (the raw active value is returned only on 2026-06-01 and later). The recipient must already exist and is scoped to your client: a payout may target any recipient belonging to the client, not only recipients of the virtual account’s owning user. Requires the Idempotency-Key header. The 201 response returns the payout with id and status: "created" (lowercase); a later GET /v1/payouts/{id} reports the same payout as CREATED.
Authorizations
Access token from POST /auth (the data.access_token value).
API key issued by Kira. Required on every request, including /auth.
Headers
Optional. The date-versioned API version to apply for this request (e.g. 2026-04-14). When sent it always wins, even over your pinned account default. When omitted, the API uses your account's pinned version if set, otherwise a baseline default.
"2026-06-01"
"{{idempotency_key}}"
Path Parameters
Virtual account UUID.
Body
VaPayoutRequest. There is no top-level currency field.
Positive USD decimal; up to 2 decimals for fiat / fiat-to-crypto, up to 8 for crypto-funded payouts.
Required for fiat and fiat-to-crypto payouts; optional for crypto-funded payouts using mode: "CRYPTO".
Optional. CRYPTO sources the deposit address from the virtual account's inbound config without requiring recipient_id.
FIAT, CRYPTO Present marks a crypto-funded payout. tron does not support USDC.
Required for payouts unless nature_of_payment is first_party or your account is configured to not require documents. At most one invoice and one other. Omit the field entirely when sending no documents — an empty array is rejected.
1 - 2 elementsWhat the payout is for. For crypto-mode payouts, this drives the supporting_documents requirement: first_party is exempt, every other value requires a document unless your account is configured to not require them. Fiat-mode payouts do not enforce this requirement at the API layer. Persisted and echoed back on the payout detail under extra_info. Values: vendor = payment to a supplier/vendor for goods or services; pobo = payment on behalf of a third party; first_party = a transfer between accounts under the SAME legal name/owner (doc-exempt for crypto-mode payouts); spot_3p = third-party spot payment; spot_1p = first-party spot payment; related_entities = payment between entities in the same corporate group; other = any reason not covered above.
vendor, pobo, first_party, spot_3p, spot_1p, related_entities, other UUID of a quote reserved via the preview.
Your own reference, surfaced back unchanged on the payout detail.
Your own key/value object.
Response
Created. Returns the payout with status created (lowercase).
For crypto-funded payouts the response includes deposit_instructions with a single-use deposit address; send the stablecoins there.
Always USD.
"USD"
created (lowercase).
"created"
Present only for crypto-funded payouts.