Skip to main content
What this is. The authoritative list of blockchains OpenFX supports per stablecoin. Each stablecoin × network combination is a logically distinct routing target. A USDC balance on Ethereum and a USDC balance on Solana are tracked separately, and addresses are not interchangeable across chains. When it matters. Any time you’re verifying a stablecoin withdrawal account, reading a deposit’s on-chain origin from network, or building a UI that lets users pick which chain to receive funds on. What you’ll learn. Which chains each stablecoin supports, the network value the API returns for each chain, and per-network request bodies for POST /v3/fx/withdrawals.

Networks by stablecoin

USDC

USDT

EURC

USDC on Ethereum and USDC on Polygon are different ledgers. Even when two EVM chains share the same address format (e.g. 0x… on Ethereum and Polygon), tokens sent on Polygon settle on the Polygon ledger and aren’t visible on Ethereum, and vice versa. On non-EVM chains (Solana, Tron, Aptos), the address formats are entirely different too. Either way, the verified withdrawal account pins both the currency and the network; OpenFX routes the withdrawal using the account’s specified network, and the resulting Withdrawal reports the chain at network.

How the API exposes the network

  • POST /v3/fx/withdrawals: You don’t specify a network on the request. The withdrawal account (identified by withdrawalAccountId) carries the network, and OpenFX infers it from there. See Trade Settlement.
  • GET /v3/fx/withdrawals/{id}, GET /v3/fx/deposits: the chain a stablecoin movement settled on lives at network (e.g. ETHEREUM). A fiat movement carries network: null instead (assetType: "FIAT" explains why). See Deposit lifecycle and Withdrawal lifecycle.
  • GET /v3/fx/withdrawal-accounts: The rail field identifies which chain a stablecoin account targets. Use this to pick the right withdrawalAccountId for a given chain.

Examples by network

Each example is a complete POST /v3/fx/withdrawals request body. Pick the verified withdrawalAccountId whose currency and network match the chain you want to send on.
The request body shape is identical across every chain — only withdrawalAccountId, withdrawalAmount, and currency change. The network is bound to the verified withdrawal account, so swapping chains is a matter of selecting a different withdrawalAccountId from GET /v3/fx/withdrawal-accounts. The examples above use USDC on Ethereum; here’s the same request for every other network on this page:

Common mistakes

  • Sending to the wrong-chain address. A USDC withdrawal sent to a Polygon address using an Ethereum-network withdrawalAccountId will not be recoverable. Always confirm the verified withdrawal account’s rail matches your intent before withdrawing.
  • Treating USDC as one balance. Your availableBalance for USDC spans all chains, but withdrawals are pinned to one chain via the withdrawalAccountId. There is no “move from Ethereum USDC to Solana USDC” inside OpenFX. That requires a bridge.
  • Looking for a chain on a fiat resource. A fiat deposit or withdrawal carries network: null (its assetType is "FIAT") — there is no chain to read. Use Settlement Times for fiat-rail information.

What’s next

Trade Settlement

Deposits in, withdrawals out. The unified fiat + stablecoin endpoint.

Settlement times

Fiat-rail submission cut-offs by currency.

Withdrawal lifecycle

pending → processing → completed state machine.

Deposit lifecycle

How deposits are detected and credited.