Skip to main content
Off-Ramp lets your users sell crypto and receive fiat in a bank account. There are two ways to run an off-ramp, and you can use either (or both) depending on your product. For request and response details, follow the endpoint link in each step.
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.

Two ways to run an off-ramp

Off-Ramp orderOff-Ramp session
What it isA single withdrawal tied to one quote (locked rate).A reusable setup tied to the customer’s destination account.
How orders are createdYou create the order explicitly.Orders are created automatically each time the customer sends crypto to the session’s deposit address.
RateThe quote you pass.A fresh quote is generated automatically for each deposit.
Best forOne-off withdrawals.Recurring withdrawals to the same account without recreating an order each time.
Both share the same setup (customer, KYC, and a validated payout account).

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 Token
2

Create the customer

Register the end user and keep the returned customerId.Create Customer
3

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, or a PSE/BRE-B account in Colombia. First fetch the required fields, then create the account and confirm it.Validation may be synchronous (usable right away) or asynchronous (it starts in PROCESSING and becomes usable once validation returns). It must be ENABLED before it can receive a payout. Keep its fiatAccountId — both flows need it.Retrieve Fiat Account Requirements · Create Fiat Account · Confirm Fiat Account

Option 1 — Single off-ramp order

1

Create a quote

Request an off-ramp quote (crypto → fiat). The quote holds a price for a limited time and returns a quoteId.Create Quote
2

Create the off-ramp order

Create the order with the quoteId, the customerId, the destination fiatAccountId and a partner externalRef. The response includes the crypto deposit address the customer must send funds to.Create Off-Ramp Order
3

User sends crypto and the order completes

The customer sends the crypto to the returned deposit address. Once the deposit is confirmed, the trade executes and Ripio pays out the fiat to the registered account — the order moves to COMPLETED.Track it with Off-Ramp Events (recommended) or by polling List Off-Ramp Orders.

Option 2 — 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 Session
2

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

StatusMeaning
PENDINGOrder created, waiting for the crypto deposit.
PROCESSINGDeposit detected, trade and payout in progress.
COMPLETEDFiat paid out to the destination account.
CANCELLEDSomething went wrong with the order and it needs review. It can be resolved through customer support (CX).
REFUNDEDThe amount was refunded to the customer.

Payout account states

StateMeaning
PROCESSINGValidation/registration in progress (async providers).
UNCONFIRMEDValidated, waiting for confirmation.
ENABLEDConfirmed and ready to receive payouts.
DISABLEDValidation failed permanently.