Supported Assets
Last updated
Ivorypay x402 supports stablecoins across multiple EVM mainnets. The server automatically selects the on-chain transfer mechanism — either EIP-3009 or Permit2 — based on the chain and token combination.
Base
BASE_MAINNET
8453
EIP-3009
Permit2
Polygon
POLYGON
137
EIP-3009
Permit2
Lisk
LISK_MAINNET
1135
EIP-3009
Permit2
Ethereum
ETHEREUM
1
Permit2
Permit2
BNB Smart Chain
BSC_MAINNET
56
Permit2
Permit2
EIP-3009 (transferWithAuthorization) is Circle's native gasless transfer mechanism built into their USDC contracts. The user signs a typed authorization; the server submits the on-chain call.
Applies to: USDC on Base, Polygon, or Lisk.
No ERC-20 approve() call is needed — the transfer is self-contained in the signed authorization.
Permit2 is Uniswap's universal signature-based transfer standard, deployed at the same address on every EVM chain:
0x000000000022D473030F116dDEE9F6B43aC78BA3Applies to: Any non-USDC token, USDC on BSC or Ethereum, and all BSC/Ethereum transfers regardless of token.
Before the first Permit2 transfer on a given wallet/token/chain, the payer wallet must grant the Permit2 contract an ERC-20 allowance. This is a one-time transaction per combination — see Permit2 Approval for the step-by-step guide.
After calling POST /api/x402/build, the response includes chain and token. Cross-reference those values against the matrix above. If your combination falls under Permit2, the response will also include a spender field (the gas-payer vault address) that you must include in the Permit2 signed message.
If chain is BASE_MAINNET, POLYGON, or LISK_MAINNET and token is USDC, use EIP-3009 signing. Otherwise use Permit2.
Last updated
{
"typedDataHash": "0x...",
"chain": "BSC_MAINNET",
"token": "USDT",
"spender": "0xGasPayerVaultAddress",
...
}