Cash Reconciliation
Cadel matches bank statement transactions against cash book or GL entries, isolates outstanding cheques, deposits in transit, bank charges, and unrecorded debits at line-item granularity.
The Problem
Mid-market controllers running 4–12 bank accounts close each month with a manual bank reconciliation statement built in Excel. The accounts executive ticks bank statement lines against the Tally or SAP cash book ledger, lists outstanding cheques and deposits in transit on the BRS, and chases unrecorded bank charges, NEFT fees, and interest credits that were never posted. For an account with 800–1,500 monthly transactions, this consumes 2–3 working days per ledger and is repeated 4–12 times every period close.
The control failure is well-documented. SA 505 (External Confirmations) and the ICAI Guidance Note on Audit of Banks both treat the BRS as a primary working paper, and Schedule III of the Companies Act 2013 requires the cash and bank balance disclosed in the financial statements to be supported by a reconciled position. When a stale cheque older than 90 days under the RBI Master Direction on Negotiable Instruments sits unaddressed on the BRS, or when a bounced cheque (R-return) is not linked to its original credit, the closing cash balance carries an unsupported figure straight into the trial balance.
Manual reconciliation breaks down on three specific patterns: two payments of the same value clearing on the same date to different vendors, a single statement narration that bundles principal and TDS, and a deposit in transit that crosses period end and gets double-posted in the next month. Each of these is found by the statutory auditor at the year-end, not by the controller in time.
Why It Matters: Context
A bank reconciliation has four reconciling-item classes recognised under accepted Indian accounting practice: cheques issued but not yet presented, deposits credited in books but not yet on the statement, bank-side debits and credits not in the books (charges, interest, direct credits), and errors on either side. The controller is expected to identify each item, supply the cheque number or UTR, and either carry it forward as a timing difference or pass a journal entry to bring the books in line with the bank.
In a mid-market environment with 50–500 active vendors and no dedicated treasury team, the senior accountant typically owns reconciliation across Acme Bank, and Acme operating accounts. Statements arrive in mixed PDF and Excel formats with varying column orders, narrations are abbreviated (NEFT/ACMEN12345678/ABC ENTERPRISES), and the cash book exported from Tally uses voucher numbers rather than instrument numbers.
The downstream consequence is direct: an unreconciled bank balance qualifies the statutory audit report under SA 705, and in regulated entities triggers an observation in the Long Form Audit Report submitted to the bank.
What This Workflow Automates
- Classifies each uploaded file as Bank Statement, Cash Book, or Payment Voucher using header signals (bank logo, account number, ledger name) and rejects mis-paired files before extraction begins.
- Normalises account identity by matching the trailing digits of the bank statement account number against the ledger name on the cash book; halts with an Account Identity Failure exception if the digits do not align.
- Extracts every line item from both sources — date, narration, debit, credit, balance, cheque number, UTR, voucher number — and standardises date formats and amount signs across the two ledgers.
- Matches transactions in priority order: instrument reference (cheque number / UTR / NEFT reference) first, then voucher number, then amount-plus-date as a last resort, preventing false matches on identical-amount payments to different counterparties.
- Classifies every unmatched line into one of six reconciling-item buckets: outstanding cheque, deposit in transit, unrecorded bank charge, unrecorded interest, reversed/bounced transaction, or genuine discrepancy.
- Flags outstanding cheques older than 90 days as stale under the RBI Master Direction and drafts a write-back journal reversing the bank credit to the issuer ledger.
- Generates the BRS in the format expected by statutory auditors — opening balance per books, additions and deductions by reconciling-item class, closing balance per bank — together with proposed journal vouchers for unrecorded charges and reversals.
All of this happens in roughly 90 seconds per account with deterministic outputs every controller can audit line by line.
Edge Cases We Simulate
The workflow ships with a battery of synthetic test scenarios that exercise every failure mode we have seen in real-world data. Each scenario produces a deterministic outcome that an auditor or controller can verify in seconds.
| Scenario | What's wrong | Expected outcome |
|---|---|---|
| Outstanding Cheque Beyond Stale Date | A cheque issued in the cash book is unpresented for more than 90 days, exceeding RBI's stale cheque threshold. | Item is flagged as a stale outstanding cheque, surfaced for write-back to the issuer ledger, and a journal proposal is generated to reverse the bank credit. |
| Deposit in Transit Crossing Period End | A receipt entered in the cash book on 31 March does not appear on the bank statement until 2 April due to clearing lag. | Transaction is classified as a deposit in transit, retained as a reconciling item on the BRS, and auto-cleared when matched in the next period without duplicate posting. |
| Bank Charges Not in Cash Book | Bank statement shows a debit for SMS charges, NEFT fees, or quarterly maintenance charges that were never recorded in the books. | The debit is identified as an unrecorded bank charge, mapped to the configured expense GL (e.g., Bank Charges), and a posting voucher is drafted with the statement narration as reference. |
| Same Amount, Different Counterparty | Two payments of identical value (e.g., ₹50,000) clear on the same date but to different vendors; cash book and bank narrations differ. | Matcher uses cheque number, UTR, or instrument reference rather than amount-plus-date alone, preventing false positive matches and routing each leg to its correct counterparty. |
| Reversed or Bounced Transaction | A cheque deposited and credited by the bank is later reversed (R-return) and shown as a debit on a subsequent date. | Both legs are linked as a reversal pair, the original receipt entry is flagged for reversal in the cash book, and the net effect on the closing balance is zero. |
| Account Identity Mismatch | The cash book ledger is named 'Acme Bank 5612 Current' while the bank statement header reads 'Acme Bank Bank Ltd. A/c ACMEXXX1234'. | Account identity is normalised on the trailing digits of the account number; if the digits do not match, reconciliation is halted with an Account Identity Failure exception before any line matching occurs. |
Sample Documents
Download or inspect the seeded sample files used to demonstrate this workflow:
| File | Document type | Notes |
|---|---|---|
hdfc_bank_statement_mar2024.pdf |
Bank Statement | Acme Bank current account statement for March 2024 with opening balance, transaction lines (NEFT, RTGS, cheque clearings, bank charges), and closing balance. |
tally_cashbook_hdfc_mar2024.xlsx |
Cash Book | Tally export of the Acme Bank bank ledger for the same period showing voucher type, voucher number, narration, and debit/credit columns. |
neft_advice_vendor_payment.pdf |
Payment Voucher | NEFT advice slip used to corroborate a ₹4.2 lakh vendor payment when the bank narration is truncated. |
Sample Results
On a representative Acme Bank current account with 1,142 bank statement lines and 1,098 cash book entries for a single month, the workflow matched 1,061 transactions on instrument reference, isolated 34 outstanding cheques totalling ₹18.4 lakh, 6 deposits in transit of ₹4.2 lakh, 9 unrecorded bank charges aggregating ₹3,847 (SMS charges, NEFT fees, quarterly maintenance), and 2 reversal pairs linked as bounced cheques. The closing balance per books reconciled to the bank closing balance to the rupee.
The exception class that consistently surfaces in the demo data is Same Amount, Different Counterparty — two payments of ₹50,000 clearing on the same date to different vendors. Amount-plus-date matching would have crossed the legs; routing on UTR kept each payment posted to its correct vendor ledger and prevented a downstream vendor reconciliation break.
Why Automation Wins Here
A reconciliation that takes a senior accountant 2–3 days per account in Excel is completed in under two minutes per account, with each of the four reconciling-item classes auto-classified and the stale cheque and unrecorded charge journals pre-drafted. Across a 10-account close, this compresses 20–30 person-days of monthly effort to under an hour, while eliminating the false-positive matches that manual amount-and-date ticking produces.
The output drops directly into the audit working paper file: a BRS in the SA 505 format, the matched-transaction register, the exception list with classification reasons, and the proposed journal vouchers — all referenced to the source bank statement page and cash book voucher number, ready for the statutory auditor's bank balance verification procedure.
Frequently Asked Questions
UTR_EXACT, CHEQUE_NUMBER, AMOUNT_DATE_NARRATION), the user or system identity that approved any manual override, and a timestamp. The reconciliation pack is exportable as a single PDF for working papers.This workflow is deployed and live in our demo environment. Upload your own documents to see it in action.
Open the live workflow