Reference: Networks & assets
datapoint.market settles in USDC on EVM (Base), Stellar, and Solana (SVM).
Every payment is keyed by (scheme, network) with scheme = exact.
Networks (CAIP-2)
| Network id | Chain | Family | Type | USDC decimals |
|---|---|---|---|---|
eip155:8453 | Base mainnet | EVM | live | 6 |
eip155:84532 | Base Sepolia | EVM | test | 6 |
stellar:pubnet | Stellar mainnet | Stellar | live | 7 |
stellar:testnet | Stellar | Stellar | test | 7 |
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | Solana mainnet | SVM | live | 6 |
solana:EtWTRABZaYq6iMfeYKouRu166VU2xqav | Solana devnet | SVM | test | 6 |
Decimals differ by family — 1 USDC =
1_000_000on Base and Solana but10_000_000on Stellar. Atomic amounts on the wire must use the destination chain’s precision.
What’s actually settleable right now
The code supports all six networks, but a network only settles if its splitter/asset/relayer are configured on the deployment. Currently live: mainnet only — Base mainnet, Stellar pubnet, and Solana mainnet.
Testnets (Base Sepolia / Stellar testnet / Solana devnet) are hidden while
mainnet-only: removed from the create form, rejected by endpoint create/update
(REST + MCP), and omitted from /x402/*/supported. The support remains in code —
flip EXPOSE_TESTNET=true (and wire testnet settlement) to bring it back as a
sandbox. (Solana as a whole is additionally gated by EXPOSE_SOLANA.)
Check at runtime: GET /x402/base/supported, /x402/stellar/supported, and
/x402/solana/supported list advertised kinds, but the authoritative test is
whether verify returns 503 (“network not configured”) for that network.
Assets
| Network | USDC | Notes |
|---|---|---|
| Base mainnet | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | Circle USDC; EIP-712 domain name "USD Coin", version 2 |
| Stellar pubnet | issuer GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN | Circle USDC; the splitter settles via the asset’s SAC (Stellar Asset Contract) |
| Solana mainnet | mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | Circle USDC (SPL); recipient token accounts are auto-created in the payment tx (idempotent), so providers need no setup |
On Stellar, to receive USDC an account needs a trustline to the USDC asset (a one-time 0.5 XLM reserve). Buyers paying USDC need a trustline + balance; the relayer pays transaction fees in XLM and never holds USDC.
On Solana there is no trustline equivalent — the payment transaction prepends
idempotent CreateAssociatedTokenAccount instructions, so the provider and fee
token accounts are created on first payment if missing.
Signing per family
| Family | Authorization the buyer signs | Gas paid by |
|---|---|---|
| EVM (Base) | EIP-3009 receiveWithAuthorization (EIP-712) | relayer (gasless for buyer) |
| Stellar | Soroban authorization entry for settle | relayer |
| SVM (Solana) | one partial-signed transaction with two transfer_checked SPL transfers (provider leg + fee leg); the relayer co-signs as fee payer and submits | relayer (SOL) |
Solana settlement is program-less — there’s no splitter contract. The atomic provider/fee split is the two transfers inside the buyer’s single transaction; verification proves the tx carries exactly those two transfers at the right mint/amounts/destinations before the relayer co-signs. USDC never touches a relay-owned account.
Fees & payouts
- Providers keep 100% of their price. A protocol fee is added on top and
shown in the 402 (
maxAmountRequired= price + fee). - The fee schedule is in
docs/ratecard.md; the amount is computed per call and always visible before payment. - Settlement is atomic and non-custodial: the on-chain splitter pays the provider leg and the fee leg in one transaction, directly from the buyer.