All Workflows

Trial Balance Anomaly Detection

Benford's Law + period-over-period swing checks on every GL account — trial balance anomaly detection in under a minute per close.

Live demo Upload your own trial balance XLSX — Cadel runs all five validation passes and surfaces every anomaly in seconds.

The Problem

Mid-market finance teams process 200–500 active GL accounts every month-end close, running trial balance anomaly detection the same way they have for years — by scrolling through a flat spreadsheet.

Math breaks buried in 500-row sheets

A ₹50,000 keying error in account 5210 Travel & Conveyance — where Opening ₹4,80,000 + Debits ₹1,25,000 − Credits ₹15,000 should equal ₹5,90,000 but the Closing column carries ₹6,40,000 — survives visual review and surfaces only when the auditor questions the workpaper under SA 520 (Analytical Procedures), often three to four weeks after close. Every day of delay converts a ₹50,000 keying error into a restatement risk.

Period swings invisible in flat TB views

A Legal & Professional Fees account that jumps from ₹6,75,000 to ₹28,35,000 — a 320% MoM increase — appears as just another row in a flat spreadsheet export. Without an automated swing threshold, no standard Excel formula differentiates a material variance from seasonal noise. Under CARO 2020 para 3(viii), unexplained material movements in cost accounts can attract a comment in the statutory auditor's report if the controller cannot produce documented flux commentary at fieldwork.

Suspense accounts rolling forward unchecked

Suspense and clearing codes (account 9999 and similar) are used for entries that could not be classified at booking time. In practice, they are frequently forgotten: a ₹1,87,500 debit posted to Suspense in March rolls into April with no clearing entry and no flag. Under Ind AS 1 Para 54 and the ICAI Guidance Note on Preparation of Financial Statements, every suspense account must carry a zero balance before the period is locked — a control that most mid-market teams enforce manually, if at all.

Statistical digit anomalies caught only in forensic audits

Benford's Law predicts that in a naturally occurring set of financial balances, roughly 30.1% of leading digits will be 1 and only 5.8% will be 7. When a Marketing Agency Spend account shows closing balances that cluster on digit 7 across multiple periods — Opening ₹7,70,000; Debits ₹7,77,000; Closing ₹14,77,000 — the chi-square deviation is a recognised red-flag indicator per the AICPA Audit Guide: Analytical Procedures. Without automated statistical testing, this pattern is invisible to a controller reviewing the TB row by row and surfaces only during a forensic engagement.

2–3 days

The typical time a mid-market controller spends on manual trial balance review per close cycle — not because the volume is enormous, but because the five checks (math, identity, suspense, swing, Benford) are repetitive, error-prone, and produce no documented audit trail. A single correcting journal entry filed post-close because a math break was missed adds another half-day and, if material, triggers a restatement conversation with the auditor under SA 560 (Subsequent Events).

Why It Matters: Regulatory Framework

The trial balance is the foundational document of the period-close process under Ind AS, US GAAP, and IFRS. Four regulatory anchors govern the specific validation checks this workflow runs.

ICAI SA 520 · Para 5

Analytical procedures are mandatory at planning and final review

SA 520 requires auditors to apply analytical procedures at the planning stage (to understand the entity and identify unusual items) and as a final review (to corroborate conclusions). Period-over-period flux analysis and TB math checks are explicitly cited examples. Controllers who cannot produce a documented flux commentary trail face direct workpaper scrutiny — the working-paper export from this workflow satisfies that requirement without a manual write-up.

Ind AS 1 · Para 54 & 60

Balance sheet line items must be zero at period close

Ind AS 1 requires that the financial statements present a true and fair view, with no unclassified items parked in suspense or clearing accounts. Para 60 requires current/non-current segregation of every item — impossible if transactions remain unclassified at period end. A non-zero suspense balance at the time books are locked means indeterminate-value entries have leaked into one or more financial statement line items at an unknown classification.

CARO 2020 · Para 3(viii)

Unexplained material variances attract audit comments

