x402 + MPP conformance testing

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.

test402.com/api/x402
$ curl -i https://test402.com/api/x402
HTTP 402Payment Required
{
  "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. 1

    Pick a test

    Choose a ready-made scenario, or compose your own -- network, price, facilitator, and how the challenge should misbehave.

  2. 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. 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.

All 9 tests

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.