Skip to main content
Crypto Checkout supports payments across multiple blockchain ecosystems. You can accept native coins and stablecoins on Ethereum and its major L2s, as well as Solana, Tron, and Bitcoin. Each network is independently toggleable, so you can accept only the chains and assets that make sense for your business.

EVM networks

EVM-compatible chains share a common addressing scheme — the same derived deposit address is valid on every EVM network. Detection is scoped by the chainId field on the session, so funds sent on the wrong chain are not credited automatically.
NetworkChain IDMainnet assetsTestnetTestnet chain ID
Ethereum1ETH, USDC, USDT, DAISepolia11155111
Base8453ETH, USDC, USDT, DAIBase Sepolia84532
Arbitrum One42161ETH, USDC, USDT, DAIArbitrum Sepolia421614
Optimism10ETH, USDC, USDT, DAIOptimism Sepolia11155420
Polygon137POL, USDC, USDT, DAIPolygon Amoy80002
Testnet deployments expose only ETH (or POL on Polygon) and USDC by default. Additional testnet stablecoins can be added if the relevant test contracts are configured in your environment.

Non-EVM networks

NetworkMainnet IDMainnet assetsTestnetTestnet ID
Solana101SOL, USDC, USDTSolana Devnet103
Tron728126428TRX, USDT (TRC-20)Tron Nile2494104990
Bitcoin8333BTCBitcoin Signet38333
Solana uses synthetic chain IDs (101 for mainnet-beta, 103 for Devnet) because Solana has no native EVM chain ID. Similarly, Bitcoin uses 8333 (mainnet) and 38333 (Signet), and Tron uses its protocol chain IDs in decimal form. None of these values collide with any EVM chain ID.

Stablecoin pricing

USDC, USDT, and DAI are treated as USD-pegged 1:1. When a customer pays in a stablecoin, no CoinGecko price lookup is performed — the fiat amount maps directly to the stablecoin amount. This means:
  • A session for $99.00 USD paid in USDC always expects exactly 99.000000 USDC (6 decimals).
  • A session for $50.00 USD paid in DAI expects exactly 50.000000000000000000 DAI (18 decimals).
Native coins (ETH, POL, SOL, TRX, BTC) use live CoinGecko prices fetched and locked in at session creation time, so the expected crypto amount never changes for the lifetime of a session.

The chainId field on checkout sessions

Every checkout session exposes a chainId field that identifies which network the deposit address is being monitored on. For EVM chains this is the standard EVM chain ID. For non-EVM networks it is the synthetic ID described above.
{
  "id": "cs_abc123",
  "chainId": 8453,
  "address": "0xabc…",
  "amount": { "wei": "31250000000000000", "eth": "0.03125" },
  "fiat": { "amount": "99.00", "currency": "USD" }
}
When building a custom checkout UI, use chainId to display the correct network name, block explorer links, and wallet deep-link URIs to your customers.

Enabling and disabling networks

You control which chains and assets are available for new sessions from the dashboard.
1

Open the Networks page

Navigate to Dashboard → Networks.
2

Toggle chains

Click the toggle next to any chain to enable or disable it. Disabled chains cannot be selected when creating a new session or payment link.
3

Toggle individual assets

Expand a chain row to see its supported assets and toggle each one independently. For example, you might accept ETH and USDC on Base but disable USDT.
Disabling a chain or asset does not affect existing sessions — a session that was already created on a disabled network continues to be monitored until it reaches a terminal state.

Test mode

During development, use test API keys (ck_test_…) and testnet chain IDs. Test-mode sessions are completely isolated from live-mode sessions and never move real funds.
Ethereum Sepolia and Base Sepolia are the easiest testnets to get started with. Both have well-funded public faucets and fast block times. Polygon Amoy and Arbitrum Sepolia are good choices if you want to test low-fee L2 flows.

Next steps

Wallet Setup

Connect a sweep wallet so confirmed payments are automatically forwarded to your address.

Test Mode Guide

Learn how to use testnet chains and test API keys end-to-end before going live.