CARO 2020 para 3(viii) requires the statutory auditor to report whether any transactions are not recorded in the books of account with proper descriptions or classifications. A Legal & Professional Fees account that triples month-on-month with no supporting documentation is precisely the kind of classification irregularity that attracts a CARO para 3(viii) comment — and an adverse or qualified CARO opinion has downstream consequences for bank covenant compliance and board filings.

AICPA Audit Guide · Benford’s Law

First-digit distribution is a recognised fraud-risk indicator

The AICPA Audit Guide: Analytical Procedures designates Benford's Law chi-square testing as a recognised analytical procedure for identifying potential manipulation of numeric data in accounting records. A chi-square statistic exceeding 15.51 (8 degrees of freedom, 95% confidence) indicates a first-digit distribution unlikely to arise in naturally occurring accounting data — a finding that triggers escalation under ICAI SA 240 (The Auditor’s Responsibilities Relating to Fraud) when detected during the close process.

What This Workflow Automates

Seven deterministic passes from trial balance XLSX upload to a prioritised exception inbox and audit working paper — in under a minute per close cycle, with every check traceable back to the source row.

01

Trial balance ingestion & row parsing

Accepts the current-period trial balance as a single .xlsx file with seven columns: Account Code, Account Name, Opening Balance, Period Debits, Period Credits, Closing Balance, and Prior Month Closing. Every non-header row is parsed as a distinct account entry without manual column mapping — the format matches the standard export from Tally Prime, Zoho Books, NetSuite, and SAP F.01 transactions.

02

Double-entry identity check

Verifies that the sum of all Period Debits across every account equals the sum of all Period Credits — the algebraic identity that must hold for any valid set of double-entry books. A mismatch raises a FAIL severity flag immediately, reporting the net imbalance amount in rupees so the controller can locate the errant journal entry before the rest of the validation run proceeds.

03

Per-account math validation

For every row, the workflow computes Opening + Debits − Credits and compares the result to the Closing Balance column. Any discrepancy — whether ₹1 or ₹50,00,000 — raises a FAIL severity flag on that specific account with the exact rupee break surfaced in the exception inbox, enabling the controller to identify the keying or export error at row level rather than hunting through the full spreadsheet.

04

Suspense & clearing account scan

Every account code is checked against a configurable suspense and clearing pattern list (codes matching 9999, 9998, SUSP, CLEAR, and similar conventions). Any suspense-coded account carrying a non-zero Closing Balance receives a FAIL severity Must-Clear badge that blocks the working-paper export from being stamped as final — enforcing the zero-balance-at-close control required under Ind AS 1 and standard close procedures.

05

Period-over-period swing detection

Computes the MoM change for every account as (Current Closing − Prior Closing) / |Prior Closing| and raises a WARNING severity flag when the change exceeds 50% or ₹5,00,000 in absolute rupees — whichever threshold is breached first (OR condition, not AND). Both the percentage swing and the absolute rupee movement are reported, and accounts with a prior-period zero balance are evaluated on the absolute threshold alone to avoid division-by-zero distortion.

06

Benford first-digit chi-square test

Extracts the first significant digit from every non-zero Closing Balance in the trial balance, computes the observed frequency distribution for digits 1–9, and compares it against Benford expected probabilities (digit 1 → 30.1%, digit 7 → 5.8%). A chi-square statistic exceeding 15.51 (8 degrees of freedom, 95% confidence level) triggers a WARNING severity flag. Accounts with fewer than 30 non-zero balance observations are excluded because the sample is too small for statistical reliability.

07

Prioritised exception inbox & working-paper export

All flagged accounts are assembled into a severity-ranked inbox — FAIL items listed first (must resolve before close), WARNING items below (require explanation or acceptance). The full working paper is exported to Excel with per-row columns for account code, account name, validation name, severity, computed values (swing %, rupee swing, chi-square statistic, digit frequency table), and a PASS / WARNING / FAIL outcome badge — formatted for direct attachment to the statutory audit close package under ICAI SA 230 (Audit Documentation).

