Budget vs Actual Variance Analysis for SaaS: Formula, Drivers and a Worked Example

Planned and actual monthly bars side by side with the gaps between them highlighted

Variance analysis compares what you planned (the budget or forecast) with what actually happened, line by line, and explains why each gap occurred. The variance is Actual minus Budget, in dollars and as a percentage of budget. In a SaaS company the useful version goes one level deeper: it splits a revenue or cost miss into the drivers behind it (new logos, ARPA, expansion, churn, hiring dates, cloud and AI usage) so you know which assumption broke and whether the forecast needs to change.

Most budget vs actual guides were written for manufacturing, where variance means material price and labor efficiency. A subscription business misses its plan for different reasons, and the same miss can be harmless or serious depending on whether it repeats next month. This guide covers the formula and sign conventions, a full monthly BvA table, an MRR miss decomposed by driver with arithmetic that reconciles exactly, and the rules for when to reforecast. This is not accounting or financial advice; adapt the policy to your company and your board.

What variance analysis is (and what it is for)

The Association for Financial Professionals defines variance analysis as "a quantitative method used to assess the difference between planned and actual financial outcomes." The calculation is the easy part. The value is in the explanation, and in what you do with it.

A budget vs actual (BvA) review answers three questions every month:

  1. What is different? The dollar and percentage gap on each line of the P&L and each key metric.
  2. Why? The operating driver that moved: fewer deals, lower price, higher churn, a hire that started late, a usage spike.
  3. So what? Whether the gap is a one-off, a timing shift that reverses, or a permanent change that should flow into your revenue forecast and cash plan.

The variance analysis formula

Two numbers per line:

Dollar variance = Actual - Budget
Variance % = (Actual - Budget) / Budget x 100

The same formula works for forecast vs actual: swap the budget for the latest forecast. Many SaaS teams show both: the budget answers "did we do what we promised the board?", the forecast "did we do what we expected last month?"

Sign conventions: pick one and say it out loud

Published guides disagree. Some compute Budget minus Actual, others Actual minus Budget, and some flip the sign on expense lines so that a positive number always means "good". None of these is wrong. What causes confusion is a board pack where revenue and expense lines use different logic without saying so.

A simple convention that reads cleanly:

  • Always compute Actual minus Budget, so the sign tells you direction (above or below plan).
  • Add a separate F/U column (favorable or unfavorable) that tells you whether the direction is good or bad for profit.
Line typeActual above budgetActual below budget
Revenue, MRR, new logos, expansionFavorableUnfavorable
Expenses, COGS, churned MRRUnfavorableFavorable
Ratios where lower is better (CAC, churn rate, CAC payback)UnfavorableFavorable
Ratios where higher is better (gross margin, NRR)FavorableUnfavorable

"Favorable" describes this month's profit, not the health of the business. An expense line under budget is often the earliest warning that revenue will miss later.

Worked example: a monthly SaaS budget vs actual table

The numbers below are illustrative. They describe a hypothetical B2B SaaS company in March with about $400,000 of opening MRR. All figures were recalculated to make sure every total and percentage ties out.

LineBudgetActualVar $Var %F/U
Subscription revenue420,000413,000-7,000-1.7%U
Services revenue15,00018,000+3,000+20.0%F
Total revenue435,000431,000-4,000-0.9%U
Hosting (cloud)42,00047,000+5,000+11.9%U
AI inference12,00019,500+7,500+62.5%U
Support team25,00024,000-1,000-4.0%F
Total COGS79,00090,500+11,500+14.6%U
Gross profit356,000340,500-15,500-4.4%U
Gross margin81.8%79.0%-2.8 ptsU
S&M salaries120,000104,000-16,000-13.3%F
Paid marketing60,00066,000+6,000+10.0%U
R&D salaries150,000138,000-12,000-8.0%F
G&A45,00052,000+7,000+15.6%U
Total operating expenses375,000360,000-15,000-4.0%F
Operating income-19,000-19,500-500U

At the bottom line, the company missed by $500. A CEO skimming the last row would call this an on-plan month. It was not. Gross profit came in $15,500 short, and the gap was covered almost entirely by $28,000 of salaries that were not paid because three hires (two account executives and one engineer) had not started yet. Those savings are temporary. The gross profit miss is probably not.

This is the most common way a BvA review misleads: offsetting variances. Always read the lines, not just the total.

Which variances deserve an explanation? Materiality thresholds

