Every organization gets its own receipts address. AI reads what you forward, matches it to the bank charge, and attaches it as evidence on the ledger line — so the invoice is already there when someone asks for it.
Automated books answer “what was this charge?” in seconds. Then the accountant asks “where is the invoice for it?” and the answer is a founder searching Gmail, a Slack thread, the AWS console, and a co-founder’s phone at eleven at night before the filing deadline.
Receipt capture closes that gap continuously. Each document is matched to its bank charge as it arrives, so the ledger line and its proof travel together. Month end becomes one download instead of a hunt.
Your organization gets a permanent address like acme@receipts.agenticbooks.ai. Forward a PDF, a photo, or the receipt email itself — when there is no attachment, the email body is the document. Set up a Gmail or Workspace forwarding rule once and stop thinking about it.
Claude extracts the vendor, the final total, the currency, the invoice date, and the invoice number — from the innermost forwarded content, not the forwarding wrapper. Photos and images are read by the model directly. PDFs are read from their text layer, and a scanned PDF with no text to read is flagged for a manual attach rather than guessed at.
The extracted total is matched against every outgoing payment across your connected banks, cards, and Stripe. A same-currency, exact-amount match within seven days, from a sender we can verify and have seen before, attaches on its own. Anything less certain is held as a proposal with its candidates listed.
The document becomes a 📎 on the general-ledger line and an Evidence card on the transaction page. Your accountant, your auditor, and your agent all reach the same file from the same number.
A receipt attached to the wrong charge is worse than no receipt: it is false tax evidence with a confident paperclip on it. So the matcher is built for precision first. Only one path attaches automatically, and it has six conditions. Every other path proposes a match, names its candidates, and waits for you or your agent to confirm.
Vendor-name similarity never creates a match on its own. It can only narrow a set of transactions that already agree on the amount.
Documents attach to an existing bank record and to nothing else. They do not create a journal entry, do not reclassify the charge, and attach only to outgoing payments, never to money coming in. The bank feed is the source of truth; the receipt is its proof. Tools that let a receipt create an expense entry make it a second source of truth colliding with the bank feed, and duplicate postings follow. Here that failure is structurally impossible.
That boundary is enforced in code: the document pipeline cannot import the ledger and a CI check fails the build if it tries. An attachment is also never silently re-pointed — if the evidence is wrong, that is a visible decision, not a quiet update.
The proposals the matcher held are exactly the work an agent is good at: a short list of candidates, a stated reason, and a single logged action to resolve it. Over the MCP connection, Claude or any agent can list what is waiting, confirm the right candidate, and move on — with every attach recorded as an agent action on the audit trail.
Ask “which charges over $100 this month still have no receipt?” and the answer comes back ranked by value, not as a pile of coffees.
Every captured file with its status, extracted fields, and — for held proposals — the exact candidate transactions and the reason it was held.
Resolve a proposal or attach a held file to a debit. Evidence only: it never creates or changes a booking, and an already-attached document is refused rather than re-pointed.
A single charge with its classification, journal lines, provenance, and the evidence attached to it.
Open proposals and missing receipts sit on the same to-do ladder as unreviewed events and unmatched transfers, ranked by value so the £400 bill is chased before the £4 coffee.
Export any month and you get every stored document plus an index.csv whose columns are the ones the accountant’s spreadsheet already had: vendor, amount, currency, invoice date, file, status, matched transaction, bank counterparty, bank date, sender.
Stored documents that could not be matched ship in the same zip with their status, so a gap is a visible row rather than a missing file nobody notices until the audit. Attachments that could not be stored, because they were an unsupported type or over the size cap, stay visible on the Documents page instead.
Files are stored in Cloudflare R2 in the EU, encrypted at rest with AES-256, under a per-organization prefix that no other organization can reach. Storage is EU; extraction is processed by Anthropic outside the EU under contractual safeguards, and we say so rather than let one word imply both.
Downloads are short-lived signed links that force a file download. A malicious “PDF” never executes inside your browser session on our domain.
Extraction runs on Claude under our agreement with Anthropic, which does not use the data to train models. Our receiving mail provider retains inbound mail for 30 days; R2 is the durable copy. There is no inbox OAuth: we never hold your email credentials.
An automatic match is stamped on the document with how it matched and when. An attach by a person or an agent adds an append-only audit-trail row: who, which transaction, through which door, and why.
Full details in the privacy policy.
Enable receipt capture in Settings. That mints your organization’s permanent forwarding address. Add it as a forwarding rule in Gmail or Google Workspace — the confirmation email Google sends is recognized and surfaced in Settings so onboarding does not stall on it.
PDF, PNG, JPEG, and WebP attachments, plus HTML and plain-text email bodies and CSV. PDFs need a text layer: a scan with none is flagged visibly for a manual attach rather than extracted. Anything else becomes a visible “unsupported” row, never a silent drop. Attachments up to 10 MB, emails up to 25 MB, and every attachment in one email is handled separately.
It parks as “awaiting transaction” and a nightly re-match checks it against newly synced bank events. Once the charge lands, it attaches under the same rules as everything else.
No. Documents are evidence attached to an existing bank record. They never create a booking, never reclassify one, and only attach to outgoing payments, never to incoming money. This boundary is enforced in CI, not by convention.
One zip per month: every stored file, renamed sensibly, plus an index.csv with vendor, amount, currency, invoice date, file, status, matched transaction, bank counterparty, bank date, and sender. Stored documents that could not be matched ship too, so gaps are visible instead of hidden.
We do not publish an accuracy percentage yet. The matching rules are built so that a wrong extraction cannot become wrong evidence: it needs an exact-amount, same-currency, in-window, single-candidate match from a verified known sender to attach without you. Everything else asks first.
Enable receipt capture, add one forwarding rule, and the evidence files itself onto the ledger line.