Available payment methods depend on the country. See Countries & payment methods first.
Two ways to run an on-ramp
| On-Ramp order | On-Ramp session | |
|---|---|---|
| What it is | A single purchase tied to one quote (locked rate). | A reusable deposit account (e.g. a CVU/CLABE) tied to a destination crypto address. |
| How orders are created | You create the order explicitly. | Orders are created automatically each time the customer sends fiat to the session’s deposit account. |
| Rate | The quote you pass. | The market rate at the moment of each deposit. |
| Best for | One-off purchases with a confirmed amount. | Recurring top-ups where the customer sends fiat whenever they want. |
Common setup
Authenticate
Get an access token with the OAuth2 Client Credentials flow using your
client_id and client_secret. Send it as a Bearer token on every subsequent call.→ Acquire Access TokenCreate the customer
Register the end user as a customer. You’ll use the returned
customerId throughout the flow.→ Create CustomerAccept 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
Verify identity (KYC)
The customer must complete KYC before operating — the status must be
COMPLETED. Choose the model that fits your integration (Ripio-hosted redirect or partner-submitted via API), and reuse an existing Ripio KYC via OTP when possible.→ Identity verification (KYC)Provision the deposit account (when required)
Some countries and payment methods require the fiat deposit account to exist before operating (for example, a CLABE in Mexico). Create it and wait until it becomes
ENABLED — you’ll receive an ACCOUNT.ENABLED webhook when it’s ready. For methods that generate the deposit instructions on the fly, you can skip this step.→ Create Deposit Account · Account EventsOption 1 — Single on-ramp order
Create a quote
Request an on-ramp quote (fiat → crypto), specifying amount and payment method. The quote holds a price for a limited time and returns a
quoteId.→ Create QuoteCreate the on-ramp order
Create the order with the
quoteId, the customerId, the destination depositAddress (crypto) and a partner externalRef. The response includes the fiat payment instructions (for example, the CVU/CLABE to transfer to, or a payment link).→ Create On-Ramp OrderUser pays and the order completes
The customer pays the fiat amount using the returned instructions. Once the deposit is detected and the trade executes, the order moves to
COMPLETED and the crypto is sent to the destination address.Track it with On-Ramp Events (recommended) or by polling List On-Ramp Orders.Option 2 — On-ramp session
Create the on-ramp session
Create a session for the customer with the destination crypto address, network and currency. The response includes a reusable fiat deposit account (e.g. a CVU) and its payment instructions. If the customer already has a session, it is reused/updated. The session does not expire.→ Create On-Ramp Session
User deposits fiat — orders are created automatically
The customer can send fiat to the session’s deposit account as many times as they want. Each deposit automatically creates an on-ramp order, converts the funds at the current rate and sends the crypto to the destination address. No per-deposit API call is needed.Track each order with On-Ramp Events or by inspecting the session via Retrieve an On-Ramp Session.
Order lifecycle
| Status | Meaning |
|---|---|
PENDING | Order created, waiting for the fiat payment. |
PROCESSING | Payment detected, trade in progress. |
COMPLETED | Crypto delivered to the destination address. |
CANCELLED | Something went wrong with the order and it needs review. It can be resolved through customer support (CX). |
REFUNDED | The amount was refunded to the customer. |