Tech for CFO
All insightsGeometric illustration of ascending blocks with a rising arrow in teal and navy

June 26, 2026 · 5 min read · Tech for CFO

Budget Variance That Explains Itself: From Month-End Surprise to Real-Time Signal

Budget variance analysis is the practice of comparing actual results to the budget, line by line, measuring each gap in dollars and as a percentage, labeling it favorable or unfavorable, and explaining its cause. The goal is to decide what to do next: correct spending, update the forecast, or accept the difference as known.

Most finance teams already produce a budget-versus-actual report. The weak point is usually timing and explanation. A report that arrives two weeks after month end and says "marketing is over by $6,000" tells you what happened but not why, and by then the spend is committed. This guide covers how to calculate variance, how to decide which variances deserve attention, and how to get from a number to a cause.

How to calculate budget variance

Three formulas cover almost every case.

  • Dollar variance = Actual − Budget.
  • Percentage variance = (Actual − Budget) ÷ Budget × 100.
  • Direction. For revenue, actual above budget is favorable. For expenses, actual above budget is unfavorable. Keep the sign convention consistent across the report, or label every line F or U, so nobody has to work out which way is good.

For revenue lines, split the total variance into two parts so the explanation is specific:

  • Volume variance = (Actual units − Budget units) × Budget price.
  • Price variance = (Actual price − Budget price) × Actual units.

The two always add up to the total revenue variance. The same split works for cost lines that have a quantity and a rate, such as hosting (usage × unit cost) or contractors (hours × hourly rate).

Example: Northwind Analytics (hypothetical), one month

Northwind Analytics is a hypothetical software company. Here is its March budget against actuals.

LineBudgetActualVariance ($)Variance (%)F / U
Subscription revenue$500,000$470,000−$30,000−6.0%U
Cloud hosting$60,000$72,000+$12,000+20.0%U
Salaries$250,000$244,000−$6,000−2.4%F
Marketing$40,000$46,000+$6,000+15.0%U
Operating income$150,000$108,000−$42,000−28.0%U

The arithmetic:

  • Revenue: $470,000 − $500,000 = −$30,000, and −$30,000 ÷ $500,000 = −6.0%.
  • Hosting: $72,000 − $60,000 = +$12,000, and $12,000 ÷ $60,000 = +20.0%.
  • Operating income: budget $500,000 − $60,000 − $250,000 − $40,000 = $150,000; actual $470,000 − $72,000 − $244,000 − $46,000 = $108,000. The gap is −$42,000, or −28.0% of budget.

Now the revenue split. The budget assumed 1,000 seats at $500. Actual was 1,175 seats at $400, because a launch promotion discounted new seats.

  • Volume variance = (1,175 − 1,000) × $500 = +$87,500 favorable.
  • Price variance = ($400 − $500) × 1,175 = −$117,500 unfavorable.
  • Total = $87,500 − $117,500 = −$30,000, which matches the table.

That split changes the conversation. "Revenue missed by 6%" sounds like a demand problem. "The promotion added 175 seats but cost $117,500 in price" is a pricing decision someone can evaluate and either repeat or stop.

Decide what is worth investigating

Not every variance deserves a write-up. Set a materiality threshold before the month starts and apply it the same way every time. A common rule pairs a dollar floor with a percentage floor. If Northwind investigates anything at or above $10,000 or 10%, three lines qualify: revenue ($30,000), hosting ($12,000 and 20%) and marketing (15%). Salaries, at −$6,000 and −2.4%, do not.

A few practical refinements:

  • Use tighter thresholds on lines you can still change. Discretionary spend such as marketing and contractors can be adjusted next month; depreciation cannot.
  • Separate timing from permanent variances. An invoice that lands in April instead of March reverses on its own. A vendor price increase does not. Label each so the forecast only absorbs the permanent ones.
  • Watch the trend, not just the month. Three consecutive small overruns on the same line are more informative than one large one.

Get from the number to the cause

A variance explanation is only useful if it names a driver someone owns. "Hosting over by $12,000" becomes useful when it reads "hosting over by $12,000 because usage on the largest customer doubled after the March data import; unit cost was on budget." To write that sentence you need to drill from the account total to the transactions behind it: the vendor bills, the usage data, the journal entries.

This is where many teams lose time. According to the 2025 AFP FP&A Benchmarking Survey Report on Technology & Data, 96% of respondents use spreadsheets for planning, and 61% said lack of data reliability was a challenge (60% cited lack of accessible data). When the budget sits in one file and actuals come from a ledger export, every drill-down means another export and another lookup, and the explanation arrives after the decision window has closed.

Practical steps that shorten the path:

  1. Budget at the same level of detail you report actuals. If the ledger tracks hosting by vendor and the budget has one hosting line, you cannot split the variance without rework.
  2. Map budget lines to general ledger accounts once. Keep the mapping in one maintained table rather than inside each month's workbook.
  3. Refresh actuals more often than monthly. Weekly variance on the largest discretionary lines catches overruns while spending can still be changed.
  4. Write the commentary next to the number. A short, dated note per material variance builds a history that makes next quarter's forecast better.

Feed variance back into the forecast

Variance analysis pays off when it changes the forward view. For each material, permanent variance, decide whether to update the forecast:

  • A recurring overrun (Northwind's hosting) should raise forecast cost for future months, which in turn changes cash burn and runway. See our guide to burn rate management for how that flows through.
  • A one-time item should be noted and left out of the run rate.
  • A timing difference should be moved to the right month, not added twice.

Teams that move to rolling forecasts do this continuously instead of once a year; our piece on rolling forecasts covers the mechanics. Variance work also depends on a clean close, because actuals that are still moving produce variances that disappear a week later. The month-end close guide covers that side.

Tools

Spreadsheets work for a small number of lines and one entity. They become slow when the budget has hundreds of lines, when actuals need to be refreshed weekly, or when several people write commentary. Software built for this joins the budget to ledger actuals, applies thresholds automatically and lets reviewers drill to transactions.

VarianceDesk is Tech for CFO's budget-versus-actual app for QuickBooks Online. It is generally available and pulls actuals from QuickBooks so variance is current rather than a month-end snapshot. For a comparison with other options, see our roundup of planning tools for QuickBooks.

Checklist

  • Define the sign convention and label every line F or U.
  • Split revenue (and any quantity × rate cost) into volume and price.
  • Set a dollar-and-percent materiality threshold before the month starts.
  • Tag each material variance as timing or permanent.
  • Write a one-sentence cause that names a driver and an owner.
  • Update the forecast for permanent variances only.

Tools that can help

Tech for CFO apps that put the ideas in this article to work on your own numbers.