FREE X402 PAYMENT-REQUIRED DECODER
Read the 402 before you trust it.
Decode a public x402 v2 challenge locally, inspect every payment offer, and catch missing amounts, recipients, resource metadata, or Bazaar discovery information. Nothing is uploaded and no payment is signed.
VERDICTVALID V2
OFFERS1
BAZAARYES
- PASSx402Version is 2.
- PASS1 payment offer found.
- PASSResource: https://merchant.example/api/weather
- PASSEvery offer should declare a positive atomic amount.
- PASSEvery offer should declare a structurally valid payTo recipient.
- PASSBazaar discovery metadata is declared.
STRUCTURED RESULT
{
"valid": true,
"x402Version": 2,
"resourceUrl": "https://merchant.example/api/weather",
"serviceName": "Example Weather",
"offerCount": 1,
"offers": [
{
"index": 0,
"scheme": "exact",
"network": "eip155:8453",
"amountAtomic": "2000",
"amountUsdc": "0.002",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x0000000000000000000000000000000000000001",
"maxTimeoutSeconds": 300
}
],
"extensionKeys": [
"bazaar"
],
"bazaarDeclared": true,
"checks": [
{
"id": "x402-version",
"passed": true,
"detail": "x402Version is 2."
},
{
"id": "payment-offers",
"passed": true,
"detail": "1 payment offer found."
},
{
"id": "resource-url",
"passed": true,
"detail": "Resource: https://merchant.example/api/weather"
},
{
"id": "offer-amounts",
"passed": true,
"detail": "Every offer should declare a positive atomic amount."
},
{
"id": "offer-recipients",
"passed": true,
"detail": "Every offer should declare a structurally valid payTo recipient."
},
{
"id": "bazaar-extension",
"passed": true,
"detail": "Bazaar discovery metadata is declared."
}
],
"warnings": [],
"challenge": {
"x402Version": 2,
"error": "Payment required",
"resource": {
"url": "https://merchant.example/api/weather",
"serviceName": "Example Weather",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "2000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x0000000000000000000000000000000000000001",
"maxTimeoutSeconds": 300
}
],
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET"
}
}
}
}
}
}NEED A LIVE ENDPOINT CHECK?
Decode is free. Preflight verifies the server.
The local decoder checks one challenge you already have. The paid preflight sends a bounded unpaid request to the public endpoint, compares header and body data, inspects CORS, validates Bazaar schemas, and returns a 0–100 readiness score.
Run a 0.002 USDC preflight →