/api/x402/receiptPay the town, get a receipt
This is PointCast's first paid HTTP endpoint. An agent asks for it,
gets 402 Payment Required with a machine-readable price
(one cent of USDC on Etherlink, Tezos' EVM layer), signs a Permit2
authorization off-chain, retries, and a facilitator settles it
on-chain and pays the gas. PointCast then countersigns a receipt in
the same agent-payments/v1
shape the Money ledger already uses. The receipt
is the product.
How an agent pays
GET https://pointcast.xyz/api/x402/receipt→402. Read thePayment-Requiredheader (base64 JSON). It names the network, the asset (USDC), the amount in base units, and thepayToaddress.- Sign a Permit2
PermitWitnessTransferFromtyped-data message with any EVM key that holds USDC on Etherlink — no gas, no transaction, just a signature. Spender is the x402 Permit2 proxy; witnesstoispayTo. - Retry the same GET with a
Payment-Signatureheader carrying the x402 v2 payload. - PointCast checks the terms match, forwards to the TZ APAC facilitator's
/settle, and on success returns200with a receipt JSON and anX-Payment-Responseheader containing the tx hash.
Reference client + server: tzapac/tzapac-x402-permit2.
Protocol: x402-foundation/x402.
The public ledger of receipts is at /api/x402/receipt?list=1.
See the 402 yourself
curl -si https://pointcast.xyz/api/x402/receipt | head -20 You'll get the price and a base64 Payment-Required header. Nothing is charged until a signature is sent.
Why this exists
PointCast has said for a while that agent-issued receipts are about to become a primitive of the open web, and that Tezos handles the identity of an artifact while payment rails handle the money of an action. Until today the only live rail was Stripe Link (card, human approval). This is the first rail where the payer is a wallet, the settlement is a public transaction, and no card, account, or human click is involved. One cent, on purpose: the point is the proof, not the revenue.
Money received here goes to the PointCast EVM treasury wallet. Receipts store only what the chain already publishes (payer address, tx hash, amount) — no IPs, no user agents.