Skip to main content

Public Endpoints

These endpoints are publicly accessible without authentication. Use them to display information in your UI before authentication.

Get Supported Fiat Currencies

Retrieve the list of fiat currencies supported for checkout payments.

GET /public/fiat-currencies

Response

{
"ok": true,
"data": [
{
"code": "USD",
"symbol": "$",
"name": "US Dollar",
"decimalPlaces": 2,
"coinGeckoId": "usd"
},
{
"code": "KRW",
"symbol": "W",
"name": "Korean Won",
"decimalPlaces": 0,
"coinGeckoId": "krw"
},
{
"code": "EUR",
"symbol": "E",
"name": "Euro",
"decimalPlaces": 2,
"coinGeckoId": "eur"
}
]
}

Fields

FieldTypeDescription
codestringISO 4217 currency code
symbolstringCurrency symbol
namestringFull currency name
decimalPlacesnumberStandard decimal places for display
coinGeckoIdstringCoinGecko API identifier

Get Exchange Rates

Retrieve current exchange rates for stablecoins.

GET /public/exchange-rates

Query Parameters

ParameterTypeRequiredDescription
fiatCurrencystringNoFilter by currency code (e.g., USD, KRW)

Response (All Rates)

{
"ok": true,
"data": {
"rates": {
"USDC": {
"USD": "1.0",
"KRW": "1350.50",
"EUR": "0.92"
},
"USDT": {
"USD": "1.001",
"KRW": "1351.20",
"EUR": "0.921"
}
},
"timestamp": "2026-01-30T10:30:00.000Z",
"fiatCurrencies": [
{ "code": "USD", "symbol": "$", "name": "US Dollar" }
]
}
}

Response (Specific Currency)

GET /public/exchange-rates?fiatCurrency=KRW
{
"ok": true,
"data": {
"fiatCurrency": "KRW",
"rates": {
"USDC": "1350.50",
"USDT": "1351.20"
},
"timestamp": "2026-01-30T10:30:00.000Z"
}
}

Rate Caching

Exchange rates are cached with the following policy:

CacheTTLDescription
Fresh10 minutesReturns cached rate immediately
Stale1 hourUsed as fallback if API fails
tip

Pre-fetch exchange rates to display estimated amounts in your UI before creating a checkout.


Example: Display Price Preview

const displayPricePreview = async (priceKRW) => {
// Get exchange rates
const { data } = await fetch(
'https://api.volr.io/public/exchange-rates?fiatCurrency=KRW'
).then(r => r.json());

const usdcRate = parseFloat(data.rates.USDC);
const estimatedUsdc = (priceKRW / usdcRate).toFixed(2);

return {
fiat: `${priceKRW.toLocaleString()} KRW`,
crypto: `~${estimatedUsdc} USDC`,
rate: `1 USDC = ${usdcRate.toLocaleString()} KRW`,
rateTime: data.timestamp,
};
};

// Usage
const preview = await displayPricePreview(5000);
// { fiat: "5,000 KRW", crypto: "~3.70 USDC", rate: "1 USDC = 1,350.5 KRW" }