Skip to Content
ConceptsChains & assets
View as Markdown

Chains & assets

InfraIO Pay is stablecoin-first and multi-chain: eight EVM networks plus TRON, Solana and TON. The matrix below lists the networks InfraIO Pay supports. TRON, Solana and TON are coming soon to production.

Mainnet

ChainChain IDNativeUSDCUSDTConfirmationsMin order
Ethereum1ETH✓ (ERC-20)✓ (ERC-20)12$5.00
Base8453ETH✓ (ERC-20)—10$1.00
Polygon137POL✓ (ERC-20)✓ (ERC-20)5$1.00
BSC56BNB✓ (18-decimal)✓ (18-decimal)5$1.00
Arbitrum42161ETH✓ (ERC-20)✓ (ERC-20)5$1.00
Optimism10ETH✓ (ERC-20)✓ (ERC-20)5$1.00
ZKsync Era324ETH——5$1.00
Mantle5000MNT——5$1.00

BSC USDC + USDT use 18 decimals, not 6 like everywhere else. If you compute token amounts yourself, account for this. The SDK and hosted checkout handle it for you.

“Min order” is the minimum order amount in USD. The defaults are $1.00 on mainnet and $0.50 on testnet, with Ethereum at $5 because network fees (gas) on Ethereum would outweigh smaller orders. The minimum can differ per network. Orders below it are rejected with AMOUNT_BELOW_MINIMUM (HTTP 400), and details.floor_usd carries the minimum for that network so you can show it to the buyer.

TRON, Solana and TON

Coming soon. TRON, Solana and TON are not yet available in production.

ChainChain IDNativeUSDCUSDTConfirmationsMin order
TRON728126428TRX—✓ (TRC-20)19$1.00
Solana1151111081099710SOL✓ (SPL)✓ (SPL)32$1.00
TON607000000000000TON—✓ (Jetton)1$1.00

Solana and TON have no EVM chain ID, so the IDs above are the internal identifiers the API uses for them. Every stablecoin listed here uses 6 decimals. TON finalizes each block, so a single confirmation is final.

Testnet

ChainChain IDNativeConfirmationsMin order
Ethereum Sepolia11155111ETH1$0.50
Base Sepolia84532ETH1$0.50
Polygon Amoy80002POL1$0.50
BNB Smart Chain Testnet97tBNB1$0.50
Arbitrum Sepolia421614ETH1$0.50
OP Sepolia11155420ETH1$0.50
Mantle Sepolia5003MNT1$0.50
ZKsync Sepolia300ETH1$0.50

Test mode uses real testnets, not a mock chain. To trigger a test payment you need actual testnet funds — pull from a faucet (e.g., sepoliafaucet.com , coinbase.com/faucets ) and send to the deposit address the hosted checkout generates.

TRON Nile, Solana Devnet, TON Testnet

ChainChain IDNativeTest tokensConfirmationsMin order
TRON Nile3448148188TRXUSDT, IUSD19$0.50
Solana Devnet1151111081099711SOLUSDC, IUSD32$0.50
TON Testnet607000000000003TONIUSD1$0.50

Test mode on these networks also uses real testnets. IUSD is the IUSD test stablecoin, a test-only token with no real value.

Currency codes used in the API

currency (on the top-level body and each line item) is the order’s display currency — what the buyer sees as the amount. Today the platform accepts a single code at create time:

  • "USD" — the only supported value. Both POST /v1/orders and POST /b2b/v1/checkout-sessions/quick reject anything else with INVALID_INPUT (“unsupported currency”). GET /v1/supported/currencies returns the current list.

The on-chain asset the buyer settles in (USDC, USDT, …) is not the currency field. It’s chosen by the buyer on the checkout page from the chain × token combinations you’ve enabled in your merchant config, and is returned to you on the PaymentIntent and webhook payload as settlement_token (symbol + chain). Native coins used to pay network fees (gas) (ETH, BNB, POL, MNT, TRX, SOL, TON) are chain metadata only — not valid payment currencies.

The chain itself isn’t specified at create time either — same reason: the buyer picks the combination on the checkout page.

Confirmations vs finality

The “Confirmations” column above is the number of blocks InfraIO Pay waits before moving a PaymentIntent to SETTLED and sending payment.settled. The counts are chosen per network to make a reorg unlikely:

  • Ethereum mainnet uses 12 confirmations.
  • L2s use lower counts that reflect each network’s own reorg risk.
  • Testnets use 1 confirmation to keep testing fast. Don’t treat test payments as mainnet-grade finality.

If you need stricter (or looser) confirmations for a specific chain, the per-chain count is configurable on the merchant account — talk to your account contact.

Enabling chains for your merchant

A new account starts with a broad set of testnets. Mainnet networks become available when you have completed account verification and added a treasury wallet for the network (you sign a message to prove you control it).

Payments go straight to your treasury wallets — InfraIO Pay never holds your funds.

Enable additional chains from Settings → Networks in the merchant dashboard.

Per-order deposit addresses (EVM)

EVM networks use a per-order deposit address (CREATE2). Each address is unique to one checkout and is generated in advance. You don’t create or fund anything: you get the address back on the PaymentIntent and show it to the buyer.

  • Two intents for the same merchant get different addresses — no collisions across buyers.
  • The buyer sees the address on the checkout page immediately.
  • Buyers never pay a setup network fee. Funds are forwarded automatically to your treasury wallet, with no separate step for you to track.

Practical implications for integrators:

  • The deposit_address returned on a PaymentIntent is a regular EVM address — you can show it as a QR code, scan it, send to it from any wallet. No special client support needed.
  • Sending to the address before the intent expires settles the order. Late deposits (sent after expiry) can sometimes be forwarded to your treasury wallet, but this isn’t guaranteed, so don’t rely on it.
  • Each address is single-use per intent. If a buyer needs a second attempt, mint a new checkout session — you’ll get a fresh address.

Direct-to-wallet networks

TRON, Solana and TON work differently from EVM. There is no per-order deposit address and no sweep step (sweep means moving funds from the deposit address to your treasury wallet). This is the Direct to wallet model: the buyer’s wallet pays your treasury wallet directly. When the platform fee is collected on-chain, it is split off within that same payment (your share plus the fee). Otherwise the fee is billed from your prepaid credit. The platform decides which of the two applies, not the merchant.

NetworkHow the buyer pays
TRONTronLink. Checkout opens inside TronLink and the buyer approves the transfer.
SolanaSolana Pay. The buyer scans a QR code with Phantom, Solflare or any Solana Pay wallet; the wallet fetches the transaction from the checkout.
TONTON Connect (Tonkeeper, Telegram Wallet, MyTonWallet). The buyer approves a single request; the transfers carry an order reference comment that identifies the payment.

Before buyers can choose one of these networks, add a treasury wallet for that network family (EVM, TRON, Solana or TON) in the merchant dashboard. Accepted address formats:

  • TRON — base58 address starting with T…
  • Solana — base58 public key
  • TON — user-friendly UQ… / EQ… (or raw 0:…), basechain only

There is no deposit address to show on these networks, so let the hosted checkout drive the payment.

What’s NOT supported today

  • Bitcoin / Lightning. Not supported.
  • Native-currency payments. Buyers pay in stablecoins only. Native coins (ETH, BNB, POL, MNT, TRX, SOL, TON) are not accepted as payment on any network.
  • Other stablecoins (USDe, FDUSD, …). Contact support to request an additional token on a network that is already enabled.

What’s next