Skip to main content
POST
Create On-Ramp Session
Sessions are not available for every payment method. A session reuses one persistent deposit account across many purchases, so it only works where such an account exists. Methods that generate a one-off payment request per purchase are rejected with 403 and error code 20016 (PaymentMethodNotAllowedForTransactionException). Check the country you are integrating in the table below before building on this endpoint — if you integrate Brazil, there is no session flow at all.

Availability by country

Each customer can only have one active on-ramp session at a time. If a session already exists for the customer, calling this endpoint will update it with the new parameters instead of creating a new one.

Authorizations

Authorization
string
header
required

Access token obtained via /oauth2/token/. Use as Authorization: Bearer <access_token>.

Body

application/json

Details for creating an on-ramp session.

customerId
string<uuid>
required

Unique identifier for the customer.

Example:

"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1"

paymentMethodType
string
required

The payment method used for the fiat deposit (e.g., bank_transfer, breb). Note: breb is only available for Colombia.

Example:

"bank_transfer"

chain
string
required

The blockchain network to be used for the conversion.

Example:

"ETHEREUM_SEPOLIA"

currency
string
required

The target currency for the conversion.

Example:

"USDC"

depositAddress
string
required

The customer's deposit address on the chosen blockchain network.

Example:

"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32"

Response

On-Ramp session created successfully.

sessionId
string<uuid>
required

Unique identifier for the created on-ramp session.

customerId
string<uuid>
required

Unique identifier for the customer associated with the session.

createdAt
string<date-time>
required

Date and time the on-ramp session was created.

currency
string
required

The target crypto currency for every on-ramp transaction performed with the created session.

chain
string
required

The blockchain network to be used for the conversion.

depositAddress
string
required

The customer's deposit address on the chosen blockchain network.

fiatPaymentInstructions
object
required

Instructions for the customer to complete the fiat deposit. Structure varies depending on payment method and currency: bank_transfer (Argentina) returns cvu and optionally alias (a human-readable identifier that can be used instead of the CVU for transfers — to enable alias customization, contact the Ripio team), bank_transfer (Mexico) returns clabe, breb (Colombia) returns brebKey. Methods backed by a persistent deposit account (cvu, clabe, brebKey) also include a status field (processing, enabled or disabled) indicating whether the deposit account is ready to operate; while processing, the deposit key/identifier may be null.

pix (Brazil) is not available through a session: its payable object is generated per order, so use Create On-Ramp Order instead.

Examples:
transactions
object[]

A list containing every transaction that has been either started or completed through this session. On creation, will always be empty.