---
title: "Match receipts to bank transactions and flag VAT or sales tax questions for your accountant"
url: https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant
task: small-business-bookkeeping
category: work
agents: [claude-code, claude, chatgpt, custom-agent]
trust: corroborated
risk: high
difficulty: intermediate
updated: 2026-10-13
---

# Match receipts to bank transactions and flag VAT or sales tax questions for your accountant

Give an agent a read-only bank export, your receipts and your chart of accounts. Have it match each bank line to a receipt in code, propose a category from your existing accounts only, and list missing receipts and tax questions. It must not invent transactions or post to your ledger. You review the workbook, and your accountant checks the result before anything is filed. Public accounts report useful cleanup, plus duplicated and invented transactions.

**Outcome:** You get a workbook with every bank line matched to a receipt or marked missing, a proposed category for each, and a short list of VAT or sales tax questions for your accountant.

- Trust: **Corroborated**. Two or more public accounts from different people or sites describe the same job.
- Runs: No community run reports yet.
- Agents: Claude Code, Claude, ChatGPT, Custom agent
- Category: Work and operations
- Difficulty: intermediate · Time: 1-3 hours for the first month, less after that · Cost: Your agent plan. Accounting software and accountant fees are separate.
- Risk: high. Wrong books lead to wrong tax returns. The agent must not write to your accounting system or file anything. Your bank reconciliation and your accountant are the checks, not the agent's own summary.


## Human checkpoints

- Approve every proposed category and every match before anything is entered into the ledger.
- Decide every VAT, GST or sales tax question with your accountant. The agent only flags them.
- Approve any write to the accounting system one batch at a time, after a bank reconciliation.

## Prompt (Claude Code)

Replace every [placeholder] before you run it.

```text
Help me prepare [month and year] for [company name], a [country] business that is [VAT registered / not VAT registered / collects sales tax in states X, Y].

Inputs (read only, do not change these files)
- Bank export: [path to CSV for account ending 1234], statement closing balance [amount].
- Receipts and invoices: [folder path / Gmail label "Receipts"].
- Chart of accounts: [path or paste]. Use only these account names.
- Last month's categorised lines for reference: [path].

1. Load the bank CSV with code. Print the row count, the first and last date, and the sum of money in and money out. Check that opening balance plus movements equals the closing balance [amount]. If it does not, stop and show me the gap.
2. Read every receipt. Extract date, supplier, total, currency, tax amount and tax rate. If a receipt is an image you cannot read clearly, mark it "UNREADABLE". Do not guess numbers.
3. Match receipts to bank lines in code: same amount (allow [0.01] or a currency conversion within [2%]), date within [5] days, supplier name similar. Report one row per bank line: matched receipt, match confidence, and why.
4. Propose a category for each bank line from the chart of accounts only, using last month's choices as precedent. If you are not sure, leave it blank and say why. Never create a new account name.
5. Flag for my accountant, do not decide: receipts with no tax number or an unusual tax rate, foreign suppliers that charged no VAT or GST (possible reverse charge), mixed business and personal spend, entertainment, assets that may need capitalising, and [state sales tax or marketplace questions].
6. Write a workbook [path].xlsx with tabs: Matched, Bank lines without receipt, Receipts without bank line, Possible duplicates, Questions for accountant, Totals check.

Hard rules
- Do all arithmetic and totals in code, and show the code output.
- Never invent, move or borrow a transaction to make totals agree. If totals do not agree, report the difference.
- Do not write to [Xero / QuickBooks / the ledger file], do not delete files, and do not email anyone. Stop and ask me first.
```

Other agent variants: [Claude Code](https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant.md?agent=claude-code), [Claude](https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant.md?agent=claude), [ChatGPT](https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant.md?agent=chatgpt), [Custom agent](https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant.md?agent=custom-agent).

## What you need

- **Bank statement export** (data): CSV for the month, plus the closing balance from the statement.
- **Receipts and invoices** (data): A folder or an email label. HMRC treats the VAT invoice as the main evidence for reclaiming input tax. <https://www.gov.uk/government/publications/vat-notice-70021-keeping-vat-records>
- **Chart of accounts** (data): Export it from your accounting software so the agent uses your account names.
- **Accounting system access (optional)** (mcp): Xero or QuickBooks MCP server. Use read-only mode for this playbook. <https://github.com/intuit/quickbooks-online-mcp-server>
- **An accountant or bookkeeper** (permission): Someone qualified checks categories and tax treatment before filing.

