The problem
At month end, $812 left the wallets. Finance needs to know where it went.
Agents buy data, model calls and tools over x402, a fraction of a cent at a time, thousands of times a day. No purchase order, no approver, no invoice in anyone's inbox. All of it reaches finance as a single line: a transfer into a wallet.
Funding is not the expense
The transfer into the wallet is funding. The expenses are the thousands of payments to suppliers that follow, and those are the ones nobody books.
Self-written logs are not evidence
An export from your own agent framework is a document you wrote about yourself. An auditor will ask for something checkable against a source you don't control.
Unmatched payments go unnoticed
A payment with no receipt behind it is invisible at half a cent and material at a hundred thousand calls.
How it works
Capture, reconcile, report. Two of the three steps run without you.
Capture
one-file SDK · no credentials
A single-file SDK wraps the fetch your agents already pay with. Each purchase becomes a receipt: supplier, amount, network, transaction reference, and whether it was delivered.
Reconcile
automatic · against the chain
x402receipts reads the connected wallets directly on Base and Solana and matches every outgoing payment to a receipt. What doesn't match is flagged, not averaged away.
Report
whenever finance signs in
Finance signs in with a wallet and gets the month: total spend, spend by supplier, the full register, an export for the books.
Every line ends in one of four states, and the two that need a person are the ones the register puts first.
Money left the wallet, nothing was recorded. Usually an agent running without the SDK, or a transfer that wasn't a purchase.
Paid, but the supplier returned an error or nothing at all.
Captured and matched, evidence not yet anchored — anchored every night.
Captured, matched on-chain and anchored. The evidence can be checked by anyone with the link.
What finance gets
September 2026 — agent spend — $812.40
A month opens on the totals, then reads day by day: what the agents spent, how many receipts, what went unmatched, and that day’s signature on the public ledger. Open a day to see every transaction in it.
| Day | Spent | Receipts | Issues | Ledger | |
|---|---|---|---|---|---|
| Fri 25 Sept | $31.40 | 1,180 | 1 no receipt | Signed on Hedera · #28 ↗ | Open ↗ |
| Thu 24 Sept | $28.90 | 1,402 | — | Signed on Hedera · #27 ↗ | Open ↗ |
| Wed 23 Sept | $30.10 | 1,356 | 2 no receipt | Signed on Hedera · #26 ↗ | Open ↗ |
| Tue 22 Sept | $26.80 | 1,199 | — | Signed on Hedera · #25 ↗ | Open ↗ |
| Mon 21 Sept | $29.55 | 1,318 | — | Signed on Hedera · #24 ↗ | Open ↗ |
| September 2026 | $812.40 | 41,227 | 4 | 41,226 of 41,227 receipts signed on the ledger | |
41,227 receipts · 3 payments with no receipt, listed · fingerprint written to the public ledger
The layout is the real product — open a live one. The figures are an example.
Exports for the books
Download the month as CSV or as a signed JSON export. Each export carries the receipt hashes, batch references and transaction references, so a figure in your books can be traced back to the payment it came from.
Drill-down at every level
Month total → supplier → payment → receipt → transaction hash → anchored proof. Every level links to the next.
A statement you can hand over
Close the month and x402receipts issues a period statement: per wallet, how many payments left it on-chain, how many have a receipt, and which do not — with its fingerprint written to the public ledger, so the claim can't be revised afterwards. See one.
Evidence
Anyone can check the records. Starting with someone who doesn’t trust us.
Every receipt gets a fingerprint. Each night the day’s receipts are folded into a single value and written to a public ledger, timestamped by a network neither you nor we control. From that moment a record cannot be altered without the fingerprint failing to match. The format is public domain: ARR-1 defines the record, the fingerprint, the anchor and the proof, so anyone can implement it and anyone can check ours.
Verification without a login
Every line has a public page that redoes the maths in the reader’s browser and reads the ledger directly, not through us. Sharing the link is sharing the proof.
The supplier’s own signature
Where a supplier signs its receipt under the x402 offer-receipt extension, we capture it and verify it. That is evidence from the counterparty, not only from you.
Integrity is not enough
A signed log proves nothing was changed. It cannot prove nothing is missing. That is settled against the chain, which you don’t control.
Pricing
One cent per agent, per day it spends.
The agent's own wallet pays with its first upload of the day, over x402, and records freely for the rest of it. A day it buys nothing costs nothing. No subscription, no minimum, no procurement cycle to start.
Per agent wallet
Settled in USDC on Base or Solana by the paying wallet, once on each day it records. At most $0.31 in a month. Unlimited receipts. Nothing is billed to the company.
The first payment creates the account and opens the day.
Included
No tiers: the same cent whether an agent buys ten things that day or a million. An agent that traded on twenty days of the month pays twenty cents. Fleet terms on request: hello@x402receipts.com.
Questions
The ones worth asking first.
Is this an accounting system?
No. It is the subledger for one spend category — autonomous agent payments — with the evidence attached. It produces reconciled records and exports that feed your accounting system; it does not replace it.
Who pays, and how much?
The agent's own wallet pays $0.01 in USDC over x402 with its first upload of a day; every upload after that is free until the day ends. Days it buys nothing cost nothing, so an agent that traded on twenty days pays twenty cents and the ceiling is $0.31 a month. No subscription to manage, no minimum. Fleet terms on request.
Which networks and assets are covered?
x402 payments in USDC on Base and Solana. Wallets on both networks can be connected and read.
Do you hold our money, our keys or our data?
None of the three. x402receipts never holds funds, never sees a private key and is never in the payment path, so if it went down your agents would keep buying exactly as before. We store the receipt and the payment record, never the contents of a request or a response, only their fingerprints. A public status page reports whether everything is running.
What exactly does an auditor receive?
The period statement: per wallet, the payments seen on-chain, how many have a receipt, and the unmatched ones with their settlement references — plus every daily group and where its root sits on the ledger. Its fingerprint is anchored too, so a closed period cannot be quietly revised. Every line drills down to the receipt and its own proof.
Does this make us compliant with anything?
No, and be cautious of anyone who says otherwise. Compliance remains your obligation. What x402receipts provides is a complete, independently timestamped record that you did not write yourself.
Integration
One wrapper around the fetch your agents already pay with.
The SDK is a single TypeScript file with no dependencies. It wraps the fetch your agents already pay with, records each paid call in the background, and never throws or delays a request.
Three lines
const register = withRegister(fetch, {
endpoint: "https://app.x402receipts.com",
payWith: () => pay,
});
const pay = wrapFetchWithPayment(register, wallet);No credentials to manage
There is no API key. The wallet is the identity: the first paid receipt creates the account, and whoever owns the wallet claims it with a signature.
Also
REST endpoint POST /api/v1/receipts, $0.01 per wallet per active day over x402 · public status page · llms.txt and an agent card for programmatic discovery · listed in the Coinbase x402 Bazaar.
The integration prompt
Paste it into the AI coding tool that maintains your agents. It carries the wiring and the verification step, and no secrets.
Connect this project's AI agents to x402receipts, a service that records every x402 purchase they make so we can prove it later. There is no signup and no API key: the agent pays x402receipts USD 0.01 (in USDC, over x402) from the same wallet it already uses for x402, on Base or Solana, the first time it records on any given day; that wallet is its account and every upload for the rest of that day is free. Days it buys nothing cost nothing, so the most it can ever pay is 31 cents in a month.
Context
- x402receipts endpoint: https://app.x402receipts.com
Do this
1. Download the x402receipts SDK into the project: fetch https://app.x402receipts.com/sdk and save it as lib/x402receipts-sdk.ts (or wherever shared code lives). It is one TypeScript file with no dependencies.
2. Find where the agents pay over x402: the place that calls wrapFetchWithPayment from "@x402/fetch" (or withPaymentInterceptor from "@x402/axios", or any fetch wrapper that handles HTTP 402).
3. Wrap the fetch passed to that payment wrapper with withRegister, and give withRegister the paying fetch so it can pay for its own uploads:
const register = withRegister(fetch, { endpoint: "https://app.x402receipts.com", payWith: () => pay });
const pay = wrapFetchWithPayment(register, wallet);
(payWith is lazy on purpose: it may reference the wrapper that wraps it.)
4. Change nothing else about how the agents work. withRegister never throws and never delays a request; it reports in the background.
5. Verify: run one real paid request. Within a minute, POST https://app.x402receipts.com/api/v1/receipts from the agent will have been paid and answered 200. The owner sees the purchase at https://app.x402receipts.com after connecting the agent's wallet under Wallets (one signature with that wallet). If it doesn't arrive, pass onError: console.error to withRegister, run again, and fix what it reports.
When you're done, tell me which files you changed, show the diff, and print the agent's wallet address so the owner knows which wallet to connect.
Give finance the ledger for autonomous spend.
Install the SDK with one prompt. Make one purchase. Sign in with the wallet and the month is already there — reconciled, with the exceptions listed and the evidence attached.