What bank reconciliation is for.
Bank reconciliation matches every cleared transaction on your bank statement against your accounting ledger to confirm three things: the cash balance is correct, every transaction is recorded once and only once, and no fraudulent or unauthorized transactions slipped through. The reconciliation produces a written record proving that as of the statement date, your books and the bank agree, with any differences explained as outstanding items.
You reconcile because banks and ledgers update on different timelines. You write a cheque on March 28 and post the entry in your books that day. The supplier deposits the cheque on April 5. Your books show the cash gone on March 28; the bank statement shows it gone on April 5. The reconciliation explains the gap. Same logic for deposits in transit (you got cash on the 31st, deposited it on the 1st), bank fees you did not know about, and direct deposits from customers you have not yet recorded.
Step 1: gather the statement and the ledger.
Pull the bank statement for the period (typically a month ending on the last day). Print or download as CSV. Pull your accounting system cash account activity for the same period. Note the opening balance per bank, the opening balance per books, and the closing balances per each. These four numbers anchor the reconciliation. If the opening balance per bank does not match your prior reconciliation, you have an unfinished prior month; fix that before starting the current month.
For a UK consulting firm reconciling March 2026 against Lloyds Business: opening balance per bank GBP 18,400.50, opening per books GBP 18,400.50 (matching last month closing), closing per bank GBP 22,150.30, closing per books GBP 22,840.55. Difference GBP 690.25. The reconciliation will identify exactly which transactions explain the 690.25 gap.
Step 2: match cleared transactions.
Walk down the bank statement. For each transaction, find the matching entry in the ledger. Tick both. Most transactions are obvious: a payment to a supplier with the same amount and a date within a few days, a customer deposit, a standing order. Software handles this with auto-match algorithms (Nonari matches roughly 85 percent of bank lines automatically using amount, date, and counterparty heuristics).
The unmatched lines on the bank side are either timing differences (deposits in transit, outstanding cheques) or transactions you forgot to record. The unmatched lines on the ledger side are either timing differences (cheques you wrote but the bank has not cleared) or transactions you recorded but the bank does not show (fraudulent ledger entries, errors). Investigate every unmatched line. Do not "force balance" by adjusting numbers.
Step 3: investigate the differences.
Three categories of differences come up every month. Outstanding cheques: you wrote them, posted to ledger, bank has not paid them yet. Add them to the bank closing balance to compare against ledger. Deposits in transit: you received cash on the last day, deposited but not yet cleared. Add to bank balance. Bank charges, interest, fees: bank knows about them, your ledger does not. Post the missing journal entry.
Back to the Lloyds example. Outstanding cheques: GBP 540 to supplier A (cheque 1087, written March 29). Deposits in transit: GBP 1,250 deposited March 31, cleared April 2. Bank charges March 31: GBP 25 not yet booked. Interest received: GBP 5.75 not yet booked. Reconcile: Bank closing 22,150.30 - outstanding cheque 540 + deposit in transit 1,250 = adjusted 22,860.30. Books closing 22,840.55 - bank charges 25 + interest 5.75 = adjusted 22,821.30. Still off by 39.00. Hunt that down.
Worked example continued: finding the last 39.
The GBP 39 gap takes 10 minutes. Looking at the bank statement: a Stripe payout on March 18 for GBP 1,440.00. In the ledger: a Stripe payout on March 18 for GBP 1,479.00. The difference: a Stripe processing fee of GBP 39.00 was bundled into the deposit and not separated in the ledger entry. Fix: book a journal entry DR Bank Fees 39.00 / CR Sales 39.00 to reverse the over-recorded sale and recognize the fee. Re-run the reconciliation. Now bank adjusted 22,860.30 = ledger adjusted 22,860.30. Reconciled.
Post the missing journal entries that the reconciliation surfaced: bank charges 25, interest income 5.75, Stripe fee 39. These three entries become part of the March accounting. The reconciliation report (or the locked reconciliation in Nonari) saves the proof that as of March 31, books equal bank to the penny. Next month, the opening balance on April 1 will match by definition.
- Outstanding cheques: written but not yet cleared.
- Deposits in transit: received but not yet cleared.
- Bank charges, fees, interest: bank knows, books do not.
- Bundled Stripe/PayPal/Square fees inside gross deposits.
- Duplicate entries from manual import and bank feed both.
The three errors that cause 80 percent of pain.
One: bundled processor fees. Stripe, PayPal, Square, and Razorpay deposit the net amount but report gross. If you book the gross sale and the net deposit, the fee disappears unless you book it explicitly. Always book the gross sale and the fee as a separate expense, then the deposit nets. Nonari Stripe integration does this automatically by parsing the Stripe payout report and posting the fee as a separate journal entry.
Two: forgotten standing orders and direct debits. The rent goes out on the first of every month by direct debit; the bookkeeper has forgotten about it three months in a row. Set up recurring journal entries in the accounting system for known direct debits so they post even if the bookkeeper is on holiday. Three: duplicate entries when a transaction comes in through both manual entry and the bank feed. Pick one source of truth (usually the bank feed) and dedupe by transaction reference.
How software cuts reconciliation to 10 minutes.
Bank feed integration pulls transactions automatically into the accounting system. Auto-match algorithms tick off 80-90 percent of lines without human review. The remaining lines are presented as a queue for manual review. The bookkeeper accepts the matches, creates new entries for missing items (bank charges, interest), and locks the reconciliation. The whole process for a small business with 100 transactions a month: 10-15 minutes.
Where software does not exist or is not connected, manual reconciliation against a CSV export takes 60-90 minutes. The difference compounds. A business that reconciles monthly in 15 minutes runs clean books year-round. A business that reconciles in 90 minutes does it quarterly, finds three months of errors at once, and spends a day cleaning up. Nonari connects to most Pakistani banks via 1Link and most international banks via Plaid or Stitch, and reconciles in under 20 minutes for a typical SMB.