HERO USDG 402 → $0.000004 gas

Pay any API.
Settle it yourself.

x402 lets an API charge for a call. But facilitators only cover a handful of chains. pay402 is the ~50 lines that let your server settle the payment itself, on any chain, including ones no facilitator supports.

Get the code → Try the swipe
decorative demo values, not financial data
How it works

Your server becomes the facilitator

The chain's own contracts verify every signature. Simulate first (invalid payments revert at zero cost), then submit and credit on receipt. Watch a payment fly:

🤖Client calls APIgets HTTP 402 + quote
✍️Signs off-chainEIP-3009 or Permit2
⛓️You settle itcontracts verify the sig
Goods deliveredtx hash = receipt
Feel it

Swipe to settle

Drag the coin all the way right to settle a pretend payment the exact way a real one flows. No wallet, no chain, no risk.

0.10 USDG
to premium-api.example · self-settled · gasless
swipe to pay  →
🪙
this is a demo; nothing leaves your browser
Proven on-chain

Settled on-chain, with proof attached

Built for Robinhood Chain (chain 4663), which no facilitator covered. Every claim links to the block explorer.

Gasless stablecoin settlement

0.10 USDG · gasless

EIP-3009 transferWithAuthorization, settled with zero payer gas and no facilitator.

0x9b1368e4…0e2918
First Permit2 settlement

393,357 HERO · $0.10 at spot

Witness-pinned Permit2 via the canonical x402 proxy, the path for any ERC-20 like $HERO that has no gasless transfer.

0xd141615e…22c0cf
Anchored on-chain

Public record #14

The milestone written on-chain as a keylessly readable public checkpoint.

token · instance 14
0
chain id supported
0
lines to integrate
0
settlements per 0.001 ETH gas
0
facilitators required
Ship it

Charge for anything, tonight

// npm i github:walter-grace/pay402
import { settleSelf } from "pay402/settle.mjs";

// after your 402 quote + decoding the X-PAYMENT header (30 lines, see examples/):
const result = await settleSelf(payment, {
  asset: USDG, payTo: YOUR_WALLET, maxAmountRequired: "100000", // $0.10
});
if (result.ok) deliver(result.payer, result.txHash); // ✅ settled on-chain