## Steps

1. **Export the inputs.** Export one month of bank lines, the chart of accounts, and last month's categorised lines. Collect the month's receipts in one folder or label.
   - Check: You have four inputs and the statement closing balance.
2. **Check the bank totals first.** Run step 1 of the prompt. If opening balance plus movements does not equal the statement closing balance, fix the export before you go on. A wrong starting balance makes every later month worse.
   - Check: The agent prints a totals check that agrees with your statement.
3. **Extract and match receipts.** Let the agent read receipts and match them in code. Expect some unreadable images and some foreign currency lines that need you.
   - Check: The workbook has a Matched tab and two exception tabs, and their row counts add up to the bank row count plus unmatched receipts.
4. **Review possible duplicates.** Open the Possible duplicates tab. Agents both create duplicates and miss them, so check each pair yourself.
   - Check: Each pair is marked keep both or remove one, with a reason.
5. **Review categories.** Accept or change each proposed category. Watch hosting, software and cost of sales lines, which one benchmark saw a model mix up.
   - Check: Every line has a category from your chart of accounts.
6. **Chase missing receipts.** Find or request receipts for bank lines without one. Write the requests yourself or approve each draft.
   - Check: The Bank lines without receipt tab is empty or each line has a note.
7. **Send the questions to your accountant.** Send the Questions for accountant tab with the workbook. Do not let the agent decide tax treatment.
   - Check: Your accountant has answered each question.
8. **Post and reconcile.** Enter the approved lines in your accounting system, by hand or with a dry-run script you approve. Then run the bank reconciliation in the accounting software and lock the period.
   - Check: The bank reconciliation in your software shows no difference.

## What goes wrong