Edge Cases We Simulate

Five synthetic test scenarios that exercise every failure mode observed in real-world trial balance data. Each produces a deterministic outcome an auditor or controller can verify in seconds against the bundled sample files.

Clean Baseline

ScenarioAll math ties, debits equal credits, no suspense balance, MoM swings within threshold, Benford distribution normal.
Expected outcomeZero flags raised; workflow issues a green PASS badge across all five validation checks. The Excel working paper records every check as PASS — the expected result for a correctly prepared TB.

TB Math Break

What's wrongAccount 5210 Travel & Conveyance: Opening ₹4,80,000 + Debits ₹1,25,000 − Credits ₹15,000 = ₹5,90,000, but Closing column carries ₹6,40,000 — a ₹50,000 arithmetic break from a keying or export error.
Expected outcomeFAIL severity flag on tb_math_ties for account 5210; ₹50,000 break surfaced in the exception inbox; close sign-off blocked until corrected.

Large MoM Swing

What's wrongAccount 6001 Legal & Professional Fees jumped from ₹6,75,000 to ₹28,35,000 — a 320% increase of ₹21,60,000, far exceeding both the 50% and ₹5 lakh thresholds.
Expected outcomeWARNING severity on period_swing_threshold; swing reported as +320% / +₹21,60,000; controller prompted to attach a drill-down explanation before the working paper is exported as final.

Suspense Account Non-Zero

What's wrongAccount 9999 Suspense Account opened at nil, received ₹1,87,500 in debits with no offsetting credits — leaving an open balance that must clear before the books are locked.
Expected outcomeFAIL severity on suspense_zero; red Must-Clear badge on account 9999; working-paper export blocked from final stamp until balance is cleared.

Benford First-Digit Outlier

What's wrongAccount 5340 Marketing Agency Spend balances cluster on digit 7 (Opening ₹7,70,000; Debits ₹7,77,000; Closing ₹14,77,000), pushing the chi-square statistic above the 15.51 threshold vs. Benford expected (digit 1 → 30.1%, digit 7 → 5.8%).
Expected outcomeWARNING severity on benford_first_digit; chi-square value and observed vs. expected digit-frequency table reported; account tagged for auditor review in the working-paper export.

Entries List Empty

What's wrongA malformed XLSX file — wrong column headers, pivot-style layout, or a filtered view exported with no visible data rows — yields zero parseable account entries after ingestion.
Expected outcomeFAIL severity on entries_list_non_empty; workflow surfaces "No data rows extracted" and routes the file for manual review — preventing a silent pass on an empty dataset.

Sample Files & Results

Five seeded trial balance files — each engineered to isolate one exception class. Together they cover every validation pass the workflow runs.

Trial Balance · All-Pass Baseline
5 / 5 PASS

trial_balance_clean.xlsx

Acme Corp Pvt Ltd · 38 active GL accounts · Mar-2026
Flags raised0zero exceptions
Benford χ²8.43below 15.51
Max MoM swing28%within threshold

Use to verify zero-flag behavior. All five validation passes return PASS — math ties, debits equal credits, no suspense balance, swings within threshold, and Benford distribution normal. Correct baseline for regression testing after configuration changes.

Trial Balance · TB Math Break
FAIL

trial_balance_tb_does_not_balance.xlsx

Account 5210 Travel & Conveyance · ₹50,000 arithmetic break
TB math breakFAIL₹50,000 gap
Account flagged5210Travel & Conv.
Close statusBlockedmust correct

Demonstrates tb_math_ties FAIL and the exact break amount in the exception inbox. Opening ₹4,80,000 + Debits ₹1,25,000 − Credits ₹15,000 should equal ₹5,90,000 but Closing reads ₹6,40,000 — a ₹50,000 discrepancy consistent with a keying or export error in the ERP.

Trial Balance · Large MoM Swing
WARNING

trial_balance_large_swing.xlsx

