
· 6 min read
Year-end bookkeeping from bank statements
Rebuilding a year of books from statements for tax time: gather, convert, reconcile, assemble, categorize, review. Where the time goes and what to check.
The job arrives the same way every year: a client with no books, a folder of statement PDFs, and a filing deadline. Rebuilding the year from statements is a standard piece of work, and it goes well or badly depending on the order things are done in. This is the order that works, with the checks that belong at each step.
Gather, and prove the set is complete
Start with a list of accounts, not a pile of files: every current, transaction or checking account, every savings account, every card, every loan, and any payment processor that pays out to the bank (its payouts will appear as deposits, but the fees and refunds live in the processor's own statements). For each account you need every statement in the year, plus the one before it, so that the first opening balance is on paper.
Ask for PDFs from online banking rather than CSV exports where you can. Most banks limit how far back a CSV export goes; statements usually go back further, and a statement carries printed balances that an export does not.
Then build a coverage sheet with one row per account per month: opening balance, closing balance, page count, received or not. Fill it from the first page of each statement before converting anything. The closing balance of one month must equal the opening balance of the next. Where it does not, a statement is missing, the account had a statement period that is not a calendar month, or two statements have been mixed up. This sheet takes an hour and saves the day where, in March, you discover that August was never sent.
Convert
Convert one statement per file, and name the output so the account and period are in the file name, for example Ops-Checking-2025-07.xlsx. You will be tracing rows back to their source later; a file name is the cheapest breadcrumb.
Use the native PDF wherever it exists. Scans and photos work too, but each one takes longer and needs more checking afterwards; the scanned statements article covers what to look for. A native PDF converts in 10 to 60 seconds, so a year of statements for a small business is under an hour of machine time, most of it spent uploading. Scans at 20 to 40 seconds a page take longer in proportion to their page count.
Choose the output for the destination. Going into accounting software, take QBO or OFX and let the software's duplicate detection do its job. Going into a spreadsheet first, take XLSX or CSV. Both come out of the same conversion, and the formats page says which program wants which.
Reconcile every statement before assembling anything
A converted statement should either reconcile against its printed running balances or, for a card statement, tie to its closing total. Read that result for every file, and fix flagged rows now, while the source PDF is open and the row is one of forty rather than one of four thousand. What the check catches explains how to read a flagged row and what the size of the difference means.
Then carry the chain across months: the last row's balance in July is the first row's starting point in August. If each statement reconciles and the chain holds, the year's arithmetic is proven for that account, and everything that follows is classification rather than data entry.
Assemble
Combine the converted months into one ledger per account, sorted by date, with columns for date, description, money out, money in, balance, and the source file. Keep the balance column: it is the audit trail that lets anyone, including you in six months, verify a row without opening the PDF.
Check the year as a whole: opening balance on the first day plus all money in minus all money out equals the closing balance on the last day. If the individual months reconciled, this passes; if it does not, two statements overlap or one is missing, and the coverage sheet shows which.
Now find the transfers. A card payment appears twice, as money out of the bank account and as money in on the card; a transfer to savings appears on both accounts. Match the pairs and tag them as transfers before categorizing, otherwise they turn into expenses on one side and income on the other and the year's profit is wrong by the amount of every card payment. A pivot table of amounts that appear on two accounts within a few days of each other finds most of them.
Categorize
Sort the ledger by description and look at the frequency. A small business's year is mostly the same payees repeating, and each one gets categorized once. In accounting software, set a rule per recurring payee; in a spreadsheet, a lookup table of payee to category does the same. Work down the frequency list, and stop when the remaining descriptions are one-offs.
Everything left goes into an uncategorized bucket for the client. Batch the questions into one list with date, amount and description, rather than sending them one at a time, and ask for receipts for the larger ones at the same time. Personal spending on the business card and owner contributions to the business account are the usual residue; they get their own categories, not expenses or income.
Deposits deserve their own pass. A deposit is not revenue until you know what it is: loan proceeds, transfers from another account, refunds and owner contributions all arrive as deposits and none of them is income. Where a payment processor is involved, reconcile its payouts to its own reports so that gross sales, fees and refunds are recorded rather than net deposits.
Review
Before anything is filed, a few checks that catch what categorization misses:
- Recurring costs appear the expected number of times: twelve rent payments, twelve of each subscription, four quarterly tax payments. A missing month is either a missing statement or a payment from another account.
- The income total matches what the client, and any third-party summaries, say it should. In the US, payment processors and some payers issue annual summaries; other countries have their equivalents. Large gaps mean a missing account or an uncategorized deposit.
- Every account's closing balance on the last day of the year matches the statement, and the transfers between accounts net to zero.
- Large one-off amounts have a note or a receipt against them.
- Sales tax, VAT or GST is treated consistently across the year if the client is registered for it.
Where the time goes
The conversion is the short part; anyone who has done this job knows the days are spent in categorization and in waiting for the client. The realistic way to estimate is to count the transactions across all accounts, time yourself on one full month from conversion through categorization, and multiply. Variables that stretch the estimate: several accounts with transfers between them, scanned rather than native statements, a payment processor, and a client who answers questions slowly. Variables that shrink it: one account, a payee list that repeats, and a client who sends every statement in the first email.
Two habits keep the job from doubling. Never retype: if a statement exists as a PDF, convert it and check it. Never assemble before reconciling: a single wrong amount found at the end means re-doing the categorization that depended on it.