Docs
Receipt schema
Every test run returns a receipt shaped like this:
{ status, tx_hash, network, amount, facilitator, paid_at, error_reason?, error_message? }status is one of verified or failed — the endpoint verifies and settles in a single request, so there is no separate pending state to poll for.
Verified
✅ Payment verified. Your agent can pay.
{
"status": "verified",
"tx_hash": "0xab0da311ece7f5de70135488c6bd51359dcc11b67c7459edc52efaa458ab1431",
"network": "eip155:84532",
"amount": 1000,
"facilitator": "https://x402.org/facilitator",
"paid_at": "2026-07-26T08:26:07Z"
}network is a raw CAIP-2 id (eip155:84532 is Base Sepolia). amount is in smallest USDC units (1000= $0.001) and is derived from the signed payment payload the payer signed against, so it's populated on every verified receipt — display code still falls back to the requested test price if a future facilitator ever fails to report it.
Shown to a human: “Verified via x402.org on Base Sepolia — $0.001 USDC settled at 08:26:07 UTC. [View tx →]”
Failure modes
A failed run returns status: "failed", tx_hash: null, and — when the facilitator supplies them — error_reason (machine-readable) and error_message (human-readable). Copy below covers the likely causes; exact error_reason values depend on what the facilitator returns for a given failure.
Insufficient balance
❌ Payment failed: insufficient balance. Your agent's wallet doesn't have enough USDC on Base Sepolia to cover this test ($0.001 + gas). Fund the wallet from the Base Sepolia faucet and retry — no real money needed for the free tier.
Network mismatch
❌ Payment failed: network mismatch. Your agent signed a payment for a different chain, but this endpoint expects eip155:84532(Base Sepolia). Check your x402 client's chain config and retry.
Invalid signature
❌ Payment failed: signature invalid. The payment header didn't verify — usually a stale nonce, wrong signer key, or an expired payment quote. Re-fetch the 402 challenge (don't reuse an old one) and retry.