Skip to main content
x402 is a payment protocol built on HTTP status code 402 Payment Required — a code in the HTTP spec since the 1990s, finally put to use. It lets agents pay for API access with stablecoins per-request, with no subscriptions or API keys required.

Mock Demo

Payment flow

1

Your agent makes a request

Your agent sends a standard HTTP request to an API endpoint, just like any other API call.
2

The server responds with 402 Payment Required

Instead of returning data, the server responds with a 402 status code and includes payment requirements in the PAYMENT-REQUIRED header: how much it costs, which token, and on which network.
3

Your agent pays

Your agent’s wallet constructs a signed payment payload and resubmits the request with a PAYMENT-SIGNATURE header. No human approval needed.
4

The server delivers the data

The server verifies the payment via a facilitator, settles onchain, and returns the requested data. The entire flow takes seconds.
Any agent with a funded wallet can pay for any x402-enabled API — no pre-existing relationship or account required. Learn more about x402 →

Making x402 requests

CDP Agentic Wallet

With the CDP Agentic Wallet skills installed, your agent handles x402 payments automatically:
Terminal
npx skills add coinbase/agentic-wallet-skills
Discover available services using the search-for-service skill:
Terminal
npx awal@latest x402 bazaar search "weather forecast"
Call a paid service using the pay-for-service skill:
Terminal
npx awal@latest x402 pay https://example.com/api/weather \
  -X POST \
  -d '{"query": "New York"}'
Or prompt your agent directly:
Find APIs for sentiment analysis
Call that weather API and get the forecast for New York
The search-for-service and pay-for-service skills handle discovery, payment, and retries. CDP Agentic Wallet skills →

Sponge Wallet

Sponge Wallet has a built-in x402 proxy that discovers services and handles payment automatically: Step 1 — Discover a service:
Terminal
curl "https://api.wallet.paysponge.com/api/discover?query=weather+forecast" \
  -H "Authorization: Bearer $SPONGE_API_KEY" \
  -H "Sponge-Version: 0.2.1"
Step 2 — Get service details (required — do not skip):
Terminal
curl "https://api.wallet.paysponge.com/api/discover/{serviceId}" \
  -H "Authorization: Bearer $SPONGE_API_KEY" \
  -H "Sponge-Version: 0.2.1"
This returns the baseUrl, endpoint paths, parameters, and pricing. Step 3 — Call the service (payment is automatic):
Terminal
curl -X POST "https://api.wallet.paysponge.com/api/x402/fetch" \
  -H "Authorization: Bearer $SPONGE_API_KEY" \
  -H "Sponge-Version: 0.2.1" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://{baseUrl}/{endpointPath}",
    "method": "POST",
    "body": { "query": "New York" },
    "preferred_chain": "base"
  }'
Sponge Wallet detects the 402, pays in USDC from your wallet, and returns the API response. Sponge Wallet docs →

Error handling and retries

StatusMeaningWhat to do
402Payment requiredParse PAYMENT-REQUIRED header and pay
402 with X-Payment-ErrorPayment rejectedCheck wallet balance and token approval
408Payment timeoutRetry with same or higher payment
429Rate limitBack off and retry after the indicated delay
The CDP Agentic Wallet pay-for-service skill and Sponge Wallet’s x402 proxy handle retries automatically. If you’re building a custom client, parse the PAYMENT-REQUIRED header, construct the signed payload, and retry with the PAYMENT-SIGNATURE header.
If you’re using Bankr, no setup is required. Just prompt it directly:
Get the current ETH price from a paid data source
Find a weather API and get the forecast for New York
Get the token balances for 0xYourAddress on Base
Bankr handles service discovery, payment, and data extraction automatically.

Video Tutorial

Accepting payments

Gate your own endpoints and charge other agents per request.

x402 client-server model

Facilitator endpoints and protocol addresses.