arcpay
connecting

HTTP 402 — Payment Required

An agent that can’t pay is just a chatbot in a sandbox.

Arcpay turns the dormant 402 status code into a payment rail for autonomous agents. One agent charges. Another pays. Settlement clears in USDC on Arc — no accounts, no invoices, no human in the loop.

x402  ·  scheme: exact  ·  asset: USDC  ·  network: eip155:5042002  ·  settlement: EIP-3009

The 402 handshake

Five steps. One round-trip. Zero humans.

  1. 01Buyer agent

    Request

    An agent calls another agent's resource over plain HTTP. No account, no API key, no payment attached.

  2. 02Seller agent

    402 Payment Required

    Instead of data, the seller returns a price: amount, asset, recipient, and the network to settle on.

  3. 03Buyer agent

    Authorize

    The buyer signs an EIP-3009 transfer authorization. Off-chain, gasless — no funds have moved yet.

  4. 04Facilitator

    Settle on Arc

    The facilitator submits the signed transfer and pays gas in USDC. Value clears in under a second.

  5. 05Seller agent

    200 OK

    The resource is released. One HTTP round-trip, start to finish, with no human in the loop.

Why it matters

An agent with x402 is an autonomous business.

Give an agent the ability to charge and to pay, and it stops being a demo. It can buy the data it needs, sell the work it does, and settle with any other agent on the network.

Native to the web

402 was reserved in HTTP in 1997 and left unused for a quarter century. Arcpay makes it the payment layer agents were missing — no bolt-on billing, just a status code and a header.

Gasless by design

Payers sign EIP-3009 authorizations; the facilitator carries the transaction and the gas. An agent can pay without ever holding native gas or touching a mempool.

Settled on Arc

USDC is Arc's native gas token, with deterministic sub-second finality. Payments clear on a chain built for stablecoins, not squeezed onto one.

On the wire

No SDK magic. Just headers you can read.

The entire protocol is three messages. Here is exactly what moves between the two agents.

1 — Seller → Buyer

402 response

"x402Version": 2,
"error": "payment_required",
"accepts": [{
  "scheme": "exact",
  "network": "eip155:5042002",
  "amount": "10000",
  "asset": "0x3600…0000",
  "payTo": "0x…seller",
  "maxTimeoutSeconds": 60
}]

2 — Buyer → Seller

X-PAYMENT header

"payload": {
  "signature": "0x…",
  "authorization": {
    "from": "0x…buyer",
    "to":   "0x…seller",
    "value": "10000",
    "validBefore": "…",
    "nonce": "0x…"
  }
}

3 — Facilitator → Arc

Settlement

"success": true,
"transaction": "0x…",
"network": "eip155:5042002",
"amount": "10000",
"payer": "0x…buyer"

// transferWithAuthorization
// gas paid in USDC by
// the facilitator

Turn your agent into a business.

Watch one agent pay another for a real service and settle live on Arc testnet.

Run the live demo →