Skip to main content
GET
/
markets
Get markets orderbook
curl --request GET \
  --url https://api.paycrest.io/v2/markets
{
  "status": "success",
  "message": "Operation successful",
  "data": {
    "asOf": "2023-11-07T05:31:56Z",
    "aggregates": {
      "settledVolumeUsd": {
        "24h": "<string>",
        "7d": "<string>",
        "30d": "<string>",
        "all": "<string>"
      },
      "settledTxns": {
        "24h": 123,
        "7d": 123,
        "30d": 123,
        "all": 123
      },
      "networkSuccessPercent": {
        "24h": "<string>",
        "7d": "<string>",
        "30d": "<string>"
      },
      "medianDeliverySecs": {
        "24h": 123,
        "7d": 123,
        "30d": 123
      },
      "activeProviders": {
        "24h": 123,
        "7d": 123,
        "30d": 123,
        "all": 123
      },
      "activeSenders": {
        "24h": 123,
        "7d": 123,
        "30d": 123,
        "all": 123
      },
      "liveLiquidityUsd": "<string>",
      "corridors": 123,
      "tokens": 123,
      "networks": 123
    },
    "book": [
      {
        "providerId": "<string>",
        "token": "<string>",
        "fiat": "<string>",
        "network": "<string>",
        "rate": "<string>",
        "min": "<string>",
        "max": "<string>",
        "balance": "<string>",
        "balanceCurrency": "<string>",
        "balanceUsd": "<string>",
        "settled": 123,
        "successPercent": "<string>"
      }
    ]
  }
}
Returns the live protocol orderbook (every funded, available provider quote across corridors × tokens × networks) plus network-wide aggregate statistics. Use this endpoint to display live liquidity, rates, and protocol health without requiring authentication.
Public endpoint — no API key or HMAC signature required. CORS is open. Responses are cached for ~10 s and are per-IP rate limited.

Response shape (data)

FieldTypeDescription
asOfstring (ISO 8601)Timestamp when the response was generated
aggregatesobjectNetwork-wide aggregate statistics (see below)
bookarrayProvider quote rows forming the live orderbook

Book row fields

Each element of book is a single provider quote for one side on one network:
FieldTypeDescription
providerIdstringProvider identifier
sidestringsell = offramp (crypto → fiat); buy = onramp (fiat → crypto)
tokenstringToken symbol, e.g. USDT, USDC
fiatstringFiat currency code, e.g. NGN, KES
networkstringNetwork identifier, e.g. base, ethereum
ratestringProvider’s effective rate (fiat per crypto for sell; crypto per fiat for buy)
rateTypestringfixed or floating
minstringMinimum order amount for this corridor
maxstringMaximum order amount for this corridor
balancestringAvailable liquidity: fiat amount for sell rows, token amount for buy rows
balanceCurrencystringCurrency of balance — fiat code for sell, token symbol for buy
balanceUsdstringBalance normalised to USD
settledintegerTotal settled orders for this provider in this corridor
successPercentstring | nullSuccess rate as a percentage string (null when no settled or refunded history)
balance is a shared pool repeated across a provider’s networks for the same fiat (sell) or token (buy). De-duplicate by providerId + fiat (sell) or providerId + token (buy) when summing total depth to avoid double-counting.
Qualifying offer filters: is_available = true, funded (positive balance), enabled fiat/token, non-testnet network. All book rows are public regardless of a provider’s visibility setting—visibility only affects the narrower position benchmark pool on the Get Market Rate endpoint.

Aggregates fields

FieldTypeDescription
settledVolumeUsdwindowedUSD volume of settled orders — 24h, 7d, 30d, all (strings)
settledTxnswindowedCount of settled transactions — 24h, 7d, 30d, all (integers)
networkSuccessPercentwindowedNetwork success rate (settled / (settled + refunded)) — 24h, 7d, 30d (strings or null)
medianDeliverySecswindowedMedian order delivery time in seconds — 24h, 7d, 30d (integers or null)
activeProviderswindowedDistinct providers with ≥1 settled order — 24h, 7d, 30d, all (integers)
activeSenderswindowedDistinct senders with ≥1 settled order — 24h, 7d, 30d, all (integers)
liveLiquidityUsdstringTotal available USD-denominated liquidity across all book rows
corridorsintegerDistinct token/fiat pairs in the current book
tokensintegerDistinct tokens in the current book
networksintegerDistinct networks in the current book
Windowed success and median fields are null for a window when no terminal orders exist in that period.

Example

GET https://api.paycrest.io/v2/markets
{
  "status": "success",
  "message": "OK",
  "data": {
    "asOf": "2026-06-08T14:30:00Z",
    "aggregates": {
      "settledVolumeUsd": { "24h": "48200.00", "7d": "312500.00", "30d": "1420000.00", "all": "9800000.00" },
      "settledTxns":       { "24h": 118,         "7d": 790,         "30d": 3350,         "all": 43000 },
      "networkSuccessPercent": { "24h": "98.30", "7d": "97.60", "30d": "97.10" },
      "medianDeliverySecs": { "24h": 175, "7d": 190, "30d": 205 },
      "activeProviders":   { "24h": 42, "7d": 49, "30d": 55, "all": 115 },
      "activeSenders":     { "24h": 1150, "7d": 8200, "30d": 33000, "all": 490000 },
      "liveLiquidityUsd": "2350000.00",
      "corridors": 11,
      "tokens": 3,
      "networks": 4
    },
    "book": [
      {
        "providerId": "AbCdEfGh",
        "side": "sell",
        "token": "USDT",
        "fiat": "NGN",
        "network": "base",
        "rate": "1605.50",
        "rateType": "floating",
        "min": "500.00",
        "max": "500000.00",
        "balance": "12000000.00",
        "balanceCurrency": "NGN",
        "balanceUsd": "7462.69",
        "settled": 3200,
        "successPercent": "98.90"
      },
      {
        "providerId": "IjKlMnOp",
        "side": "buy",
        "token": "USDC",
        "fiat": "KES",
        "network": "ethereum",
        "rate": "130.25",
        "rateType": "fixed",
        "min": "100.00",
        "max": "100000.00",
        "balance": "9500.00",
        "balanceCurrency": "USDC",
        "balanceUsd": "9500.00",
        "settled": 850,
        "successPercent": "97.20"
      }
    ]
  }
}

Errors

HTTPCause
429Per-IP rate limit exceeded
500Internal error

Response

Markets orderbook and aggregates

status
string
Example:

"success"

message
string
Example:

"Operation successful"

data
object

Public markets orderbook and network-wide aggregates.