Available payout methods depend on the country. See Countries & payment methods first. In Colombia, Request-to-Pay (R2P) is On-Ramp only and cannot be used for payouts.
Common setup
1
Authenticate
Get an access token with the OAuth2 Client Credentials flow and send it as a
Bearer token on every call.→ Acquire Access Token2
Create the customer
Register the end user and keep the returned
customerId.→ Create Customer3
Accept Terms & Conditions
Right after creating the customer, register their acceptance of the active Terms & Conditions. This is a required step before the customer can operate.→ Terms & Conditions · Accept Terms
4
Verify identity (KYC)
The customer must reach KYC status
COMPLETED before operating.→ Identity verification (KYC)5
Register and confirm the payout account
Register the user’s destination bank account (their external fiat account) — for example a CBU/CVU/alias in Argentina, a CLABE in Mexico, a PSE/BRE-B account in Colombia, or a PIX key in Brazil. First fetch the required fields, then create the account and confirm it.Validation may be synchronous (usable right away) or asynchronous (it starts in → Retrieve Fiat Account Requirements · Create Fiat Account · Confirm Fiat Account · Create Deposit Account
processing and becomes usable once validation returns). It must be enabled before it can receive a payout. Keep its fiatAccountId — the session needs it.In some countries the payout account is registered against the customer’s deposit account, which then becomes a prerequisite. This is the case in Brazil (PIX): you must create the deposit account first and wait until it is
enabled, otherwise registering the payout account returns HTTP 400. See Brazil (PIX).Set up the off-ramp session
1
Create the off-ramp session
Create a session with the destination
fiatAccountId. The response includes the crypto deposit addresses (one per supported network). The session is reusable and does not expire.→ Create Off-Ramp Session2
User sends crypto — orders are created automatically
Each time the customer sends crypto to a session deposit address, an off-ramp order is created automatically, a fresh quote is applied, the trade executes and the fiat is paid out. No per-deposit API call is needed.Track each order with Off-Ramp Events or by inspecting the session’s transactions via Retrieve an Off-Ramp Session.
Order lifecycle
Payout account states
Only one account can be active per payment method at a time. See Fiat account lifecycle for the full state model and how to reactivate a suspended account.