All Workflows

Monthly Variance Analysis (Budget vs Actuals)

Budget workbook + trial balance → exception queue + Excel pack — variance analysis automation in under 60 seconds per period close.

Live demo Drop your own budget workbook and trial balance, see Cadel flag every material variance and build the exception queue — in seconds.

The Problem

Mid-market finance teams spend two to three days every period close on a task that is structurally a matching problem: comparing the approved budget vs actuals at the GL account and cost-centre level. At 200–500 active GL accounts across 10–30 cost centres, that is a VLOOKUP exercise that is slow, error-prone, and systematically blind to four failure modes.

Two to three days lost per month

Exporting the trial balance, reformatting the budget workbook, writing join formulas, colouring exception rows, and drafting commentary from scratch consumes a full FP&A resource for multiple days each period — time that should go to analysis, not data plumbing. Any ERP-to-Excel format mismatch resets the clock.

Silent mismatches that pass through

A trailing space in a cost-centre code, an account renumbered mid-year, or a currency-format difference in the ERP export produces a join key mismatch. The VLOOKUP returns a #N/A that the analyst either zero-fills or deletes — silently creating an incorrect variance that may only surface when the CFO queries the number in a board review meeting.

288 unmatched lines, invisible to VLOOKUP

Budget lines with no actual posting — missed accruals, cancelled programmes, timing differences — never appear in a budget-to-actuals VLOOKUP because the direction of the lookup only finds actuals rows that do have a budget counterpart. When 288 GL lines go unmatched in a single period, none produce a percentage variance that would trigger any manual threshold check.

Unbudgeted spend reaches the board pack

An account-and-cost-centre pair that exists in the actuals trial balance but has no corresponding approved budget row represents a control failure — spend was incurred without formal sanction. In a manual process, this line simply does not appear in the variance worksheet at all, because there is no budget row for VLOOKUP to anchor to. It requires a separate reverse lookup that most teams never run.

2–3 days

The controller time consumed each period close by a manual budget vs actuals variance analysis process at a mid-market entity with 200–500 active GL accounts. Under Schedule III of the Companies Act 2013 and most lender covenant packages, this output is non-negotiable — the board pack cannot be tabled without it. The cost is not the spreadsheet; it is the two days of compression on the window available for actual management judgement.

Why It Matters: Regulatory Framework

Budget-versus-actuals variance analysis sits at the intersection of four regulatory obligations. Each one creates a specific audit-trail requirement that a manual VLOOKUP process satisfies only partially — and often only after the fact.

Schedule III · Companies Act 2013

Mandatory notes-to-accounts commentary

Schedule III (Part II, Statement of Profit and Loss) requires directors to disclose significant variations between the current and prior period for each line item in the P&L. Audit committees routinely extend this obligation to budget-vs-actual deviations, requiring management commentary on every material variance before the board pack is tabled. Without a reproducible variance report, the controller is drafting commentary from memory.

ICAI Guidance Note · Internal Financial Controls 2015

Budgetary control is an IFC process-level control

The ICAI’s 2015 Guidance Note on Audit of Internal Financial Controls over Financial Reporting classifies budget monitoring as a process-level preventive control. Inadequate variance monitoring — specifically, the failure to detect unbudgeted spend or material overruns before the period closes — is a reportable IFC deficiency that can attract a qualified opinion from the statutory auditor. A manual process that misses unbudgeted-spend lines fails this control by design.

Ind AS 108 · Para 28

Segment reporting reconciliation

For entities preparing financial statements under Ind AS, Ind AS 108 (Operating Segments) Para 28 requires a reconciliation of total segment revenues, profit or loss, assets and liabilities to the corresponding amounts in the financial statements. A GL-level variance pack that is already structured by cost centre provides the segment-level detail the disclosure note needs — if the matching is done correctly.

SEBI LODR · Regulation 34(2)(e)

MD&A financial performance commentary

For listed entities, SEBI’s Listing Obligations and Disclosure Requirements Regulations require the Annual Report to include a Management Discussion and Analysis covering financial performance with respect to operational performance, including discussion of material variations from budget where applicable. The same management commentary obligation appears in most private-credit lender covenant packages as a quarterly reporting condition.

What This Workflow Automates

Seven deterministic passes from budget workbook + trial balance to exception-flagged variance pack — in under 60 seconds per period close, producing the same output on every run regardless of file size.

01

Document ingestion & classification

Accepts two uploaded .xlsx files. Cadel classifies each as Budget (contains budget_amount column) or Actuals (contains actual_amount column) automatically — no labelling required. The period label (e.g. Mar-FY26) is extracted from the sheet name or a header row for use in the output pack filename and commentary template.

02

Structured row parsing

