Get On-ramp Status
curl --request GET \
--url https://secureapi.tender.cash/v1/api/onramp/{reference} \
--header 'authorization: <api-key>' \
--header 'x-access-id: <x-access-id>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-timestamp: <x-timestamp>'const options = {
method: 'GET',
headers: {
authorization: '<api-key>',
'x-timestamp': '<x-timestamp>',
'x-request-id': '<x-request-id>',
'x-access-id': '<x-access-id>'
}
};
fetch('https://secureapi.tender.cash/v1/api/onramp/{reference}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://secureapi.tender.cash/v1/api/onramp/{reference}"
headers = {
"authorization": "<api-key>",
"x-timestamp": "<x-timestamp>",
"x-request-id": "<x-request-id>",
"x-access-id": "<x-access-id>"
}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://secureapi.tender.cash/v1/api/onramp/{reference}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <api-key>",
"x-access-id: <x-access-id>",
"x-request-id: <x-request-id>",
"x-timestamp: <x-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "success",
"message": "success",
"data": {
"reference": "a3f1c2d4-8e7b-4f0a-9c1d-2e3f4a5b6c7d",
"status": "processing",
"targetChain": "tron",
"targetAddress": "TRDFGhjkytywooiueonuoo",
"targetCurrency": "USDT",
"fiatCurrency": "NGN",
"fiatAmount": "50000",
"amountReceived": "50000",
"cryptoAmountOut": "29.87",
"virtualAccount": {
"accountNumber": "0123456789",
"accountName": "Tender / Ada Obi",
"bankName": "Wema Bank",
"expiresAt": "2025-06-09T11:00:00.000Z"
},
"stages": {
"payment": {
"status": "completed",
"attempts": 1
},
"payout": {
"status": "completed",
"attempts": 1
},
"swap": {
"status": "in_progress",
"attempts": 1
},
"swapWithdraw": {
"status": "skipped",
"attempts": 0
},
"cryptoSend": {
"status": "pending",
"attempts": 0
}
},
"createdAt": "2025-06-09T10:00:00.000Z",
"updatedAt": "2025-06-09T10:04:00.000Z"
}
}On-ramp
Get On-ramp Status
Retrieve the current status and stage progress of an on-ramp request
GET
/
v1
/
api
/
onramp
/
{reference}
Get On-ramp Status
curl --request GET \
--url https://secureapi.tender.cash/v1/api/onramp/{reference} \
--header 'authorization: <api-key>' \
--header 'x-access-id: <x-access-id>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-timestamp: <x-timestamp>'const options = {
method: 'GET',
headers: {
authorization: '<api-key>',
'x-timestamp': '<x-timestamp>',
'x-request-id': '<x-request-id>',
'x-access-id': '<x-access-id>'
}
};
fetch('https://secureapi.tender.cash/v1/api/onramp/{reference}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://secureapi.tender.cash/v1/api/onramp/{reference}"
headers = {
"authorization": "<api-key>",
"x-timestamp": "<x-timestamp>",
"x-request-id": "<x-request-id>",
"x-access-id": "<x-access-id>"
}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://secureapi.tender.cash/v1/api/onramp/{reference}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <api-key>",
"x-access-id: <x-access-id>",
"x-request-id: <x-request-id>",
"x-timestamp: <x-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "success",
"message": "success",
"data": {
"reference": "a3f1c2d4-8e7b-4f0a-9c1d-2e3f4a5b6c7d",
"status": "processing",
"targetChain": "tron",
"targetAddress": "TRDFGhjkytywooiueonuoo",
"targetCurrency": "USDT",
"fiatCurrency": "NGN",
"fiatAmount": "50000",
"amountReceived": "50000",
"cryptoAmountOut": "29.87",
"virtualAccount": {
"accountNumber": "0123456789",
"accountName": "Tender / Ada Obi",
"bankName": "Wema Bank",
"expiresAt": "2025-06-09T11:00:00.000Z"
},
"stages": {
"payment": {
"status": "completed",
"attempts": 1
},
"payout": {
"status": "completed",
"attempts": 1
},
"swap": {
"status": "in_progress",
"attempts": 1
},
"swapWithdraw": {
"status": "skipped",
"attempts": 0
},
"cryptoSend": {
"status": "pending",
"attempts": 0
}
},
"createdAt": "2025-06-09T10:00:00.000Z",
"updatedAt": "2025-06-09T10:04:00.000Z"
}
}Auth method: Signed (HMAC) — this endpoint requires the full set of signed
headers:
x-access-id, x-request-id, x-timestamp, and an HMAC-SHA256
authorization signature. See Authentication.Overview
Returns the full on-ramp record for a givenreference. Poll this endpoint after initiating an
on-ramp to track which stage the pipeline is on.
Status values
| Status | Meaning |
|---|---|
pending_payment | Waiting for the customer’s fiat bank transfer |
processing | Payment confirmed; pipeline is running |
crypto_sent | Crypto dispatched to targetAddress |
completed | Fully settled |
failed | Terminal failure — see failureReason and stages[*].lastError |
Stage pipeline
Each on-ramp progresses through the following stages in order:| Stage | Description |
|---|---|
payment | Fiat payment confirmed by the provider |
payout | Fiat forwarded to JuicyWay for conversion |
swap | JuicyWay swaps fiat → intermediate crypto (e.g. USDT on Tron) |
swapWithdraw | Swapped crypto withdrawn from JuicyWay to merchant swap wallet (skipped by default) |
cryptoSend | Crypto sent from swap wallet to targetAddress (direct or via NEAR Intents bridge) |
status: pending · in_progress · completed · failed · skipped.
Headers
string
required
Base64-encoded HMAC-SHA256 signature using your API secretExample:
"5e73d044c44d733fcf819ad3409aaa..."string
required
Example:
"2025-03-15T09:45:53.000Z"string
required
Example:
"550e8400-e29b-41d4-a716-446655440000"string
required
Example:
"your-access-id-here"Path Parameters
string
required
The
reference returned by Initiate On-rampExample: "a3f1c2d4-8e7b-4f0a-9c1d-2e3f4a5b6c7d"Response
string
required
Example:
"success"string
required
Example:
"success"object
required
Show data properties
Show data properties
string
Example:
"a3f1c2d4-8e7b-4f0a-9c1d-2e3f4a5b6c7d"string
The quote ID that was used to initiate this requestExample:
"b7f2a1c3-9d4e-4b2f-a8c0-1e2d3f4a5b6c"string
Overall pipeline statusExample:
"processing"string
Example:
"tron"string
Example:
"TRDFGhjkytywooiueonuoo"string
Example:
"USDT"string
Example:
"NGN"string
Example:
"50000"string
Fiat amount confirmed by the payment providerExample:
"50000"string
Amount of
targetCurrency credited after the swapExample: "29.87"object
object
Per-stage progress. Each stage has the same shape.
Show stages properties
Show stages properties
object
Show stage shape
Show stage shape
string
pending · in_progress · completed · failed · skippednumber
Example:
1string
Example:
"2025-06-09T10:01:00.000Z"string
Example:
"2025-06-09T10:02:30.000Z"string
Set only when status is
failedstring
Error message from the last failed attempt
object
Stage-specific data (e.g.
swapId, withdrawId, txRef)object
Same shape as
paymentobject
Same shape as
paymentobject
Same shape as
payment. Status is skipped by default.object
Same shape as
paymentstring
Human-readable reason for terminal failure. Present only when
status is failed.Example: "Swap wallet balance too low: 12 USDT < minimum 100"string
Example:
"2025-06-09T10:00:00.000Z"string
Example:
"2025-06-09T10:05:00.000Z"Authorizations
Signed (HMAC) authentication. Required headers: x-access-id, x-request-id (UUID v4), x-timestamp (ISO 8601), and authorization (Base64 HMAC-SHA256 signature of {timeStamp, requestId, accessId} using your access secret).
Headers
Path Parameters
The reference returned by Initiate On-ramp