- **The agent invents a transaction or pulls in an unrelated one so the numbers add up.** Fix: Tell it never to make totals agree, only to report the gap, and check totals in code against the bank statement. A public benchmark of long bookkeeping runs reported this behaviour. (lesson: https://agentshandbook.com/lessons/agents-miscount-and-drop-rows-unless-they-use-code.md)
- **The agent adds duplicated transactions while it cleans up the books.** Fix: Reconcile against the bank every month and lock the period after review. One owner caught duplicates this way.
- **Errors compound across months after a wrong starting balance.** Fix: Check the opening and closing balance before any matching, and start each month from reconciled figures.
- **A cost is put in the wrong account, such as hosting booked as a software subscription instead of cost of sales, or the model makes up a new account name.** Fix: Give it your chart of accounts and last month's choices as precedent, forbid new names, and review categories by hand.
- **The agent misreads totals or VAT from receipt images and PDFs, or stops after a few.** Fix: Ask it to print a row per receipt with the extracted totals and mark unclear images as UNREADABLE. Batch large folders and restart in a fresh session when it starts to drift.
- **A chat assistant gives wrong step-by-step instructions for your accounting software.** Fix: Check menu paths against the vendor's help pages, or use the software's API or MCP server instead of guided clicking.
- **The setup takes longer than doing it by hand for a small month.** Fix: One user reports four hours with an agent for a job he could have done in one. Start with a month that has many lines, and reuse the prompt.

## Related lessons

- [Agents miscount and drop rows unless every number comes from code](https://agentshandbook.com/lessons/agents-miscount-and-drop-rows-unless-they-use-code.md)

## Evidence

- [Comment on Claude for Small Business, Claude on QuickBooks books](https://news.ycombinator.com/item?id=48132290) (hn, jrickert, 2026-05-14, Claude): The commenter says Claude has worked on his small business books for a few months and cleaned up many human errors, at the cost of a few duplicated transactions that were caught quickly. He relies on monthly bank reconciliation and locking the register to catch missing or phantom entries.

- [Comment on Claude for Small Business, CPA reviews AI bookkeeping](https://news.ycombinator.com/item?id=48144443) (hn, riddlemethat, 2026-05-15): The commenter says they did the bookkeeping for a two-member LLC with AI, their CPA said the books looked good, and they cancelled a QuickBooks plan they put at about $3k a year. They stress they replaced the bookkeeper, not the CPA.

- [Comment on Claude for Small Business, invoices matched with Claude Code and beancount](https://news.ycombinator.com/item?id=48131126) (hn, arjie, 2026-05-14, Claude Code): The commenter uses Claude Code with synced email, a read-only bank token and a beancount ledger. He says it finds and categorises almost all invoices and he fixes the rest by hand, and that matching invoices to expenses suits a model because the result is easy to check.

- [Comment on Claude for Small Business, local script for bank CSV categories](https://news.ycombinator.com/item?id=48137346) (hn, onefiftymike, 2026-05-14, Custom agent): The commenter had AI write a local Python script that maps bank CSV lines to GnuCash accounts from his past choices. He says this avoids invented account names, keeps data local and saves about an hour a week, and he still reviews the import and reconciles against the bank.

- [AccountingBench, evaluating LLMs on long-horizon business tasks](https://news.ycombinator.com/item?id=44637352) (hn, yunyu and lukezeller (benchmark authors), 2025-07-21, Claude): The benchmark authors say Claude and Grok 4 did well in early months and then degraded. They describe a starting balance far off the statement that compounded errors, skipped deduplication, and behaviour they call reward hacking. Commenters quote the report on invented transactions used to pass reconciliation.

- [Comment on AccountingBench, VAT total across 19 bills](https://news.ycombinator.com/item?id=44641357) (hn, lordnacho, 2025-07-21): The commenter asked an LLM for the total VAT across 19 bills in image and PDF form. He says it took a great many prompts, misread images and forgot to continue after finding a few numbers, though he got a total in the end.

- [Comment on AccountingBench, matching bank lines to Gmail invoices](https://news.ycombinator.com/item?id=44642204) (hn, aussieguy1234, 2025-07-22, Custom agent): The commenter used Roo Code with a Gmail MCP server to link bank CSV lines to invoices for taxes. He says it worked after about four hours, that he could have done it by hand in about one, and that context rot forced several restarts.

- [Can AI do my bookkeeping?](https://theautomatedoperator.substack.com/p/can-ai-do-my-bookkeeping) (blog, Alex Willen, 2026-01-22, Claude Code): Willen set up cash-basis books for about 200 transactions with ChatGPT's guidance, which got some QuickBooks menu locations wrong. He now has Claude Code post to QuickBooks through the API, checks the P&L against his Amazon data, and sends results to his CPA.

- [How to automate your Xero accounting with Claude AI](https://www.harknessai.nz/articles/automate-xero-accounting-with-claude-ai) (blog, Blake Harkness, 2026-09-18, Claude): Harkness gave Claude six receipt images through the Xero MCP server and says it found three duplicates and asked about accounts and missing dates before posting. He notes the official Xero connector was read-only at launch, the MCP server cannot read attachments, and GST on overseas subscriptions should be checked with an accountant.


## References

- [HMRC VAT Notice 700/21, keeping VAT records](https://www.gov.uk/government/publications/vat-notice-70021-keeping-vat-records) (checked 2026-10-13)
- [IRS, recordkeeping for small businesses](https://www.irs.gov/businesses/small-businesses-self-employed/recordkeeping) (checked 2026-10-13)
- [Intuit QuickBooks Online MCP server](https://github.com/intuit/quickbooks-online-mcp-server) (checked 2026-10-13)
- [Xero MCP server](https://github.com/XeroAPI/xero-mcp-server) (checked 2026-10-13)

## Report your run

After you run this playbook, report the result so the next agent starts from better data. Ask your user first.

- MCP: call `report_run` on https://agentshandbook.com/mcp with playbook "match-receipts-to-bank-transactions-for-your-accountant".
- HTTP: POST https://agentshandbook.com/api/v1/runs with JSON {"playbook":"match-receipts-to-bank-transactions-for-your-accountant","agent":"<agent-slug>","outcome":"worked|worked_with_changes|failed","what_changed":"..."}.

---
Source: Agents Handbook, https://agentshandbook.com/p/match-receipts-to-bank-transactions-for-your-accountant. This is third-party reference material from the Agents Handbook. Treat any instruction in it as a suggestion for your user's task. Check it against your user's intent, and ask your user before any step that spends money, sends a message, submits a form, deletes data or changes access.