Every row in both files is parsed into a structured record containing account_code, account_name, cost_centre, category, amount, and period. Null fields are recorded as null rather than zero, preserving the distinction between a zero-booked account and an account with no data.

03

Composite key matching

Each budget record is matched to its actuals counterpart using the composite key account_code + cost_centre. Records present in only one file are isolated: Source-Only for budget lines with no actuals entry (potential missed accrual or cancelled programme) and Target-Only for actuals with no budget row (unbudgeted spend).

04

Variance computation & direction

For every matched pair, the workflow computes the absolute variance (actual − budget) and the percentage variance (variance ÷ budget × 100). Each line is classified as Favourable (actual below budget for expense lines), Unfavourable (actual above budget), or On-Track (within both thresholds). These labels follow standard management accounting convention, not just raw sign.

05

Four independent exception checks

Material Variance: absolute variance > Rs 1,00,000. Percent Variance Threshold: percentage variance > 10% regardless of absolute size. Zero Actual With Budget: budgeted account has actual_amount = 0. Unbudgeted Spend: actuals line has no corresponding budget row. Each fires independently; a single line can carry multiple exceptions simultaneously.

06

Auto-generated commentary template

The top 5 variance lines ranked by absolute magnitude are inserted into a commentary template with GL account name, cost centre, budgeted amount, actual amount, absolute variance, and percentage variance pre-filled. The template is exported as a structured section inside the Excel variance pack; controllers edit the narrative text cells directly before sending to the Board.

07

Formatted Excel variance pack output

The output pack carries conditional formatting — green for On-Track, amber for percentage-only breaches, red for material or unbudgeted exceptions — a dedicated exception tab isolating all flagged lines, and an exception queue with Reviewed / Pending / Escalated status badges ready for the controller to action before the board pack is finalised. Extraction accuracy on structured tabular inputs is 100% on the sample data.

Edge Cases We Simulate

A battery of synthetic test scenarios that exercise every failure mode seen in real-world budget-vs-actuals data. Each produces a deterministic, auditor-verifiable outcome.

On-Track Line

InputActual spend falls within 0.5% of the budgeted amount for a GL account and cost-centre combination — below both the Rs 1 lakh absolute threshold and the 10% percentage threshold.
Expected outcomeLine classified as On-Track; no exception raised; row appears with green conditional formatting in the Excel variance pack. No commentary entry generated for this line.

Material Overspend

InputMarketing & Advertising (GL 5402, CC-MKT-01) records an actual of Rs 28.5 lakh against a budget of Rs 20 lakh — an absolute overspend of Rs 8.5 lakh (42%), breaching the Rs 1 lakh materiality threshold.
Expected outcomeMaterial Variance exception raised; line classified Unfavourable; absolute variance Rs 8,50,000 (42%) surfaced in exception queue and included as the top driver in the commentary template.

Percentage Variance Breach Only

InputTravel & Conveyance (GL 5305, CC-SAL-02) is Rs 70,000 over budget (actual Rs 2.7 lakh vs budget Rs 2.0 lakh). Below the Rs 1 lakh absolute threshold but 35% overage exceeds the 10% percentage rule.
Expected outcomeAbsolute-materiality check does not fire; Percent Variance Threshold fires independently; line queued for review with 35% variance noted. Demonstrates the two checks operate independently.

Zero Actual With Budget

InputTraining & Development (GL 5210, CC-HR-01) has a budget of Rs 3 lakh for Mar-FY26. No journal entry posted in the trial balance — actual amount is Rs 0. A percentage-variance check returns undefined (divide-by-zero), making this invisible to a standard VLOOKUP process.
Expected outcomeZero Actual With Budget exception fires; line flagged as No Booking in the exception queue; commentary template notes the full Rs 3,00,000 as unspent budget for management review of timing or accrual.

Unbudgeted Spend

InputTrade Show Sponsorship (GL 5450) and Penalties & Late Fees (GL 5950) appear in the actuals trial balance but have no corresponding row in the approved budget workbook. Spend was incurred without formal budget sanction.
Expected outcomeUnbudgeted Spend exception fires on both lines; each is classified Unfavourable — Unbudgeted; isolated in the dedicated exception tab of the Excel pack; entire actual amount treated as the variance for commentary purposes.

Budget Account Missing from Actuals

InputCSR Expenditure (GL 5901, CC-FIN-01) at Rs 2,50,000 exists in the approved budget but has no matching entry in the actuals export — a sanctioned head that was never spent or booked in the period.
Expected outcomeSource-Only Item mismatch raised; line surfaced in the exception queue with a No Actual status badge; budget amount Rs 2,50,000 recorded as the full unspent allocation for follow-up.

Sample Files & Results

Two consolidated sample files for Acme Corp Pvt Ltd covering Mar-FY26. Uploaded together they reconcile on the shared account_code + cost_centre key: 38 of 40 GL lines match cleanly, with deliberately planted exceptions exercising all four exception classes in a single run.

