See exactly how your payment client behaves
test402 serves compliant and deliberately broken x402 and MPP challenges at plain URLs. Point your client at one and watch what it does -- pay, refuse, or fail cleanly. No signup. Nothing stored.
$ curl -i https://test402.com/api/x402{
"x402Version": 2,
"error": "PAYMENT-SIGNATURE header is required",
"resource": {
"url": "https://test402.com/api/x402",
"description": "test402 challenge",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:84532",
"amount": "100",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"payTo": "0x0000000000000000000000000000000000000402",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USDC",
"version": "2",
"assetTransferMethod": "eip3009"
}
}
],
"extensions": {
"https://test402.com/extensions/facilitator": {
"id": "x402org",
"url": "https://x402.org/facilitator"
}
},
"note": "test402 scenario. quirk=none"
}How it works
- 1
Pick a test
Choose a ready-made scenario, or compose your own -- network, price, facilitator, and how the challenge should misbehave.
- 2
Point your client at the URL
Every test is a plain endpoint. No signup, no keys. Copy the URL or the curl command and send your client at it.
- 3
See exactly what it does
Compliant challenges should be paid; broken ones should be refused or fail cleanly. The endpoint returns precisely what the test promises.
Start with these
A well-formed challenge and a couple your client should turn down.
- Compliant on Base Sepolia
A well-formed x402 v2 challenge. USDC on Base Sepolia.
Your client should Pay it.
- v1 network name
A v2 challenge naming the network base-sepolia instead of eip155:84532.
Your client should Refuse it. Seen in the wild on grug402.dev.
- Inflated amount
The amount is 1000x the price, still atomic-shaped.
Your client should Catch it against its own maximum, or the asset's decimals.
Every test is customizable
Start from any scenario and change the network, price, facilitator, or exactly how it misbehaves. The whole test lives in the URL, so you can still share or bookmark the result.
Compliant and broken
Real client-breaking shapes seen in the wild -- v1 names in v2 envelopes, undecodable headers, inflated amounts -- each labeled with what a correct client should do.
Real responses, no drift
The preview runs through the same code as the endpoint, so what you see is byte-for-byte what your client receives -- down to the 400 for a malformed config.
Testnet only, nothing stored
Every network is a testnet, by design: a client pointed here can never move real money, however badly it behaves. No accounts, no logs.
Point your client at a test
Find out how it handles the challenges it will actually meet in the wild. It takes one URL.