Clear your x402 payments through hcrb.in

Buyers pay your wallet directly. hcrb.in verifies each payment, submits it through a facilitator and signs a receipt. It never holds the funds and takes no share of them.

1. Get a key

Buy settlement credits. Your key starts with ck_live_. Checking a payment is free. A settlement uses one credit, and only after the transfer to your wallet is confirmed on chain. A payment that fails uses none.

SettlementsPriceAfter the first payment
500£9 by cardOne payment. Never tops up.Get this pack
5,000£39 by cardTops up automatically. See below.Get this pack
75,000£399 by cardTops up automatically. See below.Get this pack
300$1.00 in USDC on BaseOne payment. Never tops up.Get this pack

Automatic top-up. The £39 and £399 packs when paid by card. Not the £9 pack, not USDC, and not cards billed in INR. Your card is saved. When the balance falls to 500 credits or fewer it is charged £39, or the same amount in your billing currency, for 5,000 more credits. To turn it off: POST /v1/operator/auto-recharge?key=<your key>&enabled=false

2. Point your x402 server at the facilitator

Use https://api.code402.dev/facilitator as the facilitator URL and send your key with every call:

Authorization: Bearer ck_live_<key>

X-Facilitator-Key: ck_live_<key> works as well. Keep your own wallet as the payee in the 402 your API returns.

3. Verify, then settle

Both calls take the body a standard x402 server already sends to its facilitator:

{
  "x402Version": 2,
  "paymentPayload": {
    "x402Version": 2,
    "resource": {
      "url": "https://your-api.example/report",
      "mimeType": "application/json"
    },
    "accepted": {
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "25000",
      "payTo": "0xYourWallet",
      "maxTimeoutSeconds": 300,
      "extra": {
        "name": "USD Coin",
        "version": "2"
      }
    },
    "payload": {
      "signature": "0x<buyer signature>",
      "authorization": {
        "from": "0xBuyerWallet",
        "to": "0xYourWallet",
        "value": "25000",
        "validAfter": "0",
        "validBefore": "<unix seconds>",
        "nonce": "0x<32 bytes>"
      }
    }
  },
  "paymentRequirements": {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "25000",
    "payTo": "0xYourWallet",
    "maxTimeoutSeconds": 300,
    "extra": {
      "name": "USD Coin",
      "version": "2"
    }
  }
}

POST /facilitator/verify answers:

{
  "isValid": true,
  "facilitated_third_party": true
}

POST /facilitator/settle answers:

{
  "success": true,
  "transaction": "0x<transaction hash>",
  "payTo": "0xYourWallet",
  "operator_credits_remaining": 299,
  "receipt_id": "<receipt id>",
  "verify_url": "<public link to the signed receipt>"
}

Endpoints

CallCostWhat it does
GET /facilitator/supportedfreeNetworks and tokens the facilitator accepts
POST /facilitator/verifyfreeCheck a buyer's signed payment before you do the work
POST /facilitator/settle1 credit on confirmed settlementSubmit the payment to your wallet
GET /v1/exports/camt053?from=YYYY-MM-DD&to=YYYY-MM-DDfreeXML statement of the settlements paid to your wallets. Your key sees only its own.
GET /v1/operator/auto-recharge?key=<your key>freeWhether automatic top-up is on for your key. POST with enabled=false turns it off.

Errors

StatusCodeMeaning
422PAYEE_NOT_THIS_OPERATORNo seller key was sent for a payment to a wallet that is not ours.
402FACILITATOR_QUOTA_EXHAUSTEDThe key has no credits left.
402settlement failedThe buyer's payment did not settle. No credit is used.
403OFAC_SANCTIONS_BLOCKEDThe payer or payee wallet matched the sanctions list. The screen is exact-match and is not a clearance.
403STATUTORY_COMPLIANCE_GATE_BLOCKEDThe check that runs before settlement refused the payment. Nothing was submitted and no credit is used.
422BELOW_CLEARINGHOUSE_PRICE_FLOOR_10000_ATOMICThe payment is below the minimum for seller payments, 0.001 USDC.
503RECEIPT_SIGNER_UNAVAILABLEThe service cannot sign receipts at the moment. Nothing was submitted. Try again later.

What this is and is not