Skip to main content
POST

Authorizations

Authorization
string
header
required

The data.access_token value from Get access token.

x-api-key
string
header
required

API key issued by Kira.

Headers

X-Api-Version
string

Version applied to this request. It wins over your account's pinned version — see Versioning.

Example:

"2026-04-14"

Idempotency-Key
string<uuid>
required

A UUID you generate for this call. Retrying with the same key returns the first payout instead of sending a second one; reusing it with a different body is rejected with a 409.

Example:

"3fa85f64-5717-4562-b3fc-2c963f66afa6"

Path Parameters

virtual_account_id
string<uuid>
required

The account the money leaves from.

Body

application/json
amount
string
required

How much to send in USD, as a positive decimal string with up to 8 decimals. With inverse_calculation this is what the recipient should end up with instead.

mode
enum<string>

Where the money comes from. FIAT spends the account's balance and requires recipient_id; CRYPTO funds the payout from a deposit you make. When you omit it, sending payment_instructions means CRYPTO.

Available options:
FIAT,
CRYPTO
recipient_id
string<uuid>

Who gets paid. Required on a FIAT payout. Where the rail accepts only Latin characters, creating the payout rejects a recipient name or address field written entirely in another script with a 400 naming the field (for example address.street_name); accented characters pass (José becomes Jose).

quote_id
string<uuid>

A quote_id from a preview. Sending it settles at exactly the amounts, fees and rate you were quoted.

inverse_calculation
boolean

Work backwards: treat amount as what the recipient receives and work out what leaves the account. false when you omit it.

client_markup
object

Your own fees for this one payout, replacing whatever is configured on your account. fixed_fee and percentage_fee are both required once you send the object.

payment_instructions
object

The token and chain you will deposit to fund the payout. Sending this makes it crypto-funded, and the address to deposit to comes back on the response.

nature_of_payment
enum<string>

What the payout is for. It decides whether a supporting document is required — see Payout values.

Available options:
vendor,
pobo,
first_party,
spot_3p,
spot_1p,
related_entities,
other
supporting_documents
object[]

Proof of what the payout is for. One or two files, at most one of each type. A crypto payout needs one unless nature_of_payment is first_party.

Required array length: 1 - 2 elements
reference
string

Your own reference for the payout. It comes back unchanged on a read. A few prefixes are reserved and rejected.

extra_info
object

Your own notes on the payout. They come back on a read.

metadata
object

Your own key/value pairs, returned unchanged. Up to 50 keys. A key is 1 to 40 characters and cannot contain [ or ]; a value is up to 500 characters.

Set at creation only — a payout cannot be changed afterwards.

Response

Success.

Every amount is a decimal string.

id
string<uuid>

Payout UUID. Use it to read the payout later.

virtual_account_id
string<uuid>

The account the money leaves from.

recipient_id
string<uuid>

Who gets paid.

status
string

Where the payout has got to — see Payout values.

amount
string

What leaves the account.

currency
string

Currency of amount. Always USD.

fees
object

What comes off the amount before the recipient is paid.

recipient_amount
string

What the recipient ends up with.

recipient_currency
string

Currency of recipient_amount.

payment_instructions
object

The funding token and chain, echoed back. Only on a crypto-funded payout.

deposit_instructions
object

Where to deposit to fund the payout, on a crypto-funded one. Nothing moves until that deposit arrives.

quote_id
string<uuid>

The quote you redeemed, when you sent one.

quote_expires_at
string

When that quote stops holding, as an ISO 8601 timestamp.

created_at
string

When the payout was created, as an ISO 8601 timestamp.

metadata
object

The key/value pairs you sent, returned unchanged. {} when you sent none.