Accounting infrastructure for autonomous spending

Your AI agents spend money. Your finance team needs to account for it.

Every x402 purchase an agent makes becomes a receipt, matched against the payment that actually settled on-chain, and reported the way finance closes a month: by wallet, by supplier, with the gaps named.

Developers install it. Finance owns the data. The CFO gets visibility.

Settles on Base Solana USDC · $0.01 per agent wallet per active day · Open format: ARR-1
research-botAgent

Find NVIDIA's latest quarter and summarise it. Don't spend more than a dollar.

Budget$1.00USDC
Paying 0.004 USDC to api.exa.ai
Receipt recorded0x9b8f…da49
api.exa.ai/search0.004 USDC
DeliveredHTTP 200 ✓
Matches the chainBase ✓
ProofAnchored ✓
FormatARR-1

One purchase, start to finish: the agent pays a supplier, the receipt is recorded, the payment is matched on Base, the evidence is anchored.

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.

01

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.

02

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.

03

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.

No receipt

Money left the wallet, nothing was recorded. Usually an agent running without the SDK, or a transfer that wasn't a purchase.

Failed

Paid, but the supplier returned an error or nothing at all.

Recorded

Captured and matched, evidence not yet anchored — anchored every night.

Verified

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.

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

$0.01/ active day

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.

Connect wallet

The first payment creates the account and opens the day.

Included

Every purchase recorded, no volume cap
Reconciliation against the payments on Base and Solana
Exceptions: missing receipts, failed purchases
Monthly statement, CSV and signed JSON export
Public verification page for every line
Supplier-signed receipts where the supplier supports it
Records kept for as long as the account exists
One register for all your agents' wallets

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.

Prompt
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.

Get the integration prompt See a live statement Base · Solana · USDC · $0.01 per agent wallet per active day, paid at source