Skip to main content
Version: v2

Currencies & Networks

How currencies, tokens, and blockchain networks are identified across the API. Read this before constructing order or rate requests — most integration mistakes trace back to currency identification.

Currency codes​

Every currency has an internal code. For native coins it is the plain ticker (BTC, ETH, SOL). For tokens that exist on multiple networks, the code is the ticker plus a network suffix:

TokenNetworkCurrency code
USDTEthereumUSDTERC
USDTTronUSDTTRX
USDCArbitrumUSDCARB
USDCSolanaUSDCSOL
ETHArbitrumETHARB
Do not guess suffixed codes

The suffix scheme is not a fixed algorithm you can derive client-side. Always enumerate the authoritative list from GET /currency/ — each entry carries code, network, and contract_address — instead of constructing codes like USDT + ERC by string concatenation.

common_symbol on the currency object gives the widely used external ticker (e.g. Binance mapping) and falls back to the internal code when no mapping exists. Use it for display; use code for API calls.

Three ways to identify a currency in requests​

deposit_currency / withdraw_currency in POST /orders/ accept three formats:

1. String — internal currency code
{ "deposit_currency": "USDTERC" }
2. Code + network
{ "deposit_currency": { "code": "USDT", "network": "ETH" } }
3. Contract address + network (recommended for tokens)
{ "deposit_currency": { "contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "network": "ETH" } }

The contract-address form is the most precise for tokens — it resolves to the exact asset on the given chain. A null or empty contract_address resolves to the network's main (native) currency.

GET /rate/ supports the same identification via from/to + from_network/to_network, or from_contract_address/to_contract_address + the matching *_network parameter.

Responses always use string codes

Whatever request format you use, responses always return flat string codes ("USDCARB", "ETHARB"). Map them back through GET /currency/ if you need network/contract details.

Networks​

GET /network/ lists supported networks. Each entry has:

  • network — the network name,
  • native_currency — the code of the network's main currency (null if none is configured).

Network identifiers appear in two forms in the API: short codes in currency objects and order requests (ETH, ARB, TRX, BSC), and display names on the network endpoint. Treat the values returned by GET /network/ and the network field of GET /currency/ as authoritative — do not hardcode a network list.

Extra IDs (memo / destination tag)​

Some chains require a secondary identifier alongside the address (Stellar/XLM memo, XRP destination tag, TON comment, …). The currency object's extra_id field names the type of identifier the currency needs (memo, destination_tag, …) or is null.

Where extra IDs appear in the order model:

FieldDirectionSet byPurpose
deposit_address_extra_idinboundNexchange (response)Include it when sending your deposit — funds sent without it can be delayed or lost
withdraw_address_extra_idoutboundyou (request, max 127 chars)Attached to the withdrawal we send you
refund_address_extra_idrefundyou (request, max 127 chars)Attached to refund transactions if the order is refunded
Canonical field names

The fields are withdraw_address_extra_id and refund_address_extra_id. Older documentation revisions used withdraw_extra_id / refund_extra_id — those names are not part of the v2 contract.

Confirmations​

min_confirmations on the currency object is the number of on-chain confirmations required before a deposit in that currency is credited (null for fiat). Order completion also depends on the withdrawal transaction confirming on the destination chain — see Order Lifecycle.

Next steps​