Clean Match
effective_from date before the charge date — no variance exists.Statement charges matched to tariff, overcharges flagged, recoverable total ready — bank charge reconciliation in under 30 seconds per period.
| Txn Code | Description | Charge Date | Amt Debited |
|---|---|---|---|
| NEFT001 | NEFT outward charge | 05-Feb-26 | ₹50 |
| RTGS002 | RTGS outward charge | 07-Feb-26 | ₹200 |
| LCMG01 | LC margin charge | 12-Feb-26 | ₹3,500 |
| MISC099 | Misc. service (uncoded) | 15-Feb-26 | ₹750 |
| ACMT01 | Account maintenance | 28-Feb-26 | ₹600 |
Mid-market finance teams running 30–80 bank charge reconciliation lines per month face a manual cross-reference task that is error-prone, under-resourced, and almost always incomplete.
A controller exports the current account statement, isolates charge-type transactions, opens the tariff PDF from the relationship manager, and cross-references each transaction code, amount, and effective date by hand — for 30–80 rows. The exercise is not automated anywhere in the standard ERP stack and falls on whoever is doing the bank reconciliation.
Indian commercial banks may revise their schedule of charges at any time, subject to a 30-day notice period under the RBI Master Circular (DBR.No.Leg.BC.21/09.07.006/2015-16). A bank that applies a revised tariff before its stated effective_from date has made an unauthorised charge — but detecting this without an automated date comparison requires a step most controllers skip entirely under time pressure.
Manual review rarely separates overcharges (amount exceeds scheduled rate), unauthorised codes (transaction code absent from any tariff), and mid-month tariff changes (effective date after charge date) as distinct classes. The output is typically an email to the relationship manager with no structured variance figure, which delays recovery and makes the dispute unauditable.
A single NEFT outward charge overcharged by Rs 1,000 per transaction, applied across 40 transactions in a month, represents Rs 40,000 in unrecovered cash. This amount appears in no ERP variance report, triggers no audit finding, and is visible only if the charge reconciliation is performed with an explicit scheduled-rate comparison — which it almost never is.
The monthly leakage potential from a single overcharged transaction code at moderate volume. Under RBI Fair Practices Code for Lenders, the account holder has a right of recovery for any charge applied above the published scheduled rate or against an unapproved transaction code — but only if the reconciliation is performed with a structured comparison that produces an auditable variance figure.
Bank charges on Indian current accounts sit inside four overlapping regulatory obligations. Each one creates an enforceable right of recovery — but only if the finance team can produce a structured reconciliation statement with per-row variances.
Banks are required to display their schedule of charges on their website and at branch premises. Any charge debited above the published scheduled rate, or under a transaction code absent from the schedule, is an unauthorised deduction. The circular gives account holders a right of recovery, subject to a written representation supported by a line-by-line reconciliation statement.
Banks must give account holders 30 days’ notice before revising their schedule of charges. A revised tariff with an effective_from date that falls after the charge date means the new rate was billed before it was contractually in force — a mid-month tariff change exception. Manual review rarely captures this distinction because it requires a date comparison across two separate documents.
Any recovery letter to a bank relationship manager is more likely to succeed — and any internal audit test of bank charge authorisation is more easily satisfied — when it is supported by a workpaper showing the transaction code, charge date, amount debited, scheduled rate, tariff version, variance, and exception class in a single structured output. Ad-hoc email notes do not meet the documentation standard for audit evidence under SA 230.
The statutory auditor’s report is required to state whether the company has adequate internal financial controls over financial reporting. Bank charge authorisation — specifically, verifying that only charges at or below the published tariff rate are accepted — is a standard test of operating effectiveness. A manual, undocumented process fails this test; a structured reconciliation with a complete exception log passes it.
For Acme Corp Pvt Ltd, the schedule of charges is typically provided as an Excel or PDF from the relationship manager, with columns for txn_code, service description, scheduled_rate, effective_from, and tariff_version. The bank statement charge extract carries the mirror columns: txn_code, description, charge_date, amount_debited, and reference. The join key is the transaction code. Without automation, the date comparison and code-lookup steps are routinely skipped.
Seven deterministic passes from two Excel inputs to a structured exception report with recoverable total — in under 30 seconds per period, with the same output every run.
Upload the statement charge extract (statement_charges) and the schedule of charges tariff sheet (schedule_of_charges) as Excel or CSV files. Cadel classifies each automatically by its column headers — no template mapping required, no column renaming. Both documents are validated for non-emptiness before reconciliation proceeds; an empty file halts the run with an explicit FAIL message rather than producing a false-clean output.
Every row is extracted from both files: txn_code, description, charge_date, amount_debited, and reference from the statement; txn_code, description, scheduled_rate, effective_from, and tariff_version from the tariff. Mixed date formats and numeric formats (e.g. 01-Feb-2026 vs 2026-02-01) are normalised before comparison.
Each statement charge row is matched to its tariff counterpart using txn_code as the primary key. Statement rows with no tariff counterpart are isolated immediately as unauthorised-charge candidates — the full amount debited is treated as recoverable pending tariff evidence, consistent with the account holder’s rights under the RBI Fair Practices Code.
For every matched pair, computes variance = amount_debited − scheduled_rate. A positive variance triggers an overcharge exception with the exact recoverable amount recorded (e.g., code LCMG01 debited at Rs 3,500 vs scheduled Rs 2,500 = Rs 1,000 overcharge). Zero or negative variance reconciles cleanly with no exception raised.
For every matched pair, compares effective_from against charge_date. If effective_from is later than charge_date, the entry is flagged as a tariff-change-mid-month exception — the tariff version (e.g., FY26-v2) was not yet operative when the charge was applied, violating the RBI Circular DBOD.No.Leg.BC.74 30-day notice requirement.
For matched rows where the amount reconciles cleanly, compares the statement narration to the tariff description. A narration that disagrees with the published service description is raised as a description-drift warning (e.g., ACMT01 billed as "Service charge - account upkeep (bundled)" vs tariff description "Account maintenance - quarterly") — worth a review even when the amount is correct, as re-labelling can obscure fee bundling.
The output contains one row per statement charge, the matched scheduled rate, the exception class (clean / overcharge / unauthorised / tariff-change-mid-month / description-drift), the variance in rupees, the tariff version applied, and a footer row summing all recoverable amounts — formatted for direct inclusion in a recovery letter to the bank’s relationship manager and ready to attach as an audit workpaper under ICAI SA 230.
A battery of synthetic test scenarios that exercise every exception class the workflow handles. Each scenario produces a deterministic outcome an auditor or controller can verify in seconds.
effective_from date before the charge date — no variance exists.LCMG01) debited at Rs 3,500; tariff lists scheduled rate as Rs 2,500 — a Rs 1,000 positive variance.MISC099 ("Miscellaneous service charge (uncoded)", Rs 750) appears on the statement but has no corresponding row anywhere in the schedule of charges tariff.POSCH02) debited on 10-Feb-2026; tariff shows effective_from as 18-Feb-2026 — the FY26-v2 rate was not yet in force when the charge was applied.ACMT01) debited at the correct Rs 600, but statement narration reads "Service charge - account upkeep (bundled)" while tariff description reads "Account maintenance - quarterly."FAIL result and an explicit message naming the empty document — no false-clean reconciliation is produced, and the controller is prompted to resubmit the correct file.Two seeded files for Feb-2026 — one statement charge extract, one tariff sheet — engineered so that most rows reconcile cleanly and only the seeded exception rows surface in the queue.
Covers NEFT outward, RTGS outward, demand draft, cash management, and letter of credit charges. Seven rows plant the four exception classes: three overcharges (LCMG01, BGIS01, CMS001), two unauthorised codes (MISC099, RELMG01), one mid-month tariff change (POSCH02), one description drift (ACMT01).
The authoritative source for what each charge should be. Most lines carry tariff version FY26-v1, effective 01-Apr-2025. One revised POS line (POSCH02, FY26-v2) becomes effective 18-Feb-2026 — applied eight days before its effective date in the statement charges to seed the mid-month case.
Three overcharge exceptions totalling Rs 2,600 recoverable. Each row carries the transaction code, charge date, amount debited, scheduled rate, variance, and tariff version FY26-v1 — ready to quote in a recovery letter.
The most operationally significant class: both codes are entirely absent from the tariff. A standard bank reconciliation that only checks whether the debit appears on the statement would silently accept these charges. The full Rs 2,750 is recoverable pending tariff evidence.
Reconciling the Feb-2026 statement against the schedule of charges, the workflow matched all 85 statement rows to the tariff by transaction code and confirmed 78 clean charges at exactly the scheduled rate. Seven rows surfaced as exceptions. Three overcharges: LCMG01 (Letter of credit margin, Rs 3,500 debited vs Rs 2,500 scheduled — Rs 1,000 recoverable), BGIS01 (Bank guarantee commission, Rs 3,600 vs Rs 3,000 — Rs 600 recoverable), and CMS001 (Cash management bulk collection, Rs 2,500 vs Rs 1,500 — Rs 1,000 recoverable).
Two unauthorised charges with no tariff line at all: MISC099 ("Miscellaneous service charge (uncoded)", Rs 750) and RELMG01 ("Relationship manager advisory fee", Rs 2,000) — the full Rs 2,750 is recoverable pending tariff evidence. One tariff-change-mid-month exception: POSCH02 (revised POS terminal charge, Rs 950) was debited on 10-Feb-2026 against a tariff line whose effective_from is 18-Feb-2026 (version FY26-v2) — the revised rate was billed eight days before it went live. One description drift warning: ACMT01 carried the correct code and the scheduled Rs 600, but the statement narration disagrees with the published description. Total recoverable from overcharges and unauthorised charges: Rs 5,350 — a figure that would be invisible to a standard bank reconciliation and appear in no ERP variance report without this workflow.
Before this workflow, a two-to-four-hour monthly exercise produced an informal note with partial exception coverage and no structured recoverable total. Cadel replaces that with a deterministic, sub-30-second run that catches all four exception classes every time — with the same output on the same inputs, every close cycle.
The workflow computes the recoverable-overcharges total in the Excel output — eliminating a separate aggregation step. Each row carries the transaction code, reference number, charge date, amount debited, scheduled rate, variance, tariff version, and exception class: the full chain of evidence required for a recovery letter to the relationship manager and for an audit workpaper under ICAI SA 230.
A standard bank reconciliation confirms that the bank’s debits appear on the statement — it does not check whether the bank had contractual authority to raise each charge at that rate. Unauthorised codes like MISC099 and RELMG01 pass a standard recon silently. This workflow surfaces them because it tests the schedule join and the tariff effective date, not just the debit amount.
The completed Excel workbook drops directly into the controller’s month-end audit file under the bank reconciliation section, with no reformatting required. It satisfies the internal financial controls test under Companies Act 2013 Section 143(3)(i) and gives the statutory auditor a line-by-line evidence chain from statement debit to scheduled rate to exception class — without relying on email threads or manual logs.
The questions finance controllers and treasury teams ask most often before deploying bank charge reconciliation automation.
Two files for the same period: the bank’s statement charge extract (the fees actually debited — transaction code, description, charge date, amount debited, reference) and the bank’s schedule of charges tariff sheet (transaction code, service description, scheduled rate, effective from, tariff version). Drop them together in the Inbox; Cadel classifies each by its columns.
Every statement charge is matched to a schedule line by transaction code. Once matched, the workflow runs four checks: the amount debited must be at or below the scheduled rate, the tariff’s effective-from date must be on or before the charge date, and the statement narration should align with the tariff description. A fifth check confirms that the transaction code exists in the tariff at all — if not, the charge is flagged as unauthorised regardless of amount.
Four. Overcharge — the amount debited exceeds the scheduled rate. Unauthorised — the transaction code does not appear in the schedule at all, so there is no tariff basis for the fee. Tariff change mid-month — the schedule’s effective-from date falls after the charge date, meaning a revised tariff was billed before it went live. Description drift (a warning) — the right code and amount but a narration that disagrees with the published service description.
For each overcharge the workflow takes the amount debited minus the scheduled rate; unauthorised charges count at their full debited value since no tariff supports them. These per-row variances are summed into a single recoverable figure in rupees, ready to quote in a recovery letter to your relationship manager. Tariff-change-mid-month exceptions are included as recoverable pending confirmation of the applicable rate; description-drift warnings are excluded since the amount is correct.
A healthy account is mostly clean. Charges billed at exactly the scheduled rate under a tariff in effect on the charge date reconcile silently and never reach the Exceptions queue, so your attention goes only to the fees worth disputing. On the Feb-2026 seed dataset, 78 of 85 rows (92%) reconciled cleanly; only the 7 seeded exception rows surfaced.
Yes. The schedule carries an effective-from date and tariff version per line. If the bank applies a revised rate to a charge dated before that revision took effect, the workflow flags it as a mid-month tariff change rather than treating the new rate as authorised. Under the RBI Circular DBOD.No.Leg.BC.74/09.07.005/2013-14, a 30-day advance notice is required before rate revisions take effect; this check makes that obligation enforceable without manual date comparison.
Yes. Export the reconciled charges and the exception list — including the per-row variance, tariff version, exception class, and recoverable total — to Excel from the Inbox toolbar, ready to attach to a recovery letter to the relationship manager or to drop into the month-end bank reconciliation audit file.
No. Your statement and tariff files are processed only to produce this workflow’s reconciliation results and are not used to train any model.