How a payout works
1
You request the payout
POST /v1/payouts with the destination and the amount the beneficiary
receives. The payout is created with status CREATED.2
We issue a payment instruction
Within seconds we lock an FX rate and return a payment instruction — a crypto
address or a virtual account number, plus the exact amount to send and an
expiry. The payout moves to
PENDING_PAYMENT.3
You settle
Send the expected amount to the account in the instruction. When it arrives
and confirms, the payout moves to
PAYMENT_RECEIVED.Miss the expiry and the payout ends at EXPIRED — a terminal status. Create a
new payout to try again.4
We pay the beneficiary
We dispatch to the local processor (
PROCESSING) and the payout settles at
SUCCESSFUL or FAILED. If it fails after your money arrived, we return the
settlement to a destination you registered up front.status_timeline.
Start here
Get access
How to get a tenant, complete KYB, and receive your API key.
Quickstart
A live payout end to end, including the two prerequisites people miss.
Corridors
What you can settle in, and where the money can land.
Payout lifecycle
The seven statuses and what drives each transition.
Two things to set up before your first payout
A refund destination
Because we hold no balance for you, a payout that fails after you have paid
needs somewhere to send the money back. Register that destination first or
payout creation returns
422 REFUND_DESTINATION_REQUIRED.Approved KYB
Your compliance profile must be
APPROVED. Until then payout creation
returns 403 COMPLIANCE_NOT_APPROVED.Conventions
Every field in every request and response issnake_case — we never transform
casing, so what you send is what we store and what you read back.
Timestamps are ISO-8601 in UTC: 2026-08-16T14:30:00.000Z.
Every amount travels with its currency. destination_amount is meaningless
without destination_currency, and a single payout legitimately spans three
currencies at once — the beneficiary’s, yours, and the one the fees are charged
in. Field pairs share a prefix, so platform_fee_amount is always denominated in
platform_fee_currency.