You cannot write commentary on every line every month, and you should not. The managerial accounting textbook used in many US courses (OpenStax, Principles of Accounting, Volume 2: Managerial Accounting) describes the normal practice: "the management responsible for the variances must explain any variances outside of a certain range."

There is no official threshold for internal reporting. The "5%" figure finance people often quote comes from audit materiality, and even there the SEC staff warned in Staff Accounting Bulletin No. 99 that "exclusive reliance on this or any percentage or numerical threshold has no basis in the accounting literature or the law." Treat any threshold as a working policy, not a rule.

A practical policy uses both a dollar floor and a percentage, because each alone fails. A 40% variance on a $1,000 software subscription is noise; a 2% variance on a $400,000 revenue line is $8,000. For the illustrative company above, a reasonable policy is: explain any line where the variance is at least $5,000 and at least 5% of budget, and always explain the MRR bridge regardless of size. Scale the dollar floor with the company.

Applied to the table, that flags hosting, AI inference, S&M salaries, paid marketing, R&D salaries and G&A. Subscription revenue is only 1.7% below budget, but the MRR bridge rule catches it, and as the next section shows, it is the most important variance of the month.

Explain favorable variances too. OpenStax puts it well: explaining them "allows them to assess whether the favorable variance is sustainable." A favorable variance you do not understand is as dangerous as an unfavorable one.

Decomposing an MRR miss by driver

Generic BvA stops at "subscription revenue was $7,000 under budget." For a SaaS company that is the start of the analysis. Revenue is the output of a small number of drivers, and the MRR bridge (opening MRR plus new, plus expansion, minus churn, equals closing MRR) is where you find which one moved.

Continuing the illustrative company, here is the March MRR bridge, budget vs actual:

MRR bridgeBudgetActualVar $
Opening MRR400,000400,0000
+ New MRR40,00029,300-10,700
+ Expansion MRR8,0009,500+1,500
- Churned MRR8,00010,000-2,000 (U)
Closing MRR440,000428,800-11,200

The budget assumed 40 new customers: 20 on a Starter plan at $500 a month and 20 on Pro at $1,500, an ARPA of $1,000 and $40,000 of new MRR. It assumed 2.0% of opening MRR would churn. What happened: 32 new customers (18 Starter at $500, 14 Pro at an average of $1,450 after discounts), and 2.5% churn.

Step 1: split new MRR into volume, mix and price

Price, volume and mix analysis comes from manufacturing, but it maps cleanly onto subscriptions if "units" means new customers and "price" means plan price.

Volume variance = (Actual logos - Budget logos) x Budget ARPA
Mix variance = (Actual logos at list price, actual plan mix) - (Actual logos x Budget ARPA)
Price variance = Actual logos on each plan x (Actual price - List price)

  • Volume: (32 - 40) x $1,000 = -$8,000. Eight fewer deals at the planned average.
  • Mix: at list prices, 18 x $500 + 14 x $1,500 = $30,000. At the budgeted ARPA, 32 customers would have been 32 x $1,000 = $32,000. Mix = -$2,000. More customers chose the cheaper plan than planned (56% Starter instead of 50%).
  • Price: 14 Pro customers x ($1,450 - $1,500) = -$700. Discounting on Pro deals.

Check: -8,000 - 2,000 - 700 = -10,700, which matches the new MRR variance. Actual ARPA landed at $915.63 ($29,300 / 32), but the decomposition shows that most of the ARPA gap is mix, not discounting. That changes the conversation: the fix is in packaging and lead quality, not in sales discount approval.

Step 2: expansion and churn

  • Expansion: $9,500 vs $8,000 = +$1,500, favorable. See expansion revenue for how to model it by cohort.
  • Churn rate variance: (2.5% - 2.0%) x $400,000 opening MRR = -$2,000, unfavorable. Half a point of extra churn on the base costs as much as two Pro deals.

Step 3: reconcile

DriverImpact on closing MRR
Fewer new logos (volume)-8,000
Cheaper plan mix-2,000
Discounting on Pro-700
Higher expansion+1,500
Higher churn-2,000
Total-11,200

The drivers sum exactly to the closing MRR miss. If your decomposition does not reconcile, something is double counted or missing, usually contraction (downgrades) being netted inside churn or expansion.

Notice the size difference: subscription revenue missed by $7,000, but closing MRR missed by $11,200. Revenue for the month only partly reflects deals that closed during the month. Next month starts $11,200 lower, so if nothing else changes, April revenue misses by roughly $11,200 before any new variance. On an annualized basis, that is $134,400 of ARR run-rate ($11,200 x 12). This is why a "small" revenue variance in SaaS deserves more attention than its percentage suggests: it compounds.

