Create an off-ramp order
curl --request POST \
--url https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 100,
"asset": "usdc",
"network": "base",
"currency": "NGN",
"country": "NG",
"channel": "BANK",
"reference": "ramp_902",
"callback_url": "https://app.example.com/hooks/flipeet",
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 100,
asset: 'usdc',
network: 'base',
currency: 'NGN',
country: 'NG',
channel: 'BANK',
reference: 'ramp_902',
callback_url: 'https://app.example.com/hooks/flipeet',
beneficiary: {
holder_type: 'INDIVIDUAL',
holder_name: 'Chidi Okafor',
account_number: '0123456789',
bank_code: '044'
}
})
};
fetch('https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize"
payload = {
"amount": 100,
"asset": "usdc",
"network": "base",
"currency": "NGN",
"country": "NG",
"channel": "BANK",
"reference": "ramp_902",
"callback_url": "https://app.example.com/hooks/flipeet",
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"message": "Successfully",
"status": "success",
"statusCode": 201,
"data": {
"success": true,
"message": "Offramp initiated",
"livemode": true,
"data": {
"reference": "ramp_902",
"status": "AWAITING_DEPOSIT",
"rate": 1500,
"source": {
"amount": 100,
"currency": "usdc"
},
"destination": {
"amount": 149250,
"currency": "NGN"
},
"deposit": {
"address": "0x91c4d2E6f8A0b2C4d6E8f0A2b4C6d8E0f2A4b6C8",
"amount": 100,
"asset": "base:usdc"
},
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
}
}{
"message": "Amount must be a positive number",
"status": "error",
"statusCode": 400,
"code": "invalid_request",
"details": {
"errors": [
"Amount must be a positive number"
]
},
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Invalid or inactive API key",
"status": "error",
"statusCode": 401,
"code": "authentication_failed",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Reference payout_5510 already exists",
"status": "error",
"statusCode": 409,
"code": "conflict",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Too many requests. Slow down and try again shortly.",
"status": "error",
"statusCode": 429,
"code": "rate_limited",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Internal server error",
"status": "error",
"statusCode": 500,
"code": "internal_error",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "The payment partner could not complete the request",
"status": "error",
"statusCode": 502,
"code": "provider_error",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}Ramps
Create an off-ramp order
Your customer sends stablecoin and the local currency is paid to the bank account in beneficiary. The response’s data.deposit has the address to send to and the exact amount. Every status change is sent to callback_url.
POST
/
api
/
v1
/
public
/
off-ramp
/
initialize
Create an off-ramp order
curl --request POST \
--url https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 100,
"asset": "usdc",
"network": "base",
"currency": "NGN",
"country": "NG",
"channel": "BANK",
"reference": "ramp_902",
"callback_url": "https://app.example.com/hooks/flipeet",
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 100,
asset: 'usdc',
network: 'base',
currency: 'NGN',
country: 'NG',
channel: 'BANK',
reference: 'ramp_902',
callback_url: 'https://app.example.com/hooks/flipeet',
beneficiary: {
holder_type: 'INDIVIDUAL',
holder_name: 'Chidi Okafor',
account_number: '0123456789',
bank_code: '044'
}
})
};
fetch('https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pay.flipeet.io/api/v1/public/off-ramp/initialize"
payload = {
"amount": 100,
"asset": "usdc",
"network": "base",
"currency": "NGN",
"country": "NG",
"channel": "BANK",
"reference": "ramp_902",
"callback_url": "https://app.example.com/hooks/flipeet",
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"message": "Successfully",
"status": "success",
"statusCode": 201,
"data": {
"success": true,
"message": "Offramp initiated",
"livemode": true,
"data": {
"reference": "ramp_902",
"status": "AWAITING_DEPOSIT",
"rate": 1500,
"source": {
"amount": 100,
"currency": "usdc"
},
"destination": {
"amount": 149250,
"currency": "NGN"
},
"deposit": {
"address": "0x91c4d2E6f8A0b2C4d6E8f0A2b4C6d8E0f2A4b6C8",
"amount": 100,
"asset": "base:usdc"
},
"beneficiary": {
"holder_type": "INDIVIDUAL",
"holder_name": "Chidi Okafor",
"account_number": "0123456789",
"bank_code": "044"
}
}
}
}{
"message": "Amount must be a positive number",
"status": "error",
"statusCode": 400,
"code": "invalid_request",
"details": {
"errors": [
"Amount must be a positive number"
]
},
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Invalid or inactive API key",
"status": "error",
"statusCode": 401,
"code": "authentication_failed",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Reference payout_5510 already exists",
"status": "error",
"statusCode": 409,
"code": "conflict",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Too many requests. Slow down and try again shortly.",
"status": "error",
"statusCode": 429,
"code": "rate_limited",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "Internal server error",
"status": "error",
"statusCode": 500,
"code": "internal_error",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}{
"message": "The payment partner could not complete the request",
"status": "error",
"statusCode": 502,
"code": "provider_error",
"details": null,
"requestId": "req_5f0c2a9b8d7e4c1f9a3b6d2e1c0f7a8b",
"timestamp": "2026-11-04T10:00:00.000Z"
}Authorizations
Body
application/json