Account 6001 Legal & Professional Fees · 320% MoM increase
MoM swing+320%₹6.75 L → ₹28.35 L
Abs. movement+₹21.6 Lvs ₹5 L threshold
SeverityWARNINGexplain required

Demonstrates the period_swing_threshold check and drill-down swing calculation. A Legal & Professional Fees account that more than quadruples in a single month requires documented flux commentary — the controller must attach a rationale before the working paper can be exported as final.

Trial Balance · Suspense Non-Zero
FAIL

trial_balance_suspense_nonzero.xlsx

Account 9999 Suspense Account · ₹1,87,500 open debit balance
Suspense zeroFAILmust clear
Open balance₹1,87,500no credits
Export statusBlockedfinal stamp held

Demonstrates the suspense_zero FAIL and Must-Clear badge. Account 9999 opened at nil, received ₹1,87,500 in debits during the period with no offsetting credit — the standard symptom of an unclassified entry parked at booking and forgotten before month-end lock.

Trial Balance · Benford Outlier
WARNING

trial_balance_benford_outlier.xlsx

Account 5340 Marketing Agency Spend · digit-7 cluster
Benford χ²>15.51exceeds threshold
Leading digit7over-represented
Benford expect5.8%observed >> expected

Demonstrates the benford_first_digit WARNING and the observed vs. expected digit-frequency table. Account 5340 shows Opening ₹7,70,000; Debits ₹7,77,000; Closing ₹14,77,000 — a concentration on leading digit 7 that is statistically improbable in naturally occurring accounting data and requires auditor review before the period can be closed.

Why Automation Wins Here

Replacing the manual trial balance review with this automated workflow compresses what is typically a two-to-three-day process into a single-pass run that completes in under a minute — catching five distinct exception classes that visual review routinely misses.

2–3 days → <1 min
Per-close controller time for all five TB validation checks
5
Distinct exception classes caught deterministically in a single run
100%
Per-account math verified, not just aggregate debit-credit totals
0
Reformatting steps before attaching to the statutory audit close package

Arithmetic errors caught before sign-off

Computing Opening + Debits − Credits = Closing for every account row deterministically surfaces arithmetic breaks — the ₹50,000 discrepancy in account 5210 that would survive visual review and surface only when the statutory auditor applies ICAI SA 520 analytical procedures at fieldwork, by which time a correcting JE and restatement conversation may be unavoidable.

Statistical anomalies visible without a forensic engagement

Benford chi-square testing — a recognised analytical procedure in the AICPA Audit Guide — is applied automatically to every close, not just during annual forensic audits. The digit-7 cluster in account 5340 Marketing Agency Spend would be invisible to a controller reviewing the TB row by row; the workflow quantifies the deviation and surfaces it with the chi-square value and observed vs. expected frequency table for auditor review.

Audit-ready working paper, every close

The Excel export — with per-account validation outcomes, swing calculations, chi-square values, and PASS / WARNING / FAIL badges — satisfies the analytical-procedure documentation requirement under ICAI SA 230 (Audit Documentation) and drops directly into the close package shared with statutory auditors, reducing the documentation step from a manual write-up to a single file attachment that requires zero reformatting.

Frequently Asked Questions

The questions controllers, CFOs, and auditors ask most often before deploying automated trial balance scrutiny.

Which accounting standards or audit frameworks does this workflow satisfy?

The TB math and suspense-account checks align with the ICAI Guidance Note on Audit of Internal Financial Controls and support documentation requirements under SA 315 (Identifying and Assessing the Risks of Material Misstatement) and SA 520 (Analytical Procedures). The Benford's Law test is a recognized analytical procedure documented in the AICPA Audit Guide: Analytical Procedures and is increasingly cited in forensic accounting literature as a first-pass fraud indicator. Under Ind AS and US GAAP engagements, the period-over-period flux analysis satisfies the flux commentary requirement that most auditors request during interim and year-end close package review.

How does the Benford's Law chi-square test work, and what threshold does Cadel use?

