x402 on Arc
Live on Arc Testnet/0x0499…1ec3

Charge per request. Settle in USDC on Arc.

A buyer deposits USDC once, then signs an off-chain voucher for every call. The facilitator redeems it on Arc, where USDC is the native asset, so there is no separate gas token, no wrapping, no bridge.

Payment unit
USDC, 6 decimals
On-chain cost
1 redeem per call
Signing
EIP-712 voucher
x402 handshake
ClientArcServer
  1. GET /api/premium
    no payment yet
  2. 402 Payment Required
    accepts: 0.01 USDC to seller, via escrow gateway
    402
  3. sign voucher
    EIP-712 (buyer, seller, amount, resource, nonce)
    sig
  4. GET /api/premium
    X-PAYMENT: eyJ2b3VjaGVy…
  5. redeem(voucher, sig)
    facilitator settles on Arc, USDC buyer → seller
    tx
  6. 200 OK
    X-PAYMENT-RESPONSE: { txHash: 0x9f3a… }
    200
1 signature, 1 on-chain redeemsettles in USDC

Why escrow, not a transfer per call

High-frequency API consumption cannot pay a transaction fee on every request. Escrow moves the chain interaction off the hot path and gives the buyer a refund route and the operator a place for fees or disputes.

01Deposit

Prefund the escrow

The buyer deposits USDC into the gateway contract once. Signing a voucher afterward is free and instant.

02Sign

One voucher per request

Each call is authorized by an EIP-712 voucher over buyer, seller, amount, resource and nonce. No transaction to sign per request.

03Redeem

Settle on Arc

The facilitator verifies the signature and escrow balance, then redeems on-chain, moving USDC to the seller.

04Refund

Time-locked withdrawal

Unused balance is withdrawable after a cooldown, so in-flight vouchers cannot be rugged by an instant withdraw.

Run the real handshake

Live gateway on Arc Testnet0x049914870eF36AbC7c92E390937A012bEd1E1ec3

Connect a wallet on Arc to fund escrow and call the paid endpoint.
x402 on Arcescrow payment gateway
USDC-native settlement, Arc L1