Bank reconciliation is the process of matching transactions on your bank statement against the transactions in your accounting records, identifying any differences, and resolving them. The goal is a clean tie between “what the bank says happened” and “what your books say happened” at a specific point in time.

What it means in practice

Every month (or week, or day, depending on how disciplined you are), you pull two data sources:

  1. The bank statement — every transaction the bank processed during the period: deposits, withdrawals, fees, interest. Usually available as a CSV download or, in legacy systems, as MT940, CAMT.053, or BAI2 files.
  2. The accounting ledger — every transaction your bookkeeping recorded: customer payments applied, supplier checks issued, expense receipts entered.

For each transaction in one source, you look for the matching transaction in the other. The matches close out cleanly. The mismatches — anything that appears in one source but not the other — are reconciling items, and they fall into a small number of categories:

A complete reconciliation ends with a reconciliation statement showing the bank balance, your ledger balance, and a list of reconciling items that explain the difference. When the math works out, you sign off on the period.

Why it matters for invoice reconciliation

Bank reconciliation in the invoicing context is the same workflow with a narrower scope: you’re matching customer deposits in the bank against issued invoices in your invoicing tool. The reconciling items here look slightly different:

Most invoicing tools (QuickBooks, FreshBooks, Wave, Xero, inFakt, Fakturownia) handle this automatically only when payment came through their integrated payment processor. Manual bank transfers, ACH, wire, Wise, Revolut — these bypass the auto-match and the invoice stays marked “unpaid” until you reconcile manually.

checkunpaidinvoices.com automates the matching: drop your bank CSV and your invoice CSV, and the tool returns the four-bucket result (Paid / Likely paid / Unpaid / Anomalies) with explicit match reasons.

The two-sided nature

The “reconciliation” word implies two perspectives that must agree:

Bank reconciliation forces these two perspectives to align. When they don’t, one of them is wrong, and you investigate.

Frequency

Different cadences suit different sizes:

The longer the gap, the harder reconciliation gets. A missed transaction from 6 months ago is much harder to explain than one from last week.

Common mistakes

Try it: reconcile a bank statement against invoices with the bank reconciliation tool, or match Stripe payouts to invoices with the Stripe payout reconciliation tool. Two CSVs, 30 seconds, no signup.

Quick FAQ

Is bank reconciliation the same as bookkeeping? No. Bookkeeping is the broader practice of recording transactions. Bank reconciliation is one specific control within bookkeeping — verifying that recorded transactions match what actually happened in the bank.

How is it different from a trial balance? A trial balance checks that debits equal credits across all accounts. Bank reconciliation checks that one specific account (cash) matches the bank’s record. Both are control procedures, but they catch different errors.

Do I need to reconcile if I’m using bank feeds? Bank feeds (Plaid, MX, Yodlee — used by QuickBooks, Xero, etc.) automate the data import but not the matching. You still need to confirm that auto-suggested matches are correct and that exceptions get human review. See CSV vs. live bank feeds.

Can software fully automate reconciliation? For 80-90% of transactions, yes — deterministic matching on amount + date catches the bulk. The remaining 10-20% (partial payments, fee-deducted deposits, foreign exchange, ambiguous counterparty names) still benefit from human review.