Need help? Join the x402 Discord for the latest updates.
General
What is x402 in a single sentence?
x402 is an open-source protocol that turns the dormant HTTP402 Payment Required status code into a fully-featured, on-chain payment layer for APIs, websites, and autonomous agents.
Why not use traditional payment rails or API keys?
Traditional rails require credit-card networks, user accounts, and multi-step UI flows. x402 removes those dependencies, enabling programmatic, HTTP-native payments (perfect for AI agents) while dropping fees to near-zero and settling in ~1 second.Is x402 only for crypto-native projects?
No. Any web API or content provider (crypto or web2) can integrate x402 if it wants a lower-cost, friction-free payment path for small or usage-based transactions.Language & Framework Support
What languages and frameworks are supported?
Fully Supported (v2):- TypeScript/Node.js: Express, Next.js, Hono (server); Fetch, Axios (client)
- Go: Gin, net/http (server and client)
- Python: Currently under development for x402 v2
What packages should I use?
| Use Case | Package |
|---|---|
| Express server | @x402/express + @x402/evm |
| Next.js server | @x402/next + @x402/evm |
| Hono server | @x402/hono + @x402/evm |
| Fetch client | @x402/fetch + @x402/evm |
| Axios client | @x402/axios + @x402/evm |
| Solana support | @x402/svm |
| Go | github.com/coinbase/x402/go |
Facilitators
Who runs facilitators today?
Coinbase Developer Platform operates the first production facilitator. The protocol, however, is permissionless and anyone can run a facilitator. Expect:- Community-run facilitators for other networks or assets.
- Private facilitators for enterprises that need custom KYT / KYC flows.
What stops a malicious facilitator from stealing funds or lying about settlement?
Every payment payload is signed by the buyer and settles directly on-chain. A facilitator that tampers with the transaction will fail signature checks.Pricing & Schemes
How should I price my endpoint?
There is no single answer, but common patterns are:- Flat per-call (e.g.,
$0.001per request) - Tiered (
/basicvs/proendpoints with different prices) - Up-to (work in progress): “pay-up-to” where the final cost equals usage (tokens, MB, etc.)
Can I integrate x402 with a usage / plan manager like Metronome?
Yes. x402 handles the payment execution. You can still meter usage, aggregate calls, or issue prepaid credits in Metronome and only charge when limits are exceeded. Example glue code is coming soon.Assets, Networks & Fees
Which assets and networks are supported today?
CDP Facilitator supports:| Network | CAIP-2 Identifier | Asset | Fees* | Status |
|---|---|---|---|---|
| Base | eip155:8453 | USDC | fee-free | Mainnet |
| Base Sepolia | eip155:84532 | USDC | fee-free | Testnet |
| Solana | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | SPL Tokens | fee-free | Mainnet |
| Solana Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | SPL Tokens | fee-free | Testnet |
What is CAIP-2?
CAIP-2 (Chain Agnostic Improvement Proposal 2) is a standard format for identifying blockchain networks. x402 v2 uses this format:- EVM:
eip155:{chainId}(e.g.,eip155:8453for Base) - Solana:
solana:{genesisHash}(e.g.,solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)
I need support for additional networks like Polygon or Avalanche. What should I do?
CDP is actively expanding network support. In the meantime:- Run your own facilitator - the x402 codebase supports Polygon, Avalanche, and other networks
- Submit a feature request through CDP support channels
- Check the x402 Discord for updates on network expansion
Security
Do I have to expose my private key to my backend?
No. The recommended pattern is:- Buyers (clients/agents) sign locally in their runtime (browser, serverless, agent VM). You can use CDP Server Wallet to create a programmatic wallet.
- Sellers never hold the buyer’s key; they only verify signatures.
How do refunds work?
The currentexact scheme is a push payment and irreversible once executed. Two options:
- Business-logic refunds: Seller sends a new USDC transfer back to the buyer.
- Escrow schemes: Future spec could add conditional transfers (e.g., HTLCs or hold invoices).
Usage by AI Agents
How does an agent know what to pay?
Agents follow the same flow as humans:- Make a request.
- Parse the
PAYMENT-REQUIREDheader (base64-encoded payment requirements). - Choose a suitable requirement from the
acceptsarray and sign a payload via the x402 client SDKs. - Retry with
PAYMENT-SIGNATUREheader.
Do agents need wallets?
Yes. Programmatic wallets (e.g., CDP Server Wallet,viem, ethers-v6 HD wallets) let agents sign payment payloads without exposing seed phrases.
Protocol & Headers
What headers does x402 use?
| Header | Direction | Purpose |
|---|---|---|
PAYMENT-REQUIRED | Server → Client | Base64-encoded payment requirements (in 402 response) |
PAYMENT-SIGNATURE | Client → Server | Base64-encoded signed payment payload |
PAYMENT-RESPONSE | Server → Client | Settlement confirmation |
What is x402 extensions?
Extensions are optional features that can be added to the x402 protocol:- Bazaar: Service discovery extension for listing your API in the x402 marketplace
- Sign-in-with-x: Authentication extension (coming soon)
extensions field in your route configuration.
Governance & Roadmap
Is there a formal spec or whitepaper?
How will x402 evolve?
Tracked in public GitHub issues + community RFCs. Major themes:- Multi-asset support
- Additional schemes (
upto,stream,permit2) - Discovery layer for service search & reputation
Why is x402 hosted in the Coinbase GitHub?
x402 is an open protocol developed by Coinbase in partnership with ecosystem contributors including Cloudflare. While the reference implementations currently live in the Coinbase GitHub, x402 is designed as a vendor-neutral standard. We’re working toward launching an independent x402 Foundation to steward the protocol’s long-term governance and development. The protocol specification, SDKs, and tooling are fully open source, and we welcome contributions from the community.Troubleshooting
I keep getting 402 Payment Required, even after attaching the payment header. Why?
- Ensure you’re using
PAYMENT-SIGNATUREheader (not the legacyX-PAYMENTheader). - Signature is invalid (wrong chain ID or payload fields).
- Payment amount < required amount.
- Address has insufficient USDC or was flagged by KYT.
Check the
errorfield in the server’s JSON response for details.
My test works on Base Sepolia but fails on Base mainnet. What changed?
- Ensure you set
network: "eip155:8453"(not"eip155:84532"for testnet). - Make sure you’re using a facilitator that supports mainnet (the x402.org testnet facilitator does NOT support mainnet).
- Confirm you have the correct asset address for the network you’re using.
- Confirm your wallet has mainnet USDC.
- Gas fees are higher on mainnet; fund the wallet with a small amount of ETH for gas.
I’m seeing “No scheme registered” errors
Ensure you’ve registered the appropriate scheme for the network:Still have questions?
- Reach out in the Discord channel
- Open a GitHub Discussion or Issue in the x402 repo