> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fireblocks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Networks and Assets

> Which blockchains and tokens x402 on Fireblocks supports, how assets are identified, testnet vs mainnet policy, and how the network you accept affects cost.

x402 payments settle on EVM-compatible blockchains in ERC-20 tokens, most commonly USDC. This page covers which networks and assets work, how they are identified, and how the testnet-only default protects you until you are ready for real value. For the terms used here, see [x402 Concepts and Glossary](/docs/x402-concepts).

## How networks and assets are identified

A network is an EVM chain, written in CAIP-2 form as `eip155:<chainId>` in payment requirements (for example, `eip155:8453` for Base). An asset is a token on one of those chains, identified to the facilitator by a Fireblocks-native asset ID such as `USDC_BASE` or `USDC_BASECHAIN_ETH_TEST5_8SH8`. The asset entry carries everything the facilitator needs: contract address, decimals, chain ID, and the EIP-712 domain fields used to verify signatures.

The facilitator does not ship a fixed network list. It accepts any EVM asset you import from your Fireblocks workspace with `x402 assets import`, and fills the contract address, decimals, and chain ID from Fireblocks at import time. What you can settle is therefore what your Fireblocks workspace supports, subject to the testnet policy below.

## Networks the agent signs on

The [x402 Agent](/docs/x402-agent) maps chain IDs to Fireblocks asset IDs for signing, which fixes the set of networks it pays on:

| Network          | Chain ID | Fireblocks base asset | Type    |
| ---------------- | -------- | --------------------- | ------- |
| Base             | 8453     | `BASECHAIN_ETH`       | Mainnet |
| Base Sepolia     | 84532    | `BASECHAIN_ETH_TEST5` | Testnet |
| Ethereum         | 1        | `ETH`                 | Mainnet |
| Ethereum Sepolia | 11155111 | `ETH_TEST5`           | Testnet |
| Arbitrum         | 42161    | `ETH-AETH`            | Mainnet |
| Optimism         | 10       | `ETH-OPT`             | Mainnet |
| Polygon          | 137      | `MATIC_POLYGON`       | Mainnet |

Base and Base Sepolia are the common choice for x402 because settlement is fast and gas is a fraction of a cent.

## Assets and pricing

The common payment asset is **USDC**, a USD-pegged stablecoin that implements EIP-3009 and so works with the default `eip-3009` transfer mechanism. The facilitator also settles other ERC-20s through the Permit2 mechanisms. To be quotable, each imported asset needs one of two pricing signals:

* **`stable: true`** for USD-pegged stablecoins, which the facilitator prices at 1:1 with USD without a network call.
* **`price_symbol: "<coingecko-id>"`** for live-priced assets (for example, `ethereum`, `weth`, `matic-network`), which the facilitator converts at request time.

An asset with neither signal cannot be priced in USD and is dropped from a `402` response rather than rejected; other accepted assets stay available. For how products convert from USD and mix assets, see [Pricing modes](/docs/x402-facilitator-integration#pricing-modes).

<Note>
  Stablecoins such as USDC and USDT include issuer-controlled blacklist and pause functions. A frozen or paused token can block a transfer outside your control. Review the third-party contract risks in the facilitator's [`DISCLAIMER.md`](https://github.com/fireblocks/x402-facilitator/blob/main/DISCLAIMER.md) before accepting an asset on mainnet.
</Note>

## Testnet-only by default

The Fireblocks facilitator refuses to handle mainnet value unless you explicitly opt in. Each asset records an `is_testnet` flag, populated from Fireblocks at import:

* **At boot**, the server refuses to start if any configured asset is mainnet and `X402_ALLOW_MAINNET` is not `true`, listing the offending assets.
* **At import**, `x402 assets import` (and the admin API) returns `403` for a mainnet asset while the flag is off.

To opt in, set the flag explicitly:

```bash theme={"system"}
X402_ALLOW_MAINNET=true npm start
```

The startup banner states which policy is active, so there is no ambiguity. See [Network policy](/docs/x402-facilitator-operations#network-policy).

## Cost and the network you accept

Settlement gas is paid by the facilitator's vault and varies sharply by network: cents or less on Base and other L2s, potentially more than a dollar on Ethereum mainnet. For small payments this matters. A product quoted at \$0.01 should not accept a mainnet chain whose settlement gas exceeds the payment, or the merchant loses money on every sale. The facilitator includes a gas-cost estimation interface for chain-aware pricing; see [Pricing modes](/docs/x402-facilitator-integration#pricing-modes).

## What to read next

* [Prerequisites and Testnet Funds](/docs/x402-prerequisites) — get testnet USDC and gas for the networks above.
* [Pricing modes](/docs/x402-facilitator-integration#pricing-modes) — price products across assets and convert from USD.
* [Operating and Production](/docs/x402-facilitator-operations#network-policy) — the full mainnet opt-in and production deployment.
