curl --request POST \
--url https://skala-sandbox.ripio.com/api/v1/onrampSession/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"paymentMethodType": "bank_transfer",
"chain": "ETHEREUM_SEPOLIA",
"currency": "RTEST",
"depositAddress": "0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e"
}
'import requests
url = "https://skala-sandbox.ripio.com/api/v1/onrampSession/"
payload = {
"customerId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"paymentMethodType": "bank_transfer",
"chain": "ETHEREUM_SEPOLIA",
"currency": "RTEST",
"depositAddress": "0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
paymentMethodType: 'bank_transfer',
chain: 'ETHEREUM_SEPOLIA',
currency: 'RTEST',
depositAddress: '0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e'
})
};
fetch('https://skala-sandbox.ripio.com/api/v1/onrampSession/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://skala-sandbox.ripio.com/api/v1/onrampSession/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
'paymentMethodType' => 'bank_transfer',
'chain' => 'ETHEREUM_SEPOLIA',
'currency' => 'RTEST',
'depositAddress' => '0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://skala-sandbox.ripio.com/api/v1/onrampSession/"
payload := strings.NewReader("{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://skala-sandbox.ripio.com/api/v1/onrampSession/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://skala-sandbox.ripio.com/api/v1/onrampSession/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}"
response = http.request(request)
puts response.read_body{
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"currency": "<string>",
"chain": "<string>",
"depositAddress": "<string>",
"fiatPaymentInstructions": {
"cvu": "0000465160000000070078",
"alias": "juan.perez.ramp",
"status": "enabled"
},
"transactions": [
{
"transactionId": "21d8a046-3221-4b43-a301-0f9adcdd9a45",
"createdAt": "2023-11-07T05:31:56Z",
"customerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"quoteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromCurrency": "ARS",
"toCurrency": "USDC",
"amount": "<string>",
"chain": "ETHEREUM_SEPOLIA",
"paymentMethodType": "bank_transfer",
"depositAddress": "<string>",
"source": "ON_RAMP",
"metadata": {},
"txnHash": null,
"sender": "Juan Pérez",
"status": "COMPLETED",
"refundable": false,
"refundDestinationRequired": false,
"latestRefund": {
"refundId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PENDING",
"rejectionReason": "",
"initiatedBy": "PARTNER",
"requestedAt": "2023-11-07T05:31:56Z"
}
}
]
}{
"code": 123,
"type": "<string>",
"detail": {
"message": "<string>"
},
"status": 123
}{
"code": 40001,
"type": "NotAuthenticated",
"detail": {
"message": "Authentication credentials were not provided.",
"code": "not_authenticated"
},
"status": 401
}{
"code": 40004,
"type": "NotFound",
"detail": {
"message": "Not found.",
"code": "not_found"
},
"status": 404
}Create On-Ramp Session
Initiates an on-ramp session for a customer, specifying payment method, chain, cryptocurrency, and deposit address. Returns session details and payment instructions.
curl --request POST \
--url https://skala-sandbox.ripio.com/api/v1/onrampSession/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"paymentMethodType": "bank_transfer",
"chain": "ETHEREUM_SEPOLIA",
"currency": "RTEST",
"depositAddress": "0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e"
}
'import requests
url = "https://skala-sandbox.ripio.com/api/v1/onrampSession/"
payload = {
"customerId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"paymentMethodType": "bank_transfer",
"chain": "ETHEREUM_SEPOLIA",
"currency": "RTEST",
"depositAddress": "0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
paymentMethodType: 'bank_transfer',
chain: 'ETHEREUM_SEPOLIA',
currency: 'RTEST',
depositAddress: '0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e'
})
};
fetch('https://skala-sandbox.ripio.com/api/v1/onrampSession/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://skala-sandbox.ripio.com/api/v1/onrampSession/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
'paymentMethodType' => 'bank_transfer',
'chain' => 'ETHEREUM_SEPOLIA',
'currency' => 'RTEST',
'depositAddress' => '0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://skala-sandbox.ripio.com/api/v1/onrampSession/"
payload := strings.NewReader("{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://skala-sandbox.ripio.com/api/v1/onrampSession/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://skala-sandbox.ripio.com/api/v1/onrampSession/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"paymentMethodType\": \"bank_transfer\",\n \"chain\": \"ETHEREUM_SEPOLIA\",\n \"currency\": \"RTEST\",\n \"depositAddress\": \"0x866B933Aabc4F9813405C6E393dbD4B600eF3E2e\"\n}"
response = http.request(request)
puts response.read_body{
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"currency": "<string>",
"chain": "<string>",
"depositAddress": "<string>",
"fiatPaymentInstructions": {
"cvu": "0000465160000000070078",
"alias": "juan.perez.ramp",
"status": "enabled"
},
"transactions": [
{
"transactionId": "21d8a046-3221-4b43-a301-0f9adcdd9a45",
"createdAt": "2023-11-07T05:31:56Z",
"customerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"quoteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromCurrency": "ARS",
"toCurrency": "USDC",
"amount": "<string>",
"chain": "ETHEREUM_SEPOLIA",
"paymentMethodType": "bank_transfer",
"depositAddress": "<string>",
"source": "ON_RAMP",
"metadata": {},
"txnHash": null,
"sender": "Juan Pérez",
"status": "COMPLETED",
"refundable": false,
"refundDestinationRequired": false,
"latestRefund": {
"refundId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PENDING",
"rejectionReason": "",
"initiatedBy": "PARTNER",
"requestedAt": "2023-11-07T05:31:56Z"
}
}
]
}{
"code": 123,
"type": "<string>",
"detail": {
"message": "<string>"
},
"status": 123
}{
"code": 40001,
"type": "NotAuthenticated",
"detail": {
"message": "Authentication credentials were not provided.",
"code": "not_authenticated"
},
"status": 401
}{
"code": 40004,
"type": "NotFound",
"detail": {
"message": "Not found.",
"code": "not_found"
},
"status": 404
}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
| Country | Available through a session | Not available — use Create On-Ramp Order |
|---|---|---|
| Argentina | bank_transfer (CVU) | mercadopago |
| Mexico | bank_transfer (CLABE) | — |
| Colombia | breb | bank_transfer (PSE), r2p_bancolombia, r2p_nequi |
| Brazil | — | pix — every on-ramp order carries its own BR Code, so there is no account to reuse |
Authorizations
Access token obtained via /oauth2/token/. Use as Authorization: Bearer <access_token>.
Body
Details for creating an on-ramp session.
Unique identifier for the customer.
"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1"
The payment method used for the fiat deposit (e.g., bank_transfer, breb). Note: breb is only available for Colombia.
"bank_transfer"
The blockchain network to be used for the conversion.
"ETHEREUM_SEPOLIA"
The target currency for the conversion.
"USDC"
The customer's deposit address on the chosen blockchain network.
"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32"
Response
On-Ramp session created successfully.
Unique identifier for the created on-ramp session.
Unique identifier for the customer associated with the session.
Date and time the on-ramp session was created.
The target crypto currency for every on-ramp transaction performed with the created session.
The blockchain network to be used for the conversion.
The customer's deposit address on the chosen blockchain network.
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.
{
"cvu": "0000465160000000070078",
"alias": "juan.perez.ramp",
"status": "enabled"
}
{
"cvu": "0000465160000000070078",
"status": "enabled"
}
{
"clabe": "706180196550550550",
"status": "enabled"
}
{
"brebKey": "@E6JZKEPG5S",
"status": "enabled"
}
A list containing every transaction that has been either started or completed through this session. On creation, will always be empty.
Show child attributes
Show child attributes
Was this page helpful?