Budget · 40 GL rows
Classified

budget_mar_fy26.xlsx

Approved budget workbook · Acme Corp Pvt Ltd · sheet: FY26 Budget — Mar
GL rows406 cost centres
Cost centres6OPS / MKT / HR / SAL / FIN / IT
Planted exceptions2Zero-actual lines

Columns: GL Code, Account Name, Cost Centre, Category, Budget (Rs), Period. Two budgeted accounts — Training & Development (GL 5210, CC-HR-01) and CSR Expenditure (GL 5901, CC-FIN-01) — have no matching actuals row, planting the Zero Actual With Budget exception on both lines.

Actuals · 40 GL rows
Classified

actuals_mar_fy26.xlsx

Trial-balance export · Acme Corp Pvt Ltd · sheet: Trial Balance — Mar
GL rows40same GL structure
Material exceptions2GL 5402 & GL 5001
Unbudgeted lines2GL 5450 & GL 5950

Marketing & Advertising (GL 5402, CC-MKT-01) is Rs 28.5 lakh vs Rs 20 lakh budget (+42%); Raw Material Consumed (GL 5001, CC-OPS-01) is Rs 1.12 cr vs Rs 95 lakh (+17.9%). Travel & Conveyance (GL 5305, CC-SAL-02, +35%) and Printing & Stationery (GL 5306, CC-FIN-01, +14.7%) breach the 10% percentage rule only. Trade Show Sponsorship (GL 5450) and Penalties & Late Fees (GL 5950) are fully unbudgeted.

Sample Results

In the demo run for Acme Corp Pvt Ltd for Mar-FY26, the reconciliation engine matched the budget and actuals files on the account_code + cost_centre key: 38 of the 40 GL lines reconciled cleanly. Two budgeted accounts — Training & Development (GL 5210, CC-HR-01) at Rs 3,00,000 and CSR Expenditure (GL 5901, CC-FIN-01) at Rs 2,50,000 — had no corresponding actuals entry and were flagged as Zero Actual With Budget. On the matched lines, the Material Variance check identified Marketing & Advertising (GL 5402, CC-MKT-01) with an actual of Rs 28,50,000 against a Rs 20,00,000 budget — an absolute variance of Rs 8,50,000 (42%), both thresholds breached — and Raw Material Consumed (GL 5001, CC-OPS-01) at Rs 1,12,00,000 against Rs 95,00,000, a Rs 17,00,000 (17.9%) breach.

The Percent Variance Threshold check independently fired on Travel & Conveyance (GL 5305, CC-SAL-02), where the Rs 70,000 overspend fell below the Rs 1 lakh materiality floor but the 35% overage exceeded the 10% rule, and on Printing & Stationery (GL 5306, CC-FIN-01) at 14.7% — demonstrating that the two exception classes operate independently and that neither can substitute for the other. The most operationally significant exception was the Training & Development line (GL 5210, CC-HR-01): a Rs 3,00,000 budget allocation with an actual booking of Rs 0 that would be invisible in a percentage-variance-only review because a zero-divided-by-budget calculation produces an undefined result, not a finite percentage flag. Extraction accuracy across all demo files was 100% on structured tabular inputs.

Why Automation Wins Here

By replacing a two-to-three-day manual close task with a sub-60-second automated run, the workflow returns meaningful analysis time to the controller and FP&A lead — and catches four structural error classes that a VLOOKUP-based process cannot detect by design.

2–3 days → <1 min
Per-period close time for the full budget vs actuals variance analysis run
4
Exception classes fired independently on every GL line, every run
100%
Extraction accuracy on structured .xlsx trial balance inputs in demo runs
0
Unbudgeted spend lines that pass through undetected when the workflow runs

Catches what VLOOKUP structurally misses

Unbudgeted spend and budget-with-zero-actual lines both require a bidirectional match — budget-to-actuals AND actuals-to-budget — that a single-direction VLOOKUP can never produce. The workflow runs both directions as a single operation, surfacing every Source-Only and Target-Only mismatch in the exception queue without requiring a separate reverse lookup. Under the ICAI’s 2015 IFC Guidance Note, failure to detect unbudgeted spend is a reportable control deficiency.

Audit-ready output on every run

The Excel variance pack carries a machine-generated reconciliation reference linking back to source filenames and the period label (Mar-FY26), satisfying documentation requirements under the ICAI SIA 2 (Business Process Controls review) and providing the audit trail an external auditor requires under SA 315 (Identifying and Assessing the Risks of Material Misstatement) when reviewing the entity’s budgetary control effectiveness.

Board-pack-ready in one click