SaaS variance drivers to track every month

Beyond the MRR bridge, a SaaS budget breaks along a predictable set of lines. Each one has an operating driver behind it, and the commentary should name the driver, not just the line.

  • New MRR: pipeline created, win rate, sales cycle length, and ramped sales capacity. In the example, the two unhired account executives explain part of the volume miss.
  • Churn and contraction: logo churn vs revenue churn, and whether the miss is concentrated in one cohort or segment.
  • Expansion: seat growth, upgrades, usage overages.
  • CAC: S&M spend divided by new customers. In the example, S&M spend (salaries plus paid marketing) was $170,000 vs $180,000 budget, favorable by $10,000, yet CAC rose from a budgeted $4,500 ($180,000 / 40) to $5,312.50 ($170,000 / 32). Spend under budget, efficiency worse. A line-item BvA never shows this; a metric BvA does.
  • Headcount timing (hiring lag): budgets assume start dates that recruiting rarely hits. Salary lines run favorable for months and then catch up. Track planned vs actual start dates by role, not just the salary total. The headcount planning calculator shows how start-date slips move cost.
  • Cloud hosting and AI inference COGS: these scale with usage, not with headcount, so they are the lines most likely to break a budget built on last year's run-rate. The AI inference line above is 62.5% over budget. The question is whether usage per customer rose (permanent) or one customer ran a large batch job (one-off). See AI COGS and gross margin for how to model inference cost per customer and what a 2.8-point gross margin drop means.

Timing, permanent and one-time variances

Every flagged variance should get one of three labels, because each one does something different to the forecast.

TypeWhat it meansExample from the tableForecast action
TimingThe cost or revenue still happens, just in a different month. It reverses.S&M salaries -16,000 and R&D salaries -12,000 (hires starting later)Move the start dates; do not bank the savings
PermanentThe underlying driver changed. It repeats or compounds.New logo shortfall, higher churn, AI inference per customerUpdate the driver in the forecast
One-timeA non-recurring event. It does not reverse and does not repeat.G&A +7,000 (a one-off legal bill, for example)Note it, no driver change

OpenStax frames the same idea for favorable variances: knowing the cause lets you plan for it "depending on whether it was a one-time variance or it will be ongoing."

Timing variances carry a second-order effect worth stating in the commentary. Late sales hires are favorable on the expense line this month and unfavorable on new MRR for the next several months, because a new account executive takes time to ramp. The variance report should connect the two, or the board will see a cost saving and a revenue miss as unrelated news.

When to reforecast and when to hold the budget

The budget and the forecast do different jobs. Keep the budget fixed for the year as the yardstick for accountability. Change the forecast whenever your expectation changes.

Reforecast when one of these is true:

  • A permanent variance is material. The new logo shortfall in the example compounds every month. Carrying a closing MRR of $440,000 into April when the actual is $428,800 overstates every month that follows.
  • A driver assumption is broken, not just a number. If win rate dropped from 25% to 18%, update the win rate, and let the model recalculate new MRR, CAC and cash.
  • The same direction repeats. Two or three consecutive months of churn above plan is a trend, even if each month is under the threshold.
  • Cash runway changes. If the forecast miss moves the cash-out date, it changes decisions about hiring and fundraising. Recheck cash runway and burn multiple after any material reforecast.

Hold the forecast when the variance is timing (already shifted by moving dates) or one-time. Reforecasting for noise makes the forecast jumpy and trains people to ignore it. If you want to see how big a permanent miss is before committing, run it as a downside case with the scenario planner.

The monthly BvA cadence and the board-pack variance report

A workable monthly rhythm for a seed to Series B company:

  1. Close the books (usually 5 to 10 business days after month end).
  2. Load actuals against the budget and the latest forecast.
  3. Compute variances and flag lines that cross the threshold.
  4. Collect explanations from budget owners (head of sales for new MRR, head of CS for churn, engineering for cloud and AI cost).
  5. Classify each as timing, permanent or one-time, and update forecast drivers for the permanent ones.
  6. Publish the variance report to leadership, and quarterly to the board.

A board-pack variance report usually has these columns per line: month actual, month budget, variance $ and %, year-to-date actual, YTD budget, YTD variance, current full-year forecast, and a one-line commentary for flagged items. Put the MRR bridge and a handful of KPIs (new logos, churn, NRR, CAC, gross margin, burn, runway) above the P&L, because that is where the board's questions start.

