Payment receipt for an x402 or USDC payment from its transaction hash
Turn a settled x402 or USDC payment into a receipt to file: from the transaction hash, the payer, payee, amount, time, block, status and whether it was an EIP-3009 authorization (the x402 exact scheme), on Base, Ethereum, Arbitrum, Optimism or Polygon, with a stable receipt id and a SHA-256 of a canonical text for bookkeeping. Optionally name what was bought. Never signs. Use to keep proof of a purchase after an agent pays.
Inputs
| Name | Type | Description |
|---|---|---|
hash (required) | string | Transaction hash of the payment (0x, 64 hex characters) |
chain | string | Network: base (default), eth, arb, op or polygon. One of: base, eth, arb, op, polygon. |
payTo | string | Optional: the payee, when the transaction holds several USDC transfers |
resource | string | Optional: the URL or item the payment bought, written into the receipt |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://tools.funwords.eu/x402/receipt?hash=0x778c8c1b1fd1b320bf045eae0af7274e74a9e2e1f83c34ec96d9f825aea3b933"
Or one of your 3 free calls, no key:
curl "https://tools.funwords.eu/x402/receipt?hash=0x778c8c1b1fd1b320bf045eae0af7274e74a9e2e1f83c34ec96d9f825aea3b933&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum or Solana over x402; Base or Tempo over MPP) and retries.
Example result
{
"receiptId": "rcpt_fbcd04404acc94e2",
"chain": "base",
"chainId": 8453,
"transactionHash": "0x778c8c1b1fd1b320bf045eae0af7274e74a9e2e1f83c34ec96d9f825aea3b933",
"logIndex": 135,
"block": 56118430,
"paidAt": "2026-11-11T16:21:01.000Z",
"status": "confirmed",
"payer": "0x72c573fd7dE6a3DEc3035D48DB938ebF733D159b",
"payee": "0x6293ded2684F1A76E26bEcef87c137D691Fbf800",
"amount": "0.01",
"amountAtomic": "10000",
"asset": "USDC",
"assetAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"method": "eip3009-authorization",
"submittedBy": "0xB87E1A2cc2B4643F2892768e80e41167F17C5860",
"resource": null,
"confirmations": 30399,
"explorerUrl": "https://basescan.org/tx/0x778c8c1b1fd1b320bf045eae0af7274e74a9e2e1f83c34ec96d9f825aea3b933",
"sha256": "ebaf858615585e1ea5960d85d7002afb8c515edd1a2619555608dcb7c922499b",
"canonical": "{\"amount\":\"0.01\",\"amountAtomic\":\"10000\",\"asset\":\"USDC\",…}",
"note": "Proof that USDC moved on chain; it says nothing about what was delivered. Keep the canonical text and its hash together."
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is x402_receipt, and the first 25 successful calls are free:
https://tools.funwords.eu/mcp