Bank reconciliation sounds more complicated than it is. At its core, you're just confirming that what you think you spent matches what your bank says you spent.
Google Sheets is a solid place to do this — especially if your transaction data is already there. This guide walks through the full process, from pulling in your data to flagging discrepancies, with formulas you can use today.
What Bank Reconciliation Actually Is
Reconciliation is the process of matching two sets of records:
- Your internal records — what you've logged, categorized, or tracked in your spreadsheet
- Your bank statement — the official record of every transaction your bank processed
When they match, you're reconciled. When they don't, you have something to investigate — a missing transaction, a duplicate entry, a bank error, or a timing difference.
For personal finance, reconciling monthly catches overspending, missed subscriptions, and fraudulent charges before they compound. For small businesses, it's essential for accurate books.
Step 1: Get Your Transaction Data Into Google Sheets
You have two options:
Option A — Manual CSV import: Download a CSV from your bank's website and paste it into a sheet. Works, but tedious — especially if you have multiple accounts.
Option B — Automatic sync with SheetLink: SheetLink connects your bank via Plaid and syncs transactions directly into Google Sheets. One click, all accounts, no CSV wrangling.
💡 Tip
SheetLink's free plan syncs the last 7 days of transactions. Pro ($39.99/year) unlocks full history across all accounts — useful when reconciling older periods.
Once your transactions are in, you should have columns for at minimum: Date, Description, Amount, and Account.
Step 2: Set Up Your Reconciliation Sheet
Create a new tab called Reconciliation. You'll build a simple structure:
| Opening Balance | [enter from bank statement] |
| + Deposits | [formula] |
| - Withdrawals | [formula] |
| = Closing Balance| [formula] |
| Bank Balance | [enter from bank statement] |
| Difference | [formula — should be $0.00] |
The goal: Difference = $0.00. If it's not, you have something to find.
Step 3: Calculate Deposits and Withdrawals
Assuming your transactions are on a sheet called Transactions with amounts in column D (positive = deposit, negative = withdrawal):
Total deposits for a period:
=SUMIF(Transactions!D:D,">"&0)
Total withdrawals for a period:
=SUMIF(Transactions!D:D,"<"&0)
Filter by date range (e.g. March 1–31):
=SUMPRODUCT((Transactions!A:A>=DATE(2026,3,1))*(Transactions!A:A<=DATE(2026,3,31))*(Transactions!D:D>0)*Transactions!D:D)
Adjust the sheet name and column references to match your actual data.
Step 4: Flag Unmatched Transactions
Add a Cleared column to your transactions sheet. Mark each transaction as Y once you've confirmed it appears on your bank statement.
Use conditional formatting to highlight uncleared rows:
- Select your transaction range
- Format → Conditional formatting
- Custom formula:
=$E2<>"Y"(where E is your Cleared column) - Set a highlight color
Any row still highlighted at month end needs attention.
To count uncleared transactions:
=COUNTIF(Transactions!E:E,"<>Y")
Step 5: Investigate Discrepancies
If your closing balance doesn't match the bank, common culprits are:
- Timing differences — a check you wrote hasn't cleared yet (normal, note it)
- Missing transactions — a charge didn't make it into your sheet
- Duplicates — the same transaction imported twice
- Data entry errors — wrong amount, wrong sign
Sort your transactions by amount descending to spot large outliers quickly. Use Ctrl+F to search for specific merchants or amounts.
Find duplicates by transaction ID (if using SheetLink data):
=COUNTIF(Transactions!B:B, B2)>1
Flag any row where this returns TRUE.
Step 6: Lock the Period
Once reconciled, protect the sheet range for that period so it can't be accidentally edited. In Google Sheets:
- Select the reconciled rows
- Right-click → Protect range
- Set permissions to "Only you"
This gives you a clean audit trail — each month's data is locked once confirmed.
Automating the Data Side with SheetLink
The most time-consuming part of reconciliation is getting accurate, complete transaction data. SheetLink removes that friction.
Once connected, syncing pulls every transaction from all your linked accounts directly into your sheet — categorized, dated, and deduplicated. You skip the CSV step entirely and go straight to the matching.
SheetLink Pro
Unlock full transaction history + Excel
Upgrade to Pro — $4.99/mo14-day money-back guarantee · Cancel anytime
The Formula Cheat Sheet
| Task | Formula |
|---|---|
| Total deposits | =SUMIF(D:D,">"&0) |
| Total withdrawals | =SUMIF(D:D,"<"&0) |
| Count uncleared | =COUNTIF(E:E,"<>Y") |
| Net change | =SUM(D:D) |
| Deposits in date range | =SUMPRODUCT((A:A>=start)*(A:A<=end)*(D:D>0)*D:D) |
| Flag duplicates | =COUNTIF(B:B,B2)>1 |
Bottom Line
Bank reconciliation in Google Sheets comes down to three things: clean transaction data, a simple balance summary, and a cleared flag on each row. With those in place, reconciling monthly takes 15 minutes instead of an afternoon.
If pulling transaction data is the bottleneck, SheetLink handles that part — so you can spend your time on the actual review, not the data prep.