How to write variance explanations

A good explanation has four parts: the number, the driver, the type, and the action. Compare:

  • Weak: "Subscription revenue below budget due to lower sales."
  • Strong: "New MRR $10,700 below plan: 8 fewer logos (-$8,000) from two AE hires slipping to May, Starter-heavy mix (-$2,000), Pro discounting (-$700). Permanent for Q2; forecast updated to 34 logos per month until both AEs ramp."

How variance analysis plugs into the operating model

Variance analysis is only as precise as the plan it compares against. If the budget is a list of P&L totals typed into a spreadsheet, the best you can do is say "revenue missed by $7,000." If the budget is a driver-based SaaS financial model (logos, ARPA by plan, churn rate, expansion rate, start dates by role, cost per unit of usage), every P&L variance traces back to the driver that caused it, and the decomposition above falls out automatically.

The chain runs in one direction: drivers produce the MRR bridge, the MRR bridge produces revenue, revenue minus COGS and operating costs produces burn, and burn determines runway. A variance on a driver therefore has a known effect on cash. That is what turns the monthly BvA from a reporting exercise into a decision: if churn stays at 2.5%, how many months of runway does that cost?

This is how Adlega is built: you import historical actuals alongside a driver-based 36-month plan, so plan vs actual is visible at the driver level (new MRR, churn, headcount, COGS) rather than only at the P&L line. The AI CFO can walk through which assumption produced a number, with the formula behind it, which makes the "why" in variance commentary faster to write.

Common mistakes

  • Reading only the bottom line. Offsetting variances, like the $500 operating miss hiding a $15,500 gross profit miss, are the norm, not the exception.
  • Banking timing savings. Unhired salaries are a delay, not a saving. Counting them as savings inflates runway.
  • Analyzing revenue without the MRR bridge. A revenue variance mixes new, expansion, contraction and churn. You cannot fix what you have not separated.
  • Percent-only or dollar-only thresholds. Use both, or you will either drown in small lines or miss large ones.
  • Ignoring favorable variances. An unexplained favorable variance is often a timing issue or an accrual error that reverses next month.
  • Moving the budget. Rebudgeting every quarter destroys the yardstick. Hold the budget, update the forecast.
  • Treating usage-based COGS as fixed. Budget cloud and AI inference per customer or per unit of usage, not as a flat monthly number.

FAQ

What is budget vs actual variance analysis?

It is the monthly comparison of planned figures (the budget) with actual results, line by line, to measure the gap in dollars and percent and explain the cause. In SaaS it also covers metrics like new MRR, churn, CAC and gross margin, not just P&L lines.

How do you calculate budget variance?

Dollar variance = Actual - Budget. Variance % = (Actual - Budget) / Budget x 100. For example, revenue of $431,000 against a budget of $435,000 is a variance of -$4,000, or -0.9%.

What is the difference between a favorable and an unfavorable variance?

A favorable variance improves profit compared with plan: revenue above budget or costs below budget. An unfavorable variance reduces profit: revenue below budget or costs above budget. The same positive number can be favorable on a revenue line and unfavorable on an expense line, which is why a separate F/U column helps.

What is an acceptable budget variance percentage?

There is no official standard. Many teams combine a dollar floor with a percentage (for example, explain anything at least $5,000 and 5% off budget, scaled to company size) and always review revenue drivers. Even in audit, the SEC staff has said that relying only on a percentage threshold has no basis in the accounting literature.

How often should you do a budget vs actual review?

Monthly, after the books close, for leadership. Quarterly for the board, with year-to-date figures. Fast-moving metrics like new MRR and pipeline are often tracked weekly, but the formal variance report is monthly.

What is the difference between budget, forecast and actual?

The budget is the plan set at the start of the year and usually held fixed. The forecast is your current best estimate of the year and is updated as things change. Actuals are what happened. Budget vs actual measures accountability; forecast vs actual measures how good your latest expectations were.

What are the main types of variance analysis?

For revenue: volume (how many customers), price (what they paid vs list), and mix (which plans they chose). For costs: rate and usage. By nature: timing, permanent and one-time. A SaaS team adds driver variances from the MRR bridge: new, expansion, contraction and churn.

When should you reforecast after a variance?

When a material variance is permanent, a driver assumption is broken, the same miss repeats for two or three months, or the change moves your cash runway. Do not reforecast for timing or one-time variances; adjust dates or note the event instead.