Bank Reconciliation Automation: How to Automate Bank Reconciliation in Excel With Power Query
Aug 10, 2026
Convert your bank statement to Excel now
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Uploading...
Most bank reconciliations in Excel are not automated. They are rebuilt. Someone pastes the statement into a fresh tab, drags a VLOOKUP down a few hundred rows, eyeballs the leftovers, and does the whole manual process again next month. Power Query fixes the rebuilding part: you define the matching logic once, and every following month is a refresh instead of a rebuild.
Here is the honest scope. Power Query automates the matching and the preparation. It does not decide anything. Judgment calls, whether an unmatched item is a timing difference or a genuine error, still belong to you. What you get back is the hour you currently spend on data handling, every single month.
What does bank reconciliation automation actually automate?
Bank reconciliation automation means the mechanical steps run without human input: importing the statement, normalizing dates and amounts, matching statement lines to ledger lines, and listing what did not match. The reconciliation itself, deciding whether an unmatched item is a deposit in transit, an outstanding check, or a posting error, stays manual. Any tool claiming to automate that judgment is overselling.
In practice the monthly work splits roughly three ways. About half is data preparation, a third is matching, and the rest is investigating exceptions. Automation kills the first two and leaves the third, which is the only part that needed an accountant anyway.
Why Power Query instead of formulas
A VLOOKUP reconciliation dies the moment the input changes shape. New month, new row count, new column order from the bank, and the formulas break or silently return wrong results. Power Query stores the transformation steps rather than the results, so when next month's file lands in the same folder with the same columns, you click Refresh All and the whole thing recalculates.
Three specific advantages matter for reconciliation work:
- It handles row count changes. No dragging formulas to the bottom, no ranges that stop one row short.
- The merge is a real join. A Left Anti join gives you exactly the unmatched rows as a table, which is the reconciliation's whole output.
- Steps are auditable. Every transformation is listed in order in the Applied Steps pane, which is a far better audit trail than a nested formula nobody can read six months later.
Step 1: Get the statement into clean rows
Automation needs a table, and a PDF is not a table. If your bank gives you CSV downloads covering the period you need, use those. Many do not: the download window is often capped at 90 days to 18 months while PDF statements go back seven years, so historical and catch up work usually starts from PDFs.
When that is the case, convert the statement first. A bank statement converter turns the PDF into dated rows with description, amount, and running balance in their own columns, which is the shape Power Query wants. Get this step right and everything downstream is straightforward. Get it wrong, with amounts as text or dates as strings, and you will spend the saved hour debugging the query instead.
Two things to check in the output before you go further: amounts must be numbers, not text, and debits and credits must be signed consistently. Some statements present a single signed Amount column, others use separate Debit and Credit columns. Either works, but pick one convention and hold it, because the query is built against that shape.
Step 2: Load both sides as queries
Put the converted statement and your ledger export in a dedicated folder. In Excel, go to Data, then Get Data, then From File, and load each one. Choose Close and Load To, then Only Create Connection for both. You do not want either raw table dumped onto a worksheet; they are inputs, not output.
Inside the Power Query editor, do the cleanup on each query while you are there. Set the date column type to Date, set the amount column to Decimal Number, trim whitespace from descriptions, and remove any header, subtotal, or grand total rows the export brought along. Those totals are the single most common reason a first attempt produces nonsense matches.
Add one more thing to both queries: a rounded amount column. Use Add Column, then Custom Column, with a formula of Number.Round([Amount], 2). Floating point amounts that differ in the fifteenth decimal place will refuse to match, and this removes the problem before it starts.
Step 3: Merge the queries to match transactions
This is the automation. With the statement query selected, choose Home, then Merge Queries. Pick your ledger query as the second table. Hold Ctrl and select the columns you want to match on in both tables, typically the rounded amount and the date, or check number and amount where check numbers exist.
Then choose the Join Kind, which is the part that does the real work:
- Left Anti returns statement rows with no ledger match. These are your bank side reconciling items: fees, interest, NSF returns, and anything you have not booked yet.
- Right Anti returns ledger rows with no statement match. These are your book side items: outstanding checks and deposits in transit.
- Inner returns the matched pairs, which you mostly do not need to look at. That is the point.
Build all three as separate queries pointing at the same two sources. Load the two Anti joins to worksheets and leave the Inner join as a connection with a row count you can sanity check. Your reconciliation is now two short lists instead of a thousand row eyeball exercise.
One practical warning on matching by date. Transactions post to the bank one to three business days after they hit your ledger, so an exact date match will throw off a large share of legitimate pairs. Match on amount first, and use the date only to break ties when the same amount appears more than once in the period.
Step 4: Deal with what did not match
The Left Anti list is where fees, interest credits, NSF charges, and returned item fees show up, because those originate at the bank and you have not journalized them. They become journal entries. The Right Anti list is timing: checks you wrote that have not cleared, deposits made after the statement cutoff. Those do not become journal entries, they simply carry forward. If the distinction between the two sides is still fuzzy, the walkthrough of how to reconcile bank statements covers which items adjust the bank balance and which adjust the books.
Duplicate amounts are the one case that needs a human eye. If you paid the same vendor $1,250.00 three times in a month, the merge can pair the wrong instances. It still balances in total, so it rarely matters for the reconciliation, but if you are tracing a specific payment, check those manually.
Step 5: Refresh instead of rebuilding
Next month, drop the new statement and ledger files into the same folder with the same names and column layout, then hit Refresh All. Every step reruns and the two exception lists repopulate. That is the entire monthly routine once the query exists.
If you point the source at a folder rather than a single file, using Get Data, then From File, then From Folder, Power Query will combine every statement in it. That turns a twelve month catch up into one refresh, which is where this approach pays for itself fastest. Firms handling this volume of statement cleanup usually find the bottleneck moves upstream to the paperwork feeding the ledger, at which point automated receipt and expense capture is the next thing worth fixing.
Where Excel automation stops working
Being straight about the limits: Power Query is excellent up to a few thousand rows a month across a handful of accounts. Past that it gets slow and fragile, and it has no concept of approvals, sign off, or a locked audit trail. If a reviewer needs to approve the reconciliation, if you are reconciling twenty accounts, or if an auditor wants evidence of who signed what and when, you have outgrown it. That is the point where dedicated bank reconciliation software earns its cost, and the honest comparison of what those tools do is worth reading before you buy one.
For a single business with two or three accounts, Excel plus Power Query is genuinely enough, and it is free with the license you already own.
Can you automate bank reconciliation in Excel?
Yes. Power Query, which is built into Excel for Windows and Mac, automates the import, cleanup, and matching steps of a bank reconciliation. You build the query once and refresh it each month. What it cannot automate is the judgment about what an unmatched item means, or approval workflow and audit sign off, which is where dedicated software takes over.
How do I match bank transactions to my ledger automatically?
Load both the statement and the ledger as Power Query connections, add a rounded amount column to each, then use Merge Queries with a Left Anti join to list statement rows with no ledger match and a Right Anti join for the reverse. Match on amount rather than date, because bank posting lags your ledger by one to three business days.
Why doesn't my automated reconciliation balance?
Four causes account for most of it: subtotal or grand total rows left in an export and counted as transactions, amounts stored as text so they never match, inconsistent debit and credit signs between the two sources, and an exact date match rejecting valid pairs that posted a day or two apart. Check those four in that order before rebuilding the query.
Is Power Query better than VLOOKUP for reconciliation?
For recurring monthly reconciliation, yes. VLOOKUP has to be rebuilt whenever the row count or column order changes, and it returns a value rather than a list of exceptions. A Power Query merge stores the logic instead of the result, survives changes in row count, and produces the unmatched rows directly as a table, which is the actual output you need.
How long should an automated bank reconciliation take?
Building the query the first time takes roughly 30 to 60 minutes if your data is already in rows. After that, a monthly reconciliation on a clean account is a refresh plus the time to investigate exceptions, commonly 10 to 20 minutes. The saving comes from never repeating the preparation and matching work, not from skipping the investigation.
The prerequisite for all of it is transaction data in real rows. If your statements arrive as PDFs, start by converting them, then build the query on top. Getting that first step clean is what makes everything after it a one click job.
Ready to convert your bank statement?
Upload a PDF and get clean Excel or CSV in seconds. Works with statements from any bank.
Convert to Excel nowFree to try, no credit card required