curl --request GET \
--url "https://api.stablepay.co/api/v1/quote/{quote_id}" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>"
const response = await fetch("https://api.stablepay.co/api/v1/quote/{quote_id}", {
method: "GET",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>"
}
});
console.log(await response.json());
{
"quote_id": "9000000017",
"quote_type": "on_ramp",
"source_currency": "USD",
"target_currency": "USDC",
"source_amount": 100500,
"target_amount": 100479,
"rate": "0.9998",
"fee_amount": 5,
"fee_currency": "USD",
"expires_at": 1718730000,
"status": "open",
"created": 1718726400
}
Stablecoin Exchange API
Retrieve a quote
Retrieve a quote
GET
/
api
/
v1
/
quote
/
{quote_id}
curl --request GET \
--url "https://api.stablepay.co/api/v1/quote/{quote_id}" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>"
const response = await fetch("https://api.stablepay.co/api/v1/quote/{quote_id}", {
method: "GET",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>"
}
});
console.log(await response.json());
{
"quote_id": "9000000017",
"quote_type": "on_ramp",
"source_currency": "USD",
"target_currency": "USDC",
"source_amount": 100500,
"target_amount": 100479,
"rate": "0.9998",
"fee_amount": 5,
"fee_currency": "USD",
"expires_at": 1718730000,
"status": "open",
"created": 1718726400
}
See authentication, signing, data conventions, and errors. Regenerate the timestamp, nonce, and signature on every retry.
GET /quote/{quote_id} Returns a quote by ID; use status to decide whether it is usable.
Request headers
string
required
Bearer API Key.
string
required
Unix seconds, within five minutes of server time.
string
required
Unique per request, 16–64 characters.
string
required
Lowercase hexadecimal HMAC-SHA256 signature for the exact request body.
Request parameters
string
required
Quote ID, 10 digits
string
10 digits; omit for merchant apps, required for service-provider apps
Response
string
required
Quote ID, 10 digits
string
required
on_ramp, off_ramp, swapstring
required
Sell currency
string
required
Buy currency
integer
required
Sell amount, smallest unit
integer
required
Buy amount
string
required
Locked rate, decimal string
integer
required
Fee in source currency
string
required
Fee currency
integer
required
Expiry time
string
required
open, used, expired
object
Custom metadata
integer
required
Creation time
Status and errors
404 when missing or owned by another merchant.curl --request GET \
--url "https://api.stablepay.co/api/v1/quote/{quote_id}" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>"
const response = await fetch("https://api.stablepay.co/api/v1/quote/{quote_id}", {
method: "GET",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>"
}
});
console.log(await response.json());
{
"quote_id": "9000000017",
"quote_type": "on_ramp",
"source_currency": "USD",
"target_currency": "USDC",
"source_amount": 100500,
"target_amount": 100479,
"rate": "0.9998",
"fee_amount": 5,
"fee_currency": "USD",
"expires_at": 1718730000,
"status": "open",
"created": 1718726400
}
Last modified on October 29, 2026
Was this page helpful?
