Skip to main content
GET
/
rates
/
{network}
/
{token}
/
{amount}
/
{fiat}
Get token rate (v2)
curl --request GET \
  --url https://api.paycrest.io/v2/rates/{network}/{token}/{amount}/{fiat}
{
  "status": "success",
  "message": "Operation successful",
  "data": {
    "buy": {
      "rate": "<string>",
      "providerIds": [
        "<string>"
      ],
      "orderType": "<string>",
      "refundTimeoutMinutes": 123
    },
    "sell": {
      "rate": "<string>",
      "providerIds": [
        "<string>"
      ],
      "orderType": "<string>",
      "refundTimeoutMinutes": 123
    }
  }
}
Get buy and/or sell quotes for a token amount and fiat pair on a specific network. This is the recommended public rates URL for v2 integrations.
The legacy endpoint GET /v1/rates/{token}/{amount}/{fiat} (optional network query) returns a single numeric data field. The v2 path below returns a structured buy / sell payload.

Path parameters

ParameterDescription
networkNetwork id: ethereum, base, bnb-smart-chain, lisk, scroll, celo, arbitrum-one, polygon, asset-chain
tokenToken symbol (e.g. USDT, USDC)
amountCrypto notional the quote applies to
fiatFiat currency code (e.g. NGN, KES)

Query parameters

ParameterRequiredDescription
sideNobuy or sell to return only that side. Omit to receive both when available.
provider_idNoExactly 8 alphabetic characters (A–Z, a–z) to pin the quote to one provider.

Example

# Both buy and sell quotes on Base
GET https://api.paycrest.io/v2/rates/base/USDT/100/NGN

# Sell side only (typical for offramp display)
GET https://api.paycrest.io/v2/rates/base/USDT/100/NGN?side=sell

# Specific provider
GET https://api.paycrest.io/v2/rates/base/USDT/100/NGN?provider_id=AbCdEfGh

Success response (data)

Each populated side includes:
FieldTypeDescription
ratestringQuoted rate (fiat per crypto) for that side
providerIdsstring[]Provider id(s) for the quote
orderTypestringe.g. regular or otc
refundTimeoutMinutesintegerMinutes until automatic refund for that flow
{
  "status": "success",
  "message": "Rate fetched successfully",
  "data": {
    "buy": {
      "rate": "1498.25",
      "providerIds": ["AbCdEfGh"],
      "orderType": "regular",
      "refundTimeoutMinutes": 60
    },
    "sell": {
      "rate": "1500.50",
      "providerIds": ["AbCdEfGh"],
      "orderType": "regular",
      "refundTimeoutMinutes": 60
    }
  }
}
When side=buy or side=sell, only that key is present under data.

Errors

HTTPTypical cause
400Invalid amount, invalid side (must be buy or sell), invalid provider_id (must be exactly 8 letters A–Z or a–z), token not supported on network, unsupported fiat, or conversion rules (e.g. stable only to its base fiat)
404No provider available for the amount/currency/network
503Banking/mobile network issues affecting providers for the currency
500Internal error while resolving the rate

Rate resolution

Behavior matches the priority-queue–based resolution used when creating orders: the quote reflects provider selection and validation for the requested side (buy vs sell). Use sell for offramp (crypto → fiat) UX and buy for onramp (fiat → crypto) when displaying a rate before POST /v2/sender/orders. See also Get Token Rate (v1) for the legacy scalar response.

Path Parameters

network
enum<string>
required

Blockchain network identifier (lowercase in URL).

Available options:
ethereum,
base,
bnb-smart-chain,
lisk,
scroll,
celo,
arbitrum-one,
polygon,
asset-chain
token
string
required

Token symbol (e.g. USDT, USDC).

amount
string
required

Token amount the quote applies to.

fiat
string
required

Fiat currency code (e.g. NGN, KES).

Query Parameters

side
enum<string>

Return only the buy or sell quote. Omit for both sides.

Available options:
buy,
sell
provider_id
string

Optional. When set, limits the quote to this provider. Must be exactly 8 alphabetic characters (A–Z, a–z).

Pattern: ^[A-Za-z]{8}$

Response

Token rate quote(s)

status
string
Example:

"success"

message
string
Example:

"Operation successful"

data
object

Public token rate quote. Omit side to receive both buy and sell; use side=buy or side=sell for a single side.