AI Receipt Capture and Bank Categorisation: A Bookkeeper's Setup

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Receipt Capture and Bank Categorisation: A Bookkeeper's Setup.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Receipt Capture and Bank Categorisation: A Bookkeeper's Setup.

Set it up per client in this order: decide which system owns each transaction type, pick one capture tool (Dext, Hubdoc or the ledger's own), close every other submission route, write supplier rules for the top payees, add bank rules alongside the ledger's AI, then review exceptions weekly. Allow two to four hours per client and a month of tuning.

The reason for that order: receipt capture and bank categorisation are two separate engines that both guess, and most of the mess in automated books comes from where they overlap. A fuel receipt photographed in the app, emailed to the capture address and then matched against a bank line coded by a rule can end up posted twice or coded two ways. Deciding up front which system is the source of truth for each kind of transaction prevents most of it.

Follow me on Instagram@sagnikteaches

Stage 1: decide what each system is responsible for (30 minutes)

Before touching settings, write a short responsibility map for the client. Here is a filled-in one for an illustrative mortgage adviser client who runs a two-person firm on Xero:

Connect on LinkedInSagnik Bhattacharya
Transaction typeCaptured byCoded byMatched how
Supplier bills (software, rent, compliance fees)Hubdoc, via supplier email forwardingSupplier rules in HubdocBill matched to bank payment in Xero
Card receipts (travel, meals, stationery)Hubdoc mobile app, by the adviserSupplier rules, then reviewerReceipt matched to card line
Commission income from lenders and insurersNot captured (statements filed monthly)Bank rule by payer nameRule, reviewed monthly against statements
Bank charges and interestNot capturedBank ruleAuto-reconciled
Owner drawings and transfersNot capturedReviewer only, never a ruleManual

The last row matters most. Transfers between the owner's accounts and drawings are exactly what an AI suggestion engine gets wrong, because the same payee name can mean a loan, a wage or a personal transfer. Keeping them out of automation from day one saves hours of year-end unpicking.

Subscribe on YouTube@codingliquids

Stage 2: pick one capture tool per client (15 minutes, once)

The choice is mostly decided by the ledger and the volume. Dext versus Hubdoc on time saved goes deeper; the short version:

  • Hubdoc is included with Xero's business-edition plans, or $12 a month on its own. It reads header details such as supplier, date and amount, but it doesn't automatically extract line items; you enter those or save them in a supplier rule, and Xero has said it doesn't plan further line-item development. Good for clients with a steady trickle of simple bills.
  • Dext is sold to practices per client per month with a ten-client minimum (annual billing takes 13% off). Its Practice Essentials plan covers capture from every submission method, extraction and categorisation, bank statement extraction, supplier rules with auto-publish, expense claims and supplier statement reconciliation, and it publishes to more than 36 accounting systems. Better for clients with high volumes or mixed-item receipts.
  • The ledger's own capture. QuickBooks accepts receipts directly, and Xero announced Smart Document Capture in July 2026: bill and receipt capture built into the ledger and free on every Xero plan. For a client with fewer than 20 receipts a month, that is often enough, and one less tool to maintain.

Whatever you pick, don't run two capture tools for one client. Two tools means two sets of rules and a duplicate risk on every document.

Applied to three illustrative clients from one bookkeeper's list, the rule sorts quickly. A café on QuickBooks brings in around 200 receipts a month, many of them cash-and-carry slips mixing stock, cleaning supplies and the odd staff lunch: Dext, because line-item splitting will earn its fee within weeks. A sole-trader architect on Xero gets about a dozen bills a month from the same software, insurance and printing suppliers: Xero's built-in capture, because there's nothing to split and no extra subscription to justify. A letting agent on Xero sits in between with 60 simple utility and contractor bills: Hubdoc if the practice already runs it for similar clients and has rules to copy across, otherwise the built-in option first. Record the reason next to each client, so when the volume changes you know which assumption to revisit.

Stage 3: close every other way in (20 minutes)

Give each client exactly two submission routes: the capture tool's email-in address for anything that arrives by email, and its mobile app for paper. Then close the rest: ask suppliers to send bills only to the capture address, stop the client forwarding receipts to your personal inbox, and turn off any separate "attach receipt" habit in the banking app if it feeds the ledger too.

Put the new routes in writing, because a verbal "just send them to the app" is forgotten by the second week. A filled-in version of the note sent to the mortgage adviser client:

Subject: Where to send receipts and bills from 1 [month]

Hi [first name],

From 1 [month], there are only two ways in for paperwork:
1. Anything emailed to you (bills, invoices, online receipts):
   forward it to [capture address]. I've asked your software,
   compliance and office suppliers to send there directly.
2. Paper receipts: photograph them in the app the same day,
   then keep the paper in the box file until year end.

Please don't email receipts to me or send photos by message.
If something doesn't fit either route, ask before sending it.

Thanks,
[bookkeeper]

Duplicates are how open routes show up, as they did for an illustrative recruitment agency client. The agency's job-board subscription invoice arrived by email and was forwarded to the capture address. The office manager also photographed the printed copy "to be safe". Both published. Nothing looked wrong until the supplier's balance showed the agency owing $1,100 it had already paid. Dext and similar tools do flag likely duplicates, but only if someone acts on the flag; closing the second route stops it happening at all.

Stage 4: supplier rules for the top payees (60 to 90 minutes)

You don't need rules for every supplier. In most small-business books, a couple of dozen payees make up the bulk of the documents. Find them from the client's history rather than from memory. Export six months of coded transactions (date, payee, amount, account) and use a chat assistant on a business plan to do the sorting:

Below is six months of coded transactions for one client.
1. List every payee with 3 or more transactions, most frequent first.
2. For each, show the account(s) it was coded to and how many times.
3. Flag any payee coded to more than one account.
4. Don't merge payees unless the names match exactly.
Return a table: Payee | Count | Account(s) | Consistent? (Y/N)
{paste export}

An illustrative extract of what comes back for the recruitment agency:

Payee               | Count | Account(s)                    | Consistent?
JOBBOARD SUBSCR     | 6     | Advertising (6)               | Y
AMAZON              | 14    | Office costs (9), Equipment (3),
                    |       | Drawings (2)                  | N
AMAZON WEB SERVICES | 6     | Software (6)                  | Y
FUEL STATION 22     | 11    | Motor expenses (11)           | Y
CITY PARKING        | 8     | Travel (8)                    | Y

Two fixes before you trust it. First, check the model obeyed the "don't merge" instruction; in a realistic slip it lists "AMAZON" once and quietly folds the cloud-hosting bills into it, which would have created a rule coding hosting as office costs. Second, the inconsistent payees are the finding: "AMAZON" coded three ways is a payee that must never get an auto-publish rule. The consistent ones become your first supplier rules, each with a default account, the tax treatment you use for that supplier, and auto-publish left off until the supplier has come through cleanly for three months.

A completed rule for the fuel supplier, as it would be set up for the agency, has five parts:

  • Supplier name as the tool reads it: FUEL STATION 22, and the variant "FUEL STN 22" that appeared on two older receipts, both mapped to the same supplier record.
  • Default account: Motor expenses, because all eleven past transactions went there.
  • Tax treatment: the client's usual rate for fuel, confirmed with whoever does their tax return rather than copied from the last receipt.
  • Payment method: business card, so the receipt looks for a card line to match rather than creating a bill to pay.
  • Auto-publish: off, with a note in the file to review it after three clean months.

The payment method is the setting people skip. Leave it on "unpaid bill" and every fuel receipt creates a bill in accounts payable while the card payment sits unmatched in the bank feed, so the supplier appears to be owed money that has already left the account.

Stage 5: bank rules first, then the ledger's AI (45 minutes)

Bank categorisation now has two layers: rules you write, and the ledger's own AI, which learns from how the file has been coded.

In Xero, Auto Bank Reconciliation (part of Xero's JAX assistant, still labelled beta in August 2026) reconciles transactions only when it's highly confident, using four methods: a direct match, one of your bank rules, memory of how you've coded similar items, or a prediction. Reconciled items sit on a Reconciled page where you can filter to just the auto-reconciled ones, see which method was used for each, and correct a line without unpicking the whole reconciliation. That filter is your weekly review queue. JAX's auto-reconciliation comes with the Growing ($55 a month) and Established ($90) plans, not Early ($25), so a small client on the cheapest plan gets bank rules and suggestions but no automatic reconciling.

In QuickBooks Online, the Accounting AI groups transactions it is very confident about under "Ready to post", suggests category, customer and vendor for the rest, and marks auto-posted items with RULE or AUTO badges. It also explains why it picked a category, which makes wrong suggestions quicker to spot. Help-centre details show the bank transaction features on all plans and AI help during reconciliation on Plus and above; features vary by edition, so check your clients' version.

Write bank rules only for payees that never vary: bank charges, rent, payroll software, lender commission receipts. The rule that causes the most damage is the broad one. In an illustrative insurance broker client, a rule saying "description contains AMAZON, code to Office costs" caught a $1,900 laptop that belonged in equipment and two personal purchases on the business card. The rule looked efficient for a month and cost an afternoon at year end. Narrow rules (exact payee plus an amount range) are slower to write and far cheaper to live with.

The broker's rule set, before and after the fix:

Before (one broad rule)After (narrow rules plus review)
Description contains AMAZON, any amount: Office costsPayee is AMAZON WEB SERVICES, $60 to $150: Software
Payee is AMAZON (marketplace), under $75: suggest Office costs, don't auto-reconcile
AMAZON marketplace, $75 or more: no rule, goes to the reviewer with the receipt

The middle row is deliberate. Below $75 the broker's marketplace spending was almost always paper, toner and cables, so a suggestion saves typing; above it, the purchase might be equipment or personal, and only the receipt tells you which.

Payments made through a payment processor need the same care. When the recruitment agency paid three different suppliers through PayPal, the bank lines read "PAYPAL *JOBBOARD", "PAYPAL *PRINTCO" and "PAYPAL *TRAINING". A rule on "PAYPAL" would have coded all three to one account. Write the rule on the full string after the asterisk, and leave any processor line with nothing useful after the asterisk to the reviewer, who can match it to the receipt in the capture tool.

Stage 6: the weekly exception review (15 to 30 minutes per client)

Automation moves your work from coding every line to checking the exceptions. The review is what keeps it honest:

  1. Clear the capture tool's review queue: anything unreadable, flagged as a possible duplicate, or above your value threshold (say $500).
  2. Filter auto-reconciled or auto-posted items from the past week and scan them by account. You're looking for anything in an account where it doesn't belong, not re-checking every line.
  3. Look at uncategorised or suggested-only items and code them. Each correction trains the ledger's memory, so be consistent.
  4. Check transfers and drawings by hand.
  5. Note any correction you made twice. Twice is the trigger to change a rule or add one.

Keep the notes short and in one place per client. An illustrative week-six entry for the mortgage adviser:

  • Auto-reconciled this week: 58 lines. Corrected: 3, a rate of about 5%, right on the one-in-twenty line.
  • Correction 1: a $64 CITY PARKING charge, correctly coded to Travel but outside the rule's $4 to $40 range, so it went to review. No change needed; an airport car park is a one-off.
  • Correction 2: a compliance software refund of $120 suggested as Sales. Recoded against Software. Second refund this quarter coded that way, so a rule was added: money in from that supplier codes to Software.
  • Correction 3: a transfer to the owner's savings account predicted as Bank charges. Recoded as a transfer. The transfer should never have reached auto-reconciliation, so the bank rule list was checked; a broad "contains BANK" rule was the culprit and was narrowed.

Two of the three corrections led to rule changes, which is the review doing its job. A week where every correction is a fresh one-off is a sign the rules are close to right.

The review is also the natural moment to chase missing receipts. Paste the unmatched card lines into a business-plan assistant with an instruction such as: "Here are card payments over $25 from the last 14 days with no receipt attached. Draft a short, friendly message to the client listing them by date, payee and amount, and asking for a photo of each through the app." An illustrative reply for a week with four gaps comes back as a tidy list with a polite opening, which is mostly usable. What to fix in a typical first draft: it added a deadline ("by Friday, or these will be treated as drawings") that no one agreed with the client, and it listed a $19 payment that sits below the $25 threshold, because models are unreliable at filtering numbers in pasted text. Delete the threat, check each line against the bank feed, and save the corrected version as the standing template so next week's draft starts closer.

A month of books, before and after

Back to the mortgage adviser client. Illustrative volumes: about 280 bank lines a month across a current account and a card, and around 90 documents (40 supplier bills, 50 card receipts).

  • Before: receipts arrive by email, WhatsApp photo and a monthly envelope. The bookkeeper spends roughly five hours a month keying and matching, plus an hour chasing missing receipts.
  • Setup: about three and a half hours: the responsibility map, Hubdoc connected with supplier forwarding, 18 supplier rules from the six-month export, 9 narrow bank rules, and a ten-minute call showing the adviser how to use the app.
  • Month one: auto-publish off for everything, so the tuning shows up: four supplier rules need a changed account, and one lender's commission appears under two payer names, which needs a second rule.
  • Month three: roughly 60% of bank lines reconcile without the bookkeeper touching them, the weekly review takes about 20 minutes, and total monthly time is nearer two hours than six.

These are illustrative figures; a client with lots of cash spending or mixed personal use will automate far less. The useful measure isn't the percentage automated but the correction rate in the weekly review. If you're changing more than about one auto-posted line in twenty, a rule is wrong somewhere.

Where AI categorisation quietly goes wrong

  • Mixed receipts. A supermarket receipt with printer paper and groceries gets one category for the lot. Dext can split a document across categories; Hubdoc needs a manual split. Ask clients to pay for business items separately where they can.
  • Refunds coded as income. A supplier refund arrives as money in and gets suggested as sales. It belongs against the original expense.
  • Transfers between the client's own accounts. The ledger may predict an expense category for a transfer to a savings account. Keep transfers manual, as the responsibility map says.
  • Renamed suppliers. When a software supplier changes its billing name, your rule stops firing and the AI starts guessing. The review catches it if you're scanning uncategorised items.
  • Price changes on subscriptions. An amount-range bank rule silently stops matching after a price rise. Widen the range once you've confirmed the new price.
  • Memory learning the wrong lesson. Code one personal purchase to office costs by accident and the ledger's memory may repeat it. Correct mistakes promptly rather than at year end.

Proving it works at 90 days

At the end of the third month, look at four numbers per client: the share of documents published without edits, the share of bank lines reconciled automatically, your correction rate in the weekly review, and how many working days after month end the books are ready. Compare them with the month before setup. If the correction rate is falling and close is quicker, extend auto-publish to more suppliers. If not, go back to the rules rather than adding more automation on top.

The same logic applies to the reconciliation step itself; automating bank reconciliation and checking the matches covers the review of auto-matches in more depth, and using AI to spot errors in client books adds a monthly anomaly check on top. Clients who spend on personal cards for the business are better handled through an expense-claims workflow than by stretching receipt capture to cover them.

Receipt capture and bank coding: common questions

Should auto-publish be switched on for a brand-new client?

Not straight away. Run the first two or three months with every document going to review, so you can see how the tool reads that client's suppliers. Switch auto-publish on supplier by supplier once a supplier's documents have come through correctly several times in a row, and keep anything above your review threshold going to a person.

Do clients still need to keep paper receipts once they are captured?

It depends on the record-keeping rules that apply to the client and on the tool's storage terms, so check with the client's tax adviser or the relevant authority's guidance rather than assuming a photo is enough. Practically, make sure the capture tool keeps the original image and that the client can export it if they ever change bookkeeper.

How much does this cost per client?

For Xero clients, Smart Document Capture is free on every plan. Hubdoc is included with Xero business-edition plans or costs $12 a month on its own. Dext is priced per client per month with a ten-client minimum, and annual billing takes about 13% off, so use its calculator for your client count. The larger cost is setup: allow two to four hours per client, plus a month of tuning.

Further reads

Sources: Dext Help Centre (plans for accountants and bookkeepers) and Dext partner pricing page; Hubdoc pricing page; Xero Central (data extraction in Hubdoc); Xero product update, What's new in Auto Bank Reconciliation (August 2026); QuickBooks help, Accounting AI features.

Want capture and bank coding set up across your clients?

On a 1:1 call we'll look at your client list and ledgers, decide which capture tool fits each group, and plan the supplier rules and review routine so auto-posting stays trustworthy.

Book a 1:1 call with me