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.