x402 endpoint checker
Paste a paid URL. The checker requests it the way an x402 client or directory crawler would, then grades the 402: status, PAYMENT-REQUIRED header, network, USDC asset, amount units, payTo checksum, EIP-712 domain, CORS, HEAD and discovery metadata.
Payment options found
Decoded payment terms
Response headers that matter
What it checks
| Check | What “good” looks like |
|---|---|
| Status | The unpaid request returns 402, not 200, 401, 403 or 405. Redirects are followed (up to 3) and reported. |
| PAYMENT-REQUIRED header | Present, standard base64, and decodes to JSON (x402 v2 HTTP transport). |
| Version and body | x402Version is 1 or 2; whether the body mirrors the terms for humans and crawlers. |
| accepts[] | At least one payment option, with a known scheme. |
| Network | A CAIP-2 ID the checker recognises, with testnets flagged. |
| Asset | The native USDC contract for that network, and not the USDC of a different chain. |
| Amount units | An integer string in smallest units: "29000000" is 29 USDC; "29" would be 0.000029. |
| payTo | A valid address that passes the EIP-55 checksum when mixed-case, and is not the zero address. |
| EIP-712 domain | extra.name and extra.version match the USDC contract’s on-chain name() and version() (verified networks). |
| maxTimeoutSeconds | Present and in a sensible range. |
| resource, description, mimeType | resource.url matches the public URL; a useful description for directories. |
| Discovery | Bazaar metadata (v2 extensions.bazaar) or outputSchema (v1). |
| CORS | Access-Control-Allow-Origin, and PAYMENT-REQUIRED listed in Access-Control-Expose-Headers so browser clients can read it. |
| HEAD parity | HEAD returns 402 too, for crawlers and link checkers that probe with HEAD. |
The checker never pays. To test the paid path, use an x402 client library with a test wallet, ideally on Base Sepolia first. Step-by-step curl versions of these checks are in How to test an x402 endpoint with curl.
Use it from a script or an agent
JSON API. Same checks, same limits:
curl -s 'https://x402-seller-kit.soloearn.workers.dev/api/x402-check?url=https://x402-seller-kit.soloearn.workers.dev/download' | jq '{verdict, summary}'
MCP server. Streamable HTTP at https://x402-seller-kit.soloearn.workers.dev/mcp, one read-only tool: check_x402_endpoint(url, method?). Add it to an MCP client config:
{
"mcpServers": {
"x402-checker": { "type": "http", "url": "https://x402-seller-kit.soloearn.workers.dev/mcp" }
}
}
FAQ
Is the x402 checker free?
Yes. No signup, no wallet and no payment. It is limited to 20 checks per minute per IP so it stays free for everyone.
Does it pay, sign or store anything?
No. It sends one unpaid request (GET or POST) and, for GET, one HEAD request, then reads the response. It never creates a payment signature. The URLs you check are not stored; the site only keeps daily page-view counts.
Does it support x402 v1 and v2?
Yes. v2 terms are read from the base64 PAYMENT-REQUIRED header (and the body if mirrored). v1 terms are read from the JSON body, and v1 network names such as base or base-sepolia are mapped to CAIP-2 IDs.
What does the EIP-712 domain check do?
For USDC "exact" payments on EVM chains, clients sign an EIP-3009 authorisation using the token name and version you send in extra. The checker compares them with the values the USDC contract returns on-chain (name() and version(), read on 8 Oct 2026 for Base, Base Sepolia, Ethereum, Avalanche, Fuji, Optimism and Arbitrum). On Base mainnet that is "USD Coin" and "2"; on Base Sepolia it is "USDC" and "2". A mismatch makes signatures fail at the facilitator.
Why does it say my 402 has no x402 terms?
A 402 status alone is not x402. Clients need a PAYMENT-REQUIRED header (v2) or an x402 JSON body (v1) with an accepts list. Some paywalls return 402 with HTML or their own JSON format.
Can I call it from a script or an AI agent?
Yes. GET /api/x402-check?url=… returns the full report as JSON, and /mcp is a Model Context Protocol endpoint (streamable HTTP) with one read-only tool, check_x402_endpoint.
Which networks and tokens does it know?
Networks: Base, Base Sepolia, Ethereum, Polygon (and Amoy), Avalanche (and Fuji), Optimism, Arbitrum, Sei, IoTeX, Solana and Solana Devnet. Native USDC addresses: Base, Base Sepolia, Ethereum, Polygon, Avalanche, Fuji, Optimism, Arbitrum, Solana and Solana Devnet. Other tokens are reported as unknown, not as errors.
Building the paid endpoint itself? The x402 Seller Kit is a tested Cloudflare Worker template that passes every check above, plus an order-code checkout for buyers who pay from an exchange. Read the free guide or the README first.
Get the kit · $29