Preview a payout
Preview the fees and recipient amount for a payout before executing it. No payout record, deposit wallet, or transfer is created.
Identify the destination with exactly one of:
recipient_id— a saved recipient (WIRE,ACH, orWALLET).account_type— the rail (WIRE|ACH|WALLET) to estimate fees without a saved recipient. Whenaccount_typeisWALLETand norecipient_idis given,wallet_networkandwallet_tokenare also required.
The mode is auto-detected from the request and the virtual account:
- Fiat-to-bank — fiat virtual account paying a
WIRE/ACHrecipient; omitpayment_instructions. - Crypto-to-bank — supply
payment_instructions; you fund the payout by sending stablecoins to a deposit address. - Fiat-to-crypto — fiat virtual account paying a
WALLETrecipient; the recipient receives stablecoins andrecipient_currencyisUSDCorUSDT.
Set create_quote: true to also reserve a quote; the response then includes quote_id and quote_expires_at, which you can redeem on POST /v1/virtual-accounts/{virtual_account_id}/payout to lock in the previewed amount, fees, and rate. Only US_BANK virtual accounts that have reached the active state support payouts — 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).
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"
Path Parameters
Virtual account UUID.
Body
PayoutPreviewRequest. Either recipient_id or account_type is required. There is no top-level currency field — payouts are always priced in USD.
Positive USD decimal amount; up to 2 decimals for fiat / fiat-to-crypto, up to 8 for crypto-funded previews.
UUID of a saved recipient. Provide this or account_type.
Rail to estimate fees without a saved recipient. Provide this instead of recipient_id.
WIRE, ACH, WALLET Required when account_type is WALLET without recipient_id.
solana, polygon, tron Required with wallet_network. Note tron does not support USDC.
USDC, USDT When true, treat amount as the recipient amount and solve for the source amount.
Supply to preview a crypto-funded payout.
Override your default markup.
When true, the preview also reserves a quote; the response includes quote_id and quote_expires_at.
Response
Payout preview.
PayoutPreview. The quote_id and quote_expires_at fields are present only when the request set create_quote: true; pass that quote_id to POST /v1/virtual-accounts/{virtual_account_id}/payout to execute at the exact previewed amount, fees, and FX rate. The quote must belong to the same client and must not be expired or already used. The default quote lifespan is 15 minutes.
Source amount, USD, 2 decimals.
Always USD.
"USD"
The fee breakdown — see the known-limitations guide: fees.total and fees.total_fees are identical.
Amount after fees — USD with 2 decimals for bank rails; the stablecoin amount with up to 6 decimals for fiat-to-crypto.
USD for bank rails; USDC/USDT for fiat-to-crypto.
Echoed back only when the request supplied it.
Present only when the request set create_quote: true. Redeem on POST /v1/virtual-accounts/{virtual_account_id}/payout.
Present only when the request set create_quote: true. ISO-8601; default quote lifespan is 15 minutes.