Benford's Law predicts that in naturally occurring accounting data, the leading digit 1 appears ~30.1% of the time, digit 2 ~17.6%, down to digit 9 ~4.6%. The workflow extracts the first significant digit from every non-zero closing balance, computes observed vs. expected frequencies, and calculates a chi-square statistic with 8 degrees of freedom. A result exceeding the default threshold (chi-square > 15.51 at the 95% confidence level) triggers a WARNING flag; the threshold is configurable per engagement. Accounts with fewer than 30 non-zero balance observations are excluded from the Benford test because the sample size is insufficient for statistical reliability.

What defines the period-over-period swing threshold, and can it be adjusted?

By default, the workflow flags any account whose closing balance changes by more than 50% or ₹5,00,000 MoM, whichever is breached first — an OR condition, not AND. Both the percentage and the absolute rupee threshold are configurable in the workflow settings, allowing controllers at different company sizes or with different materiality levels to calibrate sensitivity. The swing is computed as (Current Closing − Prior Closing) / |Prior Closing|; accounts with a prior-period closing of zero are evaluated solely on the absolute amount to avoid division-by-zero distortion.

Does this workflow work with data from Tally, Zoho Books, NetSuite, or SAP?

Yes. The input is a single .xlsx file with seven columns (Account Code, Account Name, Opening Balance, Debits, Credits, Closing Balance, Prior Month Closing), a format that can be exported directly from Tally Prime's Trial Balance with Opening/Closing report, Zoho Books' Trial Balance export, NetSuite's Financial Statement Builder, or SAP's F.01 / S_ALR_87012284 transaction. No ERP connector or API integration is required; the controller downloads the standard export and uploads it to Cadel.

What is the audit trail, and can the output be attached to audit workpapers?

Every run produces a timestamped Excel working paper recording: (1) each account's raw input values, (2) the computed math-tie result, (3) the MoM swing percentage and absolute amount, (4) the Benford chi-square statistic and per-digit observed vs. expected table, and (5) the severity badge (PASS / WARNING / FAIL) for each of the five validations. The file meets the ICAI standard under SA 230 (Audit Documentation) and attaches directly to the close package shared with statutory auditors. The Cadel platform also logs the user, timestamp, and input file hash for each run, providing an immutable review trail.

Can this workflow handle multi-entity or multi-currency trial balances?

The current workflow processes a single-entity, single-currency trial balance per run, with all amounts expected in Indian Rupees. For multi-entity consolidations, controllers should run one instance per legal entity before consolidation entries are posted — the recommended practice under Ind AS 110 (Consolidated Financial Statements) to catch entity-level anomalies before they are obscured in the consolidated view. Multi-currency support — where each row carries an original-currency amount alongside an INR equivalent — is on the Cadel product roadmap; in the interim, the workflow can be used on the INR-translated TB without any loss of math-tie or swing-check functionality.

Does this workflow satisfy SOX Section 302 or CARO 2020 documentation requirements?

Yes. The working-paper export — with per-account validation outcomes, swing calculations, and chi-square values — provides the documented analytical procedure trail that SOX Section 302 certifying officers and CARO 2020 para 3(viii) statutory auditors require. An unexplained large swing in a cost account with no supporting documentation is precisely the finding that triggers a CARO para 3(viii) comment or an internal control weakness under SOX; this workflow ensures the documentation exists before the auditor asks. For US-listed Indian entities filing both MCA forms and SEC disclosures, the same export serves both requirements without duplication.

How does the workflow handle accounts with zero prior-month closing balance?

Accounts with a prior-period closing balance of zero are excluded from the percentage-swing calculation to avoid division-by-zero distortion. They are still evaluated against the absolute rupee threshold (₹5,00,000 by default) — so a newly opened account that immediately accumulates a large balance will still be flagged on the absolute test. New suspense-coded accounts with any non-zero closing balance are always flagged under the suspense_zero check regardless of prior-period value, because a first-period suspense debit with no prior history is still an unclassified transaction that must clear before the books are locked.