Bank reconciliation, step by step (and why it never feels done)
"Why does bank reconciliation feel like it's never truly done?" Because you're probably chasing the wrong finish line. Reconciled doesn't mean the bank balance equals your book balance — on the day you close, it almost never does. It means the gap between them is fully explained by a short list of timing items you can name: deposits that haven't cleared, checks that haven't been cashed. Get that list clean and you're done, even with a difference still sitting on the page. Here's the method, the two-column check that proves it, and the one workflow habit that quietly turns a 30-minute job into a 3-hour one.
What does it mean to reconcile a bank account?
A bank reconciliation proves that the cash balance in your books and the balance on your bank statement describe the same money — and, where they differ, explains exactly why. The output isn't a single matched number. It's a short statement: the bank balance, your book balance, and the named adjustments that bridge the two. That bridge is the whole point, and it's the part people skip when they decide the job is "make these equal."
One practitioner put the correction precisely. To a question about a gap between the general ledger and the bank, one reply said "your cash GL account should match the bank statement," and a second corrected it: "I would disagree slightly. The GL account should tie to the bank reconciliation." That's the distinction the whole task hinges on. Your books don't equal the statement. Your books equal the statement plus the reconciling items. Miss that and you'll chase a difference that was never supposed to be zero.
Why does it never feel "done"?
Two reasons, and they're different problems with different fixes. The first is timing. Deposits in transit (recorded in your books, not yet on the statement) and outstanding checks (written and recorded, not yet cashed) mean the two balances are supposed to differ. Chasing a zero difference is chasing a number that shouldn't be zero. The reconciliation is finished when the difference is fully named, not when it disappears.
The second is workflow, and it's the one that eats the hours. An operator asked, plainly, "Anyone else spending 3+ hours monthly on reconciliation that should take 30 minutes?" — and the most-upvoted reply was "Any tips? Just pitch your product and move along." No answer at all. The real answer is buried in a different thread, where the top reply to "why bank reconciliation feels never done" was right but terse: "there should be no transactions that use the bank as a source of original entry." Correct. Unexplained. Below is the version with the reasoning attached.
The two balances you are actually comparing
Every adjustment on a reconciliation lands on one of two sides: the bank side or the book side. The rule for which is the one AccountingCoach teaches as "put the item where it isn't." If something is on your books but not yet on the statement, it adjusts the bank side. If it's on the statement but not yet in your books, it adjusts the book side.
| Adjustment | Which side | Why |
|---|---|---|
| Deposits in transit | Add to bank | Recorded in your books; not yet on the statement |
| Outstanding checks | Subtract from bank | Written and recorded; not yet cashed |
| Bank fees / NSF charges | Subtract from books | On the statement; not yet entered in your books |
| Interest earned | Add to books | On the statement; not yet entered in your books |
| Auto-debits you missed | Subtract from books | Cleared the bank; never recorded |
| Book error (typo, duplicate) | Fix the books | Wrong amount or a doubled entry on your side |
| Bank error (rare) | Adjust bank | Document it and contact the bank; don't plug it |
The step-by-step method
Top to bottom. Bank reconciliation is step two of a month-end close for a reason: cash is the account you can prove against an outside document, so you clear it first and build everything else on it.
- Confirm the opening balance ties. Last month's reconciled ending balance equals this month's beginning balance, on both the bank and the book side. If the prior reconciliation was wrong, everything this month inherits the error and a clean-looking result proves nothing.
- Set the cutoff. Reconcile to the statement's closing date, not to "today." Anything dated after the cutoff belongs to next period and is not a discrepancy.
- Tick off every deposit. Match each deposit on the statement to a recorded receipt in your books. Receipts on your books with no matching statement line are deposits in transit — list them, do not "fix" them.
- Tick off every payment. Match each cleared check and withdrawal to a recorded payment. Recorded payments not yet on the statement are outstanding checks — list them too.
- Record the statement-only items. Bank fees, interest, NSF charges, and auto-debits are real entries you have not made yet. Post them to your books now. This is the step that quietly makes most "it won't balance" problems disappear.
- Compute the two adjusted balances using the formula below.
- Confirm they are equal. If adjusted bank equals adjusted book, you are reconciled — the raw difference that remains is just your timing list. If they are not equal, the gap is a real error to find, not a number to journal away.
- Keep the reconciliation. Save it with the deposits-in-transit and outstanding-check lists attached; next month's opening balance ties back to this one.
Adjusted bank balance = Statement balance + Deposits in transit - Outstanding checks
Adjusted book balance = Book balance + Interest/credits - Bank fees/NSF/debits
Reconciled when: Adjusted bank balance == Adjusted book balanceA worked example: the difference that looks scary and isn't
Your general-ledger cash account says 12,400. The statement says 13,950. That's 1,550 apart, and the instinct is to panic or to plug it. Don't. Walk the two columns instead.
| Item | Amount | Effect |
|---|---|---|
| Statement balance | 13,950 | Starting point, bank side |
| Deposit in transit (recorded Mar 31, posts Apr 1) | +2,000 | Add to bank |
| Outstanding check #1042 | -3,200 | Subtract from bank |
| Outstanding check #1047 | -400 | Subtract from bank |
| Adjusted bank balance | 12,350 | 13,950 + 2,000 - 3,600 |
| Book balance | 12,400 | Starting point, book side |
| Bank fee on statement, not yet booked | -50 | Subtract from books |
| Adjusted book balance | 12,350 | 12,400 - 50 |
Both adjusted balances land on 12,350, so the account is reconciled. The 1,550 "discrepancy" was four timing items and one unbooked fee — nothing was actually wrong. The raw gap was never the problem; the unexplained part of it was, and there wasn't any. Matching the cleared items against your recorded ones is the same set-difference check you'd run on any two lists, and it lives comfortably in a spreadsheet until the volume outgrows one.
The habit that turns 30 minutes into 3 hours
Here's the workflow fix the terse answers gesture at. The operator above noted "QB auto-match works maybe 60% of the time," and that number is the tell. When the bank feed is the place your transactions are born, every line arrives uncategorized, and reconciliation becomes data entry and detective work at the same time. You're not confirming the month; you're building it from the statement, in the worst possible order.
Flip it. Record transactions from their source documents when they happen — invoices, bills, customer payments, processor payouts into a clearing account — so that by the time the feed arrives, the feed only has to confirm what's already on your books. Now auto-match is checking your work instead of doing it, the 60% becomes 95%, and the reconciliation is the quick pass it should be. That's what "the bank should not be a source of original entry" actually means in practice. It's the same discipline as choosing a stable primary ID before you match anything: get the inputs right first, and the comparison gets easy.
When the monthly bank rec outgrows the checklist
This method is the right tool for one account, or a few, reconciled by hand each month. It starts to strain when you're running many accounts, reconciling daily, or matching bundled processor deposits where a single payout splits across dozens of orders and fees — its own reconciliation, keyed on the payout rather than the order. It also strains when someone else has to trust the result without redoing it, the same way an inventory subledger has to tie to the GL at scale. At that point the method doesn't change; you just want the timing lists and the match preserved as a repeatable process rather than rebuilt from the feed every month. If you reach for help there, keep the AI on the setup and explanation and the arithmetic in code — so the reconciling items stay named and the balance stays one you can defend.
Frequently asked questions
What does it mean for a bank reconciliation to be "done"?
It is done when the gap between your book balance and the bank statement is fully explained by named timing items — deposits in transit and outstanding checks — and you have posted the statement-only items like fees and interest to your books. It does not mean the two balances are literally equal; after adjustments, the adjusted bank balance and adjusted book balance match, and the raw difference that remains is just the timing list.
Why does my book balance not match the bank statement?
Almost always timing. Deposits you recorded have not cleared yet, checks you wrote have not been cashed yet, and fees or interest on the statement have not been entered in your books. These are expected differences, not errors. List the timing items and post the statement-only items, and the adjusted balances will agree.
What is the bank reconciliation formula?
Adjusted bank balance equals the statement balance plus deposits in transit minus outstanding checks. Adjusted book balance equals your book balance plus interest and credits minus bank fees, NSF charges, and missed debits. The account is reconciled when the two adjusted balances are equal.
Why does my bank reconciliation take hours when it should take minutes?
Usually because the bank feed is acting as the source of original entry, so every transaction is categorized and investigated during the reconciliation itself. Record transactions from source documents as they happen, and let the feed only confirm them. Auto-match accuracy climbs and the reconciliation becomes a quick verification pass instead of a rebuild.
Should I post a journal entry to force a reconciliation to balance?
Only for real statement items such as bank fees, interest, or NSF charges. Never post an unexplained plug to make the numbers tie. A forced adjustment hides the underlying error and passes it to whoever reconciles next. If a difference remains after all timing and statement items are accounted for, it is an error to investigate, not to journal away.