{
  "what": "x402 payment flows, honest and otherwise",
  "protocol": "x402 v2 (header PAYMENT-REQUIRED / PAYMENT-SIGNATURE / PAYMENT-RESPONSE)",
  "default_network": "base-sepolia",
  "networks": {
    "base": {
      "caip2": "eip155:8453",
      "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "real_money": true
    },
    "base-sepolia": {
      "caip2": "eip155:84532",
      "usdc": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "real_money": false
    }
  },
  "pay_to": "0x2b14ad50d63c7fee5a33847f95153ac37a690170",
  "price": {
    "default_usd": 0.01,
    "min_usd": 0.001,
    "max_usd": 1,
    "param": "amount"
  },
  "facilitators": {
    "note": "/402/pay forwards your PAYMENT-SIGNATURE to the first of these that answers, in order",
    "base": [
      "https://facilitator.xpay.sh",
      "https://v2.facilitator.mogami.tech",
      "https://facilitator.payai.network",
      "https://facilitator.heurist.xyz"
    ],
    "base-sepolia": [
      "https://x402.org/facilitator",
      "https://facilitator.xpay.sh",
      "https://v2.facilitator.mogami.tech",
      "https://facilitator.payai.network"
    ]
  },
  "scenarios": {
    "/402/pay": "Returns 402 with x402 v2 requirements (Base Sepolia unless you ask for mainnet with /402/pay/base or ?network=base). Send a valid PAYMENT-SIGNATURE and the payment is verified and settled through a facilitator; you get a 200 with a PAYMENT-RESPONSE receipt and the transaction hash.",
    "/402/never": "Always 402, with perfectly valid requirements. Any PAYMENT-SIGNATURE you send is ignored. Nothing is verified or settled. Does your client stop after one retry, or loop and re-sign forever?",
    "/402/reject": "Valid 402; then every payment is rejected with a 402 carrying an error (default insufficient_funds; pick another with ?reason=). Nothing is settled. A client should surface the reason and stop, not re-sign.",
    "/402/slow": "Valid 402; after you pay, the server sits on the request for ?seconds= (default 8, max 10) and then answers 504 with no receipt. In the real world you would not know whether you were charged. Here, nothing was.",
    "/402/crash": "Valid 402; after you pay, a 500 with no PAYMENT-RESPONSE. A real server might have settled before it crashed. This one never does. Does your client treat this as \"paid\" or \"unpaid\"?",
    "/402/bad-receipt": "Valid 402; after you pay, a 200 whose PAYMENT-RESPONSE header is not valid base64 JSON. Nothing was settled. Does your client still hand you the body, or throw it away because the receipt is bad?",
    "/402/overpriced": "A valid 402 that asks for 1,000,000 USDC. A client with a spending limit should refuse to sign. If yours signs anyway, the response says so; the authorization is discarded and never settled. A less friendly server would have taken it.",
    "/402/wrong-network": "A valid-looking 402 whose only option is on eip155:424242, a chain nobody runs. A client should report \"no supported network\" and not sign. Nothing can be settled here by anyone.",
    "/402/broken": "GET /402/broken lists the flavors: not-base64, not-json, no-accepts, empty-accepts, no-extra, no-resource, version-99, decimal-amount, missing-header, v1-body. Each is a 402 that a sloppy client will mis-parse."
  },
  "only_this_one_settles": "/402/pay",
  "pay_urls": {
    "base": "/402/pay/base",
    "base-sepolia": "/402/pay/base-sepolia"
  },
  "verified": {
    "as_of": "2026-08-23",
    "exercised": "official @x402/fetch 2.23.0 client: parses the 402, signs, this server matches \"accepted\" and forwards to a facilitator, which answered insufficient_funds for the unfunded test payer (every facilitator in both chains, plus failover)",
    "not_yet_exercised": "settlement and the PAYMENT-RESPONSE receipt; the first funded payment is the test"
  }
}
