How to Build an OpEx Forecast

Key Takeaways
- Match the method to the cost behaviour - fixed, headcount-driven, variable-with-revenue, driver-based, or discretionary. One blanket assumption across all of opex is the root of most forecast error.
- Compensation is the biggest line and the most timing-sensitive. Forecast it off a month-phased headcount plan and a fully-loaded cost per head, not a growth rate.
- Percent-of-revenue belongs only on lines that truly move with revenue - commissions, marketing programmes, payment fees. Keep it off rent, salaries, and G&A.
- Build monthly off a single assumptions block. Every category is one formula row, so a slipped hire or a re-timed campaign reflows the whole forecast.
- Watch the trend and the exit run-rate, not just the annual total. OpEx falling as a percent of revenue is operating leverage; the December run-rate is what you carry into next year's plan.
- Report budget vs actual by category. Net accuracy hides offsetting gross misses; a threshold on category variance is what catches the overspend the total masks.
For the broader driver-based framework this fits into, see financial forecasting methods; for the parallel build on the people-cost side, see headcount planning; and for keeping the forecast current as assumptions move, see how to build a rolling forecast. To track the forecast against actuals by category, explore the Budget vs Actuals template.
An opex forecast projects every operating cost below gross profit - salaries, rent, software, marketing, G&A - month by month, with a method matched to how each cost actually behaves. This guide covers the five cost behaviours, the right forecast method for each, the monthly build mechanics in Excel, and a full worked example: a six-category opex forecast for a scaling software company, rolled into an operating-income view and a budget-vs-actual variance report that shows why a forecast that looks 0.6% accurate in total can still be badly wrong line by line.
Operating expenses are where financial forecasts quietly go wrong. Revenue gets pressure-tested from five directions; opex often gets a single blanket assumption - "grow it with revenue" - bolted on at the end. But rent does not grow with revenue, salaries grow in steps as you hire, and marketing programmes are a management decision rather than a percentage. Applying one method to all of opex is the most common reason a budget misses.
An opex forecast is also the number a board holds management to. Revenue is partly outside anyone's control; the operating expense base is a plan the company sets and is expected to hit. For a software business scaling toward profitability, total opex commonly runs 65–85% of revenue, so a 5% opex forecast error is frequently the difference between hitting and missing the operating-income plan.
One clarification before the methods. This guide covers operating expenses - costs expensed in the period they are incurred, sitting between gross profit and operating income. That is different from capital expenditure, which is capitalised on the balance sheet and expensed over time through depreciation. Capex is forecast project-by-project with investment economics; opex is forecast as a period-by-period allocation tied to headcount, revenue, and contracts. See our guide to building a capex forecast for the other side of that line.
Match the forecast method to how each cost actually behaves. Most opex forecasts go wrong by applying one blanket method - usually percent-of-revenue - to lines that do not work that way.
Start With How Each Cost Behaves
Before choosing a formula, classify every opex line by its cost behaviour. There are five, and each maps to a different forecast method.
| Cost behaviour | Examples | How it moves | Forecast method |
|---|---|---|---|
| Fixed | Rent, insurance, audit fees, base software contracts | Flat until a contract renews or a step change | Run-rate hold plus escalator; hard-step at renewal |
| Headcount-driven | Salaries, benefits, payroll tax, per-seat licences | Scales with FTE count | Ending headcount x fully-loaded cost per head |
| Variable with revenue | Sales commissions, marketing programmes, payment processing, cost-to-serve | Roughly proportional to sales | Percent of revenue |
| Step-fixed | Facilities, management layers, infrastructure tiers | Flat, then jumps at a capacity threshold | Hold flat; model the step at the trigger point |
| Discretionary / lumpy | Consulting, legal projects, events, PR | Management decision, not a formula | Zero-based, rebuilt each planning cycle |
The mistake this table is built to prevent is reaching for percent-of-revenue by default. It is the right method for maybe a quarter of a typical opex base and the wrong method for the rest.
Method 1: Run-Rate Hold for Fixed Costs
Rent, insurance, audit and legal retainers, and base software contracts do not move with sales volume or headcount within a normal range. Forecast them by holding the current monthly run-rate forward, then layering in the two things that do change them:
- Contract escalators. Multi-year leases and enterprise SaaS agreements typically step up 3–8% at renewal or on an annual anniversary. A flat hold silently understates the back half of the year.
- Known step changes. A signed lease on additional space, a new insurance tier, an office move - these are dated events, not gradual drift. Put the step in the month it takes effect.
// Fixed cost: hold prior month, apply an annual escalator monthly,
// or hard-step to the known new rate at renewal
= IF(MonthNumber = RenewalMonth, NewContractRate, PriorMonth * (1 + AnnualEscalator/12))
Keep escalator rates and renewal months on the assumptions block so the whole schedule reflows if a renewal date slips.
Method 2: Headcount-Driven for Compensation
Salaries and benefits are almost always the largest opex line - in the worked example below they are just under three-quarters of total opex - and the most sensitive to timing. Forecast compensation off a month-phased headcount plan, not a growth rate.
Two rules matter most:
- Phase hires by start month, not by quarter. A role approved for "Q2" costs three months of salary if it starts in April and one month if it starts in June. A quarterly headcount plan hides a 2x swing in the cost that lands this year.
- Use fully-loaded cost, not base salary. Base pay is typically 70–80% of the real cost of an employee. Payroll tax, health benefits, retirement match, equipment, software seats, and bonus accrual add 25–40% on top. Forecast the loaded number.
// Salaries & benefits = ending headcount this month x fully-loaded annual cost / 12
= EndingHeadcount * Assumptions!$B$4 / 12
Our headcount planning guide walks through building the month-phased hiring plan and the fully-loaded cost per head that feed this line.
Method 3: Percent of Revenue for Truly Variable Costs
Reserve percent-of-revenue for the lines that genuinely move with sales:
- Sales commissions (a percent of bookings or revenue by design)
- Marketing programme spend run as a percent-of-revenue budget
- Payment processing and transaction fees
- Variable elements of cost-to-serve and customer support
// Variable programme spend = revenue x opex % assumption
= Revenue * Assumptions!$B$7
The failure mode is using this method on fixed or step lines. When revenue dips, a percent-of-revenue rent line drops with it - which never happens in reality - and the model shows a resilience the business does not have. When revenue grows, the same method fakes operating leverage that a fixed cost base would deliver anyway. Percent-of-revenue is a defensible shortcut for a long-range DCF model where line-level detail is not available; it is not an operating budget.
Method 4: Driver-Based for Everything Else
Many opex lines are neither fixed nor revenue-linked, but they do track an operational driver:
- Travel and entertainment scales with headcount (cost per head per month)
- Recruiting fees scale with hiring activity (fee per hire)
- Cloud and infrastructure scale with customers or usage (cost per active customer, cost per GB)
- Support tooling scales with ticket volume
For each, forecast the driver, then multiply by a unit cost:
// Recruiting & professional services = fixed retainer + fee per hire x hires this month
= Assumptions!$B$12 + Assumptions!$B$13 * HiresThisMonth
// Semi-variable software = fixed platform fee + per-seat licence x headcount
= Assumptions!$B$9 + Assumptions!$B$10 * EndingHeadcount
Driver-based forecasting is the backbone of a rigorous FP&A build; our guide to financial forecasting methods covers the broader approach this plugs into.
Method 5: Zero-Based for Discretionary Lines
Consulting projects, legal matters, brand and PR campaigns, offsites, and one-off events are management decisions, not formulas. A percent-of-revenue or "last year plus 5%" method invents a precision that is not there and tends to ratchet spend upward automatically.
Handle these zero-based: each planning cycle, rebuild the line from the specific projects and events actually planned, starting from zero rather than from the prior period. Our zero-based budgeting guide covers the full method; for opex forecasting the point is narrow - do not let discretionary spend inherit last year's number by default.
Building the Monthly Forecast
Assemble the categories into one monthly grid, one row per cost line, every formula referencing a single assumptions block. The design rules are the same as any FP&A model:
- No hardcoded numbers in a category row. Rates, headcounts, escalators, and unit costs all live on the assumptions sheet. A slipped hire or a re-timed campaign should reflow the entire forecast.
- One formula per row, copied across all twelve months. If a line needs a different formula in different months (a mid-year contract step), use
IFon the month number rather than overtyping cells. - Semi-variable lines get a two-part formula: a fixed base plus a variable rate times a driver, e.g.
= FixedBase + PerSeatCost * EndingHeadcount.
Worked Example: A Six-Category OpEx Forecast
A B2B software company is building its operating expense forecast for the coming year. Revenue starts at $1,000,000 in Month 1 and grows $50,000 per month, reaching $1,550,000 by Month 12 - a full-year total of $15,300,000. The opex assumptions:
| Assumption | Value |
|---|---|
| Month 1 revenue | $1,000,000 |
| Revenue growth | +$50,000 per month (linear) |
| Starting headcount (Month 1) | 40 FTE |
| Hiring plan | +2 FTE/month (Months 2–7), +1 FTE/month (Months 8–12) |
| Fully-loaded cost per FTE | $180,000/year ($15,000/month) |
| Rent & facilities | $80,000/month, steps to $95,000 in Month 7 |
| Software & SaaS | $12,000/month base + $250 per FTE per month |
| Sales & marketing programmes | 8% of revenue |
| Recruiting & professional services | $10,000/month retainer + $8,000 per hire |
| Other G&A | $30,000/month, steps to $31,000 in Month 7 |
The hiring plan takes headcount from 40 to 57 over the year (+2/month for six months, then +1/month for five months = 17 hires). Ending headcount by month: 40, 42, 44, 46, 48, 50, 52, 53, 54, 55, 56, 57.
The monthly build
Each category is one formula row. Salaries = ending headcount x $15,000. Software = $12,000 + $250 x headcount. Sales & marketing = 8% x revenue. Recruiting = $10,000 + $8,000 x hires that month. Rent and G&A hold flat with a Month 7 step.
| Category ($000) | M1 | M2 | M3 | M4 | M5 | M6 | M7 | M8 | M9 | M10 | M11 | M12 | Year |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Salaries & benefits | 600.0 | 630.0 | 660.0 | 690.0 | 720.0 | 750.0 | 780.0 | 795.0 | 810.0 | 825.0 | 840.0 | 855.0 | 8,955.0 |
| Rent & facilities | 80.0 | 80.0 | 80.0 | 80.0 | 80.0 | 80.0 | 95.0 | 95.0 | 95.0 | 95.0 | 95.0 | 95.0 | 1,050.0 |
| Software & SaaS | 22.0 | 22.5 | 23.0 | 23.5 | 24.0 | 24.5 | 25.0 | 25.25 | 25.5 | 25.75 | 26.0 | 26.25 | 293.25 |
| Sales & marketing | 80.0 | 84.0 | 88.0 | 92.0 | 96.0 | 100.0 | 104.0 | 108.0 | 112.0 | 116.0 | 120.0 | 124.0 | 1,224.0 |
| Recruiting & prof. svcs | 10.0 | 26.0 | 26.0 | 26.0 | 26.0 | 26.0 | 26.0 | 18.0 | 18.0 | 18.0 | 18.0 | 18.0 | 256.0 |
| Other G&A | 30.0 | 30.0 | 30.0 | 30.0 | 30.0 | 30.0 | 31.0 | 31.0 | 31.0 | 31.0 | 31.0 | 31.0 | 366.0 |
| Total OpEx | 822.0 | 872.5 | 907.0 | 941.5 | 976.0 | 1,010.5 | 1,061.0 | 1,072.25 | 1,091.5 | 1,110.75 | 1,130.0 | 1,149.25 | 12,144.25 |
| Revenue | 1,000 | 1,050 | 1,100 | 1,150 | 1,200 | 1,250 | 1,300 | 1,350 | 1,400 | 1,450 | 1,500 | 1,550 | 15,300 |
| OpEx % of revenue | 82.2% | 83.1% | 82.5% | 81.9% | 81.3% | 80.8% | 81.6% | 79.4% | 78.0% | 76.6% | 75.3% | 74.1% | 79.4% |
Total operating expenses for the year come to $12,144,250, or 79.4% of revenue. Salaries and benefits are $8,955,000 of that - 73.7% of total opex - which is why the compensation line, and the headcount plan behind it, deserve more forecasting effort than every other line combined.
Reading the trend, not just the total
The single most useful output here is not the full-year number, it is the OpEx % of revenue trend: it falls from 82.2% in Month 1 to 74.1% in Month 12. That decline is operating leverage - revenue is growing faster than a cost base that is mostly fixed and headcount-driven. The Month 7 tick upward (81.6%, from 80.8% the month before) is the rent and G&A step landing; a one-month distortion, not a reversal of the trend.
The exit run-rate matters more than the annual average for next year's plan. Annualising December: opex of $1,149,250 x 12 = $13,791,000 against revenue of $1,550,000 x 12 = $18,600,000, a 74.1% exit opex ratio. The company enters next year at a materially better cost structure than the 79.4% full-year figure suggests.
Rolling into operating income
Layering an 82% gross margin assumption on top gives the operating-income view the opex forecast ultimately feeds:
| Year total | Value |
|---|---|
| Revenue | $15,300,000 |
| Gross profit (82% margin) | $12,546,000 |
| Total operating expenses | $12,144,250 |
| Operating income | $401,750 |
| Operating margin | 2.6% |
On the December exit run-rate - 82% gross margin less a 74.1% opex ratio - operating margin is roughly 7.9%, which is the number worth carrying into the next planning cycle.
Budget vs Actual: Why Net Accuracy Hides Gross Misses
Once the forecast becomes the budget, it gets tracked against actuals. Here is Q1 (Months 1–3), where the budget total is $2,601,500:
| Category | Budget | Actual | Variance | Variance % | Note |
|---|---|---|---|---|---|
| Salaries & benefits | $1,890,000 | $1,845,000 | -$45,000 | -2.4% | Two hires started late |
| Rent & facilities | $240,000 | $240,000 | $0 | 0.0% | On plan |
| Software & SaaS | $67,500 | $74,200 | +$6,700 | +9.9% | Unbudgeted analytics tool |
| Sales & marketing | $252,000 | $291,000 | +$39,000 | +15.5% | Conference sponsorship pulled forward |
| Recruiting & prof. svcs | $62,000 | $78,000 | +$16,000 | +25.8% | Agency fees on two senior roles |
| Other G&A | $90,000 | $88,000 | -$2,000 | -2.2% | Minor underspend |
| Total OpEx | $2,601,500 | $2,616,200 | +$14,700 | +0.6% | - |
The headline says the quarter came in 0.6% over budget - close enough to call it a rounding error. The category detail says something different. Three lines are over budget by a combined $61,700 - more than four times the $14,700 net variance - and the only reason the total looks clean is that a hiring delay handed back $45,000 that happened to offset most of it.
That hiring delay is not good news; it is a revenue risk showing up in the cost line. Sales & marketing at 15.5% over and recruiting at 25.8% over are the misses that need explaining, and a report that shows only the total would never surface them. Track variance by category, with a threshold (say, the greater of 5% or $10,000) that flags a line regardless of whether the net nets out. Our budget vs actual analysis guide covers building that variance report properly.
Common Mistakes to Avoid
- Blanket percent-of-revenue across all of opex. Rent, salaries, insurance, and G&A do not flex with sales. Applying a revenue percentage to them understates cost in a downturn and manufactures operating leverage in growth.
- Forecasting compensation off a quarterly headcount plan. A hire approved for "Q2" costs three months if it starts in April and one if it starts in June. Model the start month, not the quarter.
- Using base salary instead of fully-loaded cost. Base pay is 70–80% of the real number. Payroll tax, benefits, retirement match, equipment, and bonus accrual add 25–40%. Forecast the loaded figure.
- Missing contract escalators and renewals. Multi-year leases and SaaS contracts step up 3–8% at renewal. A flat run-rate hold silently understates the second half of the year.
- Treating discretionary spend as a formula. Consulting, events, PR, and legal projects are decisions, not percentages. A "last year plus x" method ratchets them up automatically. Rebuild them zero-based each cycle.
- Reporting only the net variance. A total within 1% of budget can hide a 15% marketing overspend offset by a hiring delay. Report variance by category with a materiality threshold.
- Never re-forecasting. An opex forecast set in the annual budget and left alone is stale by February. Re-forecast on a rolling basis as the hiring plan slips and programmes get re-timed - see our rolling forecast guide.











