How do I find what a year of bank transactions actually says?
Classify every line before summarising anything, and keep transfers between the client's own accounts out of income. A credit matched to an equal debit from another account they own is not revenue, and refunds netted against the spending they reverse are not income either. Those two rules alone routinely move a year's stated income by more than ten per cent.
Section 01
Transfers are the largest single correction
Money moved from a savings account to a current account produces a credit that looks exactly like revenue in the receiving account. A year of that inflates income by whatever was moved, and the total still reconciles perfectly against the bank.
Catching it needs both sides present, which is the argument for loading every account rather than the trading one. A credit matched to an equal and opposite debit within a few days is a transfer, and the pairing should be listed so a human can disagree with it.
In one worked example, $486,200 came into the accounts across the year. How much of that is income depends entirely on which lines turn out to be transfers.
Section 02
Merchants before categories
A statement says SQ *THE COFFEE HOUSE 04, not a category. The descriptor changes when the merchant changes payment processor, so categorising the raw string produces three merchants where there is one and three category totals that are each wrong.
Normalise the merchant first, then categorise. It is more work and it is the step that makes every downstream number defensible.
Section 03
Report what did not match
Receipts matched to invoices on reference and amount will leave a residue, and part-payments need grouping back to the invoice they belong to. The residue is not a failure; it is the list somebody has to work through.
What matters is that it is counted and named rather than quietly absorbed. An unmatched receipt that disappears into a category total is a reconciliation that reports success and is not one.
Section 04
What to ask the client for
Every account, not just the trading one, because own-account transfers can only be identified when both sides are present. A CSV or OFX export beats a PDF statement: a PDF has already discarded the payment reference field, which is what invoice matching runs on.
Then the sales ledger or invoice list. It is read and handed back as a download, and the report says whether it looks related to the statements, but the figures all come from one table, so receipts are not matched against invoices for you. That half of the work stays manual.
See it on a real project
Two clients, 38% of revenue, accounted for every one of the 38 overdrawn days.
Keep reading