curl --request POST \
--url https://skala-sandbox.ripio.com/api/v1/offramp/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "b6cecc1f-c90d-424b-adaa-c82b780696c1",
"quoteId": "8142b065-79c4-4f48-9e33-11b17bc658d4",
"fiatAccountId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"externalRef": "e6c4f1ec-899f-43b5-8479-c2529e3f9c70",
"refundAddress": "0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32",
"metadata": {}
}
'import requests
url = "https://skala-sandbox.ripio.com/api/v1/offramp/"
payload = {
"customerId": "b6cecc1f-c90d-424b-adaa-c82b780696c1",
"quoteId": "8142b065-79c4-4f48-9e33-11b17bc658d4",
"fiatAccountId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"externalRef": "e6c4f1ec-899f-43b5-8479-c2529e3f9c70",
"refundAddress": "0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32",
"metadata": {}
}
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: 'b6cecc1f-c90d-424b-adaa-c82b780696c1',
quoteId: '8142b065-79c4-4f48-9e33-11b17bc658d4',
fiatAccountId: 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
externalRef: 'e6c4f1ec-899f-43b5-8479-c2529e3f9c70',
refundAddress: '0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32',
metadata: {}
})
};
fetch('https://skala-sandbox.ripio.com/api/v1/offramp/', 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/offramp/",
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' => 'b6cecc1f-c90d-424b-adaa-c82b780696c1',
'quoteId' => '8142b065-79c4-4f48-9e33-11b17bc658d4',
'fiatAccountId' => 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
'externalRef' => 'e6c4f1ec-899f-43b5-8479-c2529e3f9c70',
'refundAddress' => '0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32',
'metadata' => [
]
]),
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/offramp/"
payload := strings.NewReader("{\n \"customerId\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\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/offramp/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://skala-sandbox.ripio.com/api/v1/offramp/")
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\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"depositAddress": {
"chain": "ETHEREUM",
"address": "0x1234567890AbCdEf1234567890AbCdEf1234567890"
},
"refundAddress": "<string>"
}Create Off-Ramp Order
Initiates a single crypto-to-fiat off-ramp transaction based on a previously obtained quote and the customer’s destination fiat account. Returns the transaction id and the crypto deposit address the customer must send funds to. The order executes automatically once the crypto deposit is confirmed. Use this for one-off withdrawals; to reuse a destination account across many spontaneous deposits, create an Off-Ramp Session instead.
curl --request POST \
--url https://skala-sandbox.ripio.com/api/v1/offramp/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "b6cecc1f-c90d-424b-adaa-c82b780696c1",
"quoteId": "8142b065-79c4-4f48-9e33-11b17bc658d4",
"fiatAccountId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"externalRef": "e6c4f1ec-899f-43b5-8479-c2529e3f9c70",
"refundAddress": "0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32",
"metadata": {}
}
'import requests
url = "https://skala-sandbox.ripio.com/api/v1/offramp/"
payload = {
"customerId": "b6cecc1f-c90d-424b-adaa-c82b780696c1",
"quoteId": "8142b065-79c4-4f48-9e33-11b17bc658d4",
"fiatAccountId": "fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1",
"externalRef": "e6c4f1ec-899f-43b5-8479-c2529e3f9c70",
"refundAddress": "0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32",
"metadata": {}
}
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: 'b6cecc1f-c90d-424b-adaa-c82b780696c1',
quoteId: '8142b065-79c4-4f48-9e33-11b17bc658d4',
fiatAccountId: 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
externalRef: 'e6c4f1ec-899f-43b5-8479-c2529e3f9c70',
refundAddress: '0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32',
metadata: {}
})
};
fetch('https://skala-sandbox.ripio.com/api/v1/offramp/', 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/offramp/",
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' => 'b6cecc1f-c90d-424b-adaa-c82b780696c1',
'quoteId' => '8142b065-79c4-4f48-9e33-11b17bc658d4',
'fiatAccountId' => 'fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1',
'externalRef' => 'e6c4f1ec-899f-43b5-8479-c2529e3f9c70',
'refundAddress' => '0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32',
'metadata' => [
]
]),
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/offramp/"
payload := strings.NewReader("{\n \"customerId\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\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/offramp/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://skala-sandbox.ripio.com/api/v1/offramp/")
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\": \"b6cecc1f-c90d-424b-adaa-c82b780696c1\",\n \"quoteId\": \"8142b065-79c4-4f48-9e33-11b17bc658d4\",\n \"fiatAccountId\": \"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1\",\n \"externalRef\": \"e6c4f1ec-899f-43b5-8479-c2529e3f9c70\",\n \"refundAddress\": \"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"depositAddress": {
"chain": "ETHEREUM",
"address": "0x1234567890AbCdEf1234567890AbCdEf1234567890"
},
"refundAddress": "<string>"
}Authorizations
Access token obtained via /oauth2/token/. Use as Authorization: Bearer <access_token>.
Body
Details for creating an off-ramp order.
Unique identifier for the customer.
"b6cecc1f-c90d-424b-adaa-c82b780696c1"
Unique identifier for the off-ramp quote obtained from the Quoting Endpoint.
"8142b065-79c4-4f48-9e33-11b17bc658d4"
Unique identifier for the customer's destination fiat account (the external fiat account that will receive the payout). It must be ENABLED.
"fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1"
Unique identifier for the order that is being created, provided by the partner. Used for idempotency.
"e6c4f1ec-899f-43b5-8479-c2529e3f9c70"
On-chain address to return the crypto to if the order fails. Required only when the account is configured to refund to an explicit address (not to the on-chain origin).
"0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32"
Optional partner-defined metadata to attach to the order.
Response
Off-Ramp order created successfully.
Unique identifier for the created off-ramp order.
Date and time the off-ramp order was created.
The crypto deposit address the customer must send funds to. Once the deposit is confirmed, the order executes automatically.
Show child attributes
Show child attributes
The effective on-chain refund address for this order, if any.
Was this page helpful?