The auto-generated commentary template pre-fills the top-5 variance drivers with GL account, cost centre, budgeted amount, actual amount, absolute variance, and percentage variance. The controller edits narrative text only — not numbers — reducing the risk of transposition errors between the variance worksheet and the management commentary that is tabled to the Audit Committee under Schedule III of the Companies Act 2013 board-reporting obligations.

Frequently Asked Questions

The questions finance controllers and FP&A leads ask most often before deploying variance analysis automation.

Which documents do I upload?

Two files for the same period — the approved budget workbook (budget_mar_fy26.xlsx) and the actuals trial-balance export (actuals_mar_fy26.xlsx). Both carry the same GL code + cost-centre structure. Cadel classifies each file automatically as Budget or Actuals based on whether the column header contains a budget_amount or actual_amount field, so you can drop them together in the Inbox without labelling them first.

Which exception rules does the workflow apply, and what are their exact thresholds?

Four deterministic checks run on every matched GL account + cost-centre pair. Material Variance: absolute difference exceeds Rs 1,00,000. Percent Variance Threshold: variance exceeds 10%, regardless of absolute size. Zero Actual With Budget: a budgeted account has no spend booked (actual = Rs 0). Unbudgeted Spend: an account appears in the actuals trial balance but has no approved budget row. Each check fires independently, so one line can trigger more than one exception simultaneously — for example, a material overspend that also exceeds the 10% percentage threshold will carry both flags.

How does the workflow match accounts when GL code naming conventions differ between the budget and the trial balance?

The primary match key is the composite of account_code and cost_centre (e.g., 5305 + CC-SAL-02). When a code exists on one side but not the other, the workflow raises a Source-Only or Target-Only mismatch rather than silently dropping the row. If your budget uses a different chart-of-accounts numbering than your ERP trial balance export, upload a mapping table alongside the two primary files to translate codes before matching. Fuzzy account-name matching (RapidFuzz, 80% threshold) is applied as a secondary signal to flag likely duplicates created by abbreviation or suffix differences (e.g. “Pvt Ltd” vs “Private Limited”).

What accounting standard or regulatory framework does this workflow support?

Budget-to-actual variance analysis is a core Board-reporting obligation under the Companies Act 2013 and is referenced in the ICAI Guidance Note on Internal Financial Controls 2015 as a required process-level preventive control. For Ind AS preparers, the workflow supports the segment reconciliation disclosures required by Ind AS 108 (Operating Segments) Para 28. US GAAP entities will find the output structure consistent with ASC 280 segment-reporting documentation requirements. For listed entities, the management commentary output supports the MD&A obligation under SEBI LODR Regulation 34(2)(e).

Does this workflow handle multi-entity or multi-cost-centre structures?

Yes. The two files can contain any number of cost centres; matching runs at the account_code + cost_centre grain, so CC-OPS-01, CC-MKT-01, CC-HR-01 and CC-SAL-02 are each treated as distinct match units in the same upload. For multi-entity consolidations, run each legal entity as a separate workflow run and assemble the resulting variance packs into a consolidated view afterward. The period label and entity name from the sheet name are included in the Excel pack filename to keep runs distinct.

How does Cadel integrate with Tally, NetSuite, or SAP for the trial balance export?

The workflow ingests standard .xlsx trial-balance exports. TallyPrime users export the Trial Balance report to Excel directly from the Gateway of Tally. NetSuite users export via Financial Statements → Trial Balance to Excel. SAP users can use transaction S_ALR_87012277 (Balance Sheet / P&L Statement) or the FAGLL03 GL line-item report exported to spreadsheet. No API connector is required; the file-based ingest accommodates all three systems without configuration changes at the ERP end.

Can this workflow detect spend approved outside the budget cycle?

Yes. The Unbudgeted Spend exception fires on every actuals line that has no corresponding budget row — regardless of amount. This catches one-off spend approved verbally outside the formal budget amendment process, new vendor engagements without a sanctioned budget head, and cost-centre restructuring that was not reflected in the budget workbook before month-end close. Each unbudgeted line is isolated in the dedicated exception tab of the Excel pack with the full actual amount recorded as the variance, making it straightforward to present to the Audit Committee as a list of unsanctioned expenditures requiring retrospective approval.

How does this compare with a manual VLOOKUP-based process?

A VLOOKUP-based process fails silently on four known error classes. First, trailing spaces in cost-centre codes prevent a join, producing false Source-Only mismatches. Second, accounts renumbered mid-year create join failures. Third, zero-actual lines produce an undefined percentage (divide-by-zero), which is either omitted or manually zero-filled. Fourth, unbudgeted actuals never appear in the VLOOKUP result because the lookup direction is budget-to-actuals only — a separate reverse lookup is required, and most teams never run it. Cadel’s matching engine handles all four deterministically on every run, with the exception reasons surfaced explicitly in the output so the controller knows exactly what to investigate.