Your Break-Even Number Changes Every Month — Does Yours?
Your Break-Even Number Changes Every Month — Does Yours?
In 2019, I pulled the P&L of a 14-truck residential HVAC shop my firm was preparing to acquire. The owner had been in business eleven years. He had a solid service reputation, a crew he'd kept together for years, and an income statement that looked survivable on an annualized basis. What he didn't know — and what took me about four hours with his QuickBooks export to confirm — was that he had been losing money on every install for three years.
Not a little money. Enough that the business was effectively subsidized by his service revenue and his wife's income from a separate job. Neither showed up anywhere in his shop P&L.
The damage wasn't spread evenly across the year. It was concentrated in June through August, when his crew was running flat-out, his labor was constrained, and his pricing hadn't moved in two years. The busiest quarter was producing the worst margins. He had no idea, because the annual number blurred it into something that looked like treading water.
That's the problem with break-even analysis as most contractors run it. It's a January fiction — a single flat number derived from annual inputs applied uniformly across months that are not uniform.
The Break-Even Number You're Using Is a January Fiction
The standard break-even calculation isn't complicated. Divide total fixed overhead by gross margin percentage and you get the revenue you need before you earn a dollar of profit. Run it annually, divide by twelve, and you have a monthly target.
Most shops are getting this wrong in two separate ways.
The first error is methodological. Contractors routinely confuse markup and margin, and the math compounds fast. A shop that marks up labor 50% believes it's running a 50% gross margin. It's running 33%. At scale, across a full year of install revenue, this isn't a rounding error — it's the difference between a business that's building equity and one that's slowly liquidating it. I've sat across from owners who were certain of their margin and were off by 12 to 18 percentage points.
The second error is the time horizon. Even if the methodology is right, the annual number hides a moving target. Your overhead doesn't cost the same per job in July as it does in February. Your labor hour isn't worth the same in August as it is in November. Pricing to an annual average means you're systematically wrong in both directions — and the direction that hurts is the one where demand is highest.
Your Overhead Doesn't Stay Still While You're Busy
Fixed overhead — rent, insurance, owner's compensation, office staff — doesn't change much month to month. But its cost per billable hour is not fixed, because billable hours change every month.
A truck running nine billable hours a day in peak season versus five and a half in February carries the same insurance payment and the same monthly depreciation either way. Its fully loaded cost per billable hour in July is materially lower than in February because fixed costs are spread across more hours. Shops using a flat annual average vehicle cost per billable hour are undercharging in July and, mildly, overcharging in January. The asymmetry matters because July is when the volume is.
Peak season doesn't give you room to price low. It gives you room to price correctly. The cost of not doing that is an hour you can never sell twice.
When I was at De Anza learning psychrometrics in 2007, one of the first things that clicked was that HVAC systems don't perform at nameplate capacity under real-world conditions. A 3-ton unit doesn't deliver 36,000 BTU/hour when entering air is saturated and static pressure is wrong. The rated number is a controlled-condition fiction.
Your annual break-even model works the same way. It's the nameplate. The actual margin you produce is a function of real load at real conditions, month by month — and a model built on annual averages will fail you in peak exactly when you need it to hold.
What Constrained Labor Actually Does to Your Real Break-Even
In peak months, when every qualified tech is booked, labor becomes the binding constraint. Every hour committed to a mis-priced job is an hour that cannot be sold at the rate the season is actually offering.
That's opportunity cost, and it belongs in your break-even calculation even though it never shows up on a ticket.
I ran service calls in Sunnyvale at Bayview Mechanical and later at Caldera, and the labor market I worked in there bears no resemblance to the national average story. Journeyman-level techs in active-competition metros are scarce in a way that varies enormously by geography. The BLS JOLTS data shows the shortage is worst for journeyman techs in metros where roll-up consolidators are competing for the same small pool. An hour of constrained labor in that market carries a cost that never appears in a price book — the foregone revenue from the higher-margin job you couldn't take.
The number that matters in a constrained peak period is contribution margin per hour, not gross margin per job.
Contribution margin is revenue minus variable costs only — no overhead allocation. It answers a specific question: for each hour I sell, how much am I generating toward fixed costs and profit? In a constrained period, you want to stack hours with the highest contribution margin per hour. A flat-rate book doesn't give you that. It gives you a price per ticket. Whether that ticket consumed two hours or four, and what you could have sold those hours for instead, is invisible.
The Flat-Rate Book Isn't Built for August
The major vendor pricing books are not designed around your margin. They're designed around predictable revenue per ticket — a floor of consistency that keeps techs from pricing in their heads on every call. What they don't produce is predictable margin per ticket.
The mechanism: the book fixes the price and absorbs all variation into margin. The shop owner sees full tickets. The margin degradation is invisible job by job and only surfaces when someone pulls a quarterly P&L and notices the busiest quarter produced the worst install margins. That's exactly what I found in 2019. It's what I find in roughly half the shops I audit.
The SEER2 transition made this concrete. In shops I worked with through that period, the pattern was consistent: equipment cost rose, the labor line in the flat-rate book stayed flat, nobody reconciled job-level material cost against the book's embedded assumptions, and installed prices didn't move. The book didn't flag the drift. It just quietly compressed margin on every system sold until someone ran the actual job cost.
That's an information failure. The flat-rate book, used without active reconciliation, suppresses the information you need to catch it.
What the Numbers Actually Look Like
I'll describe a shop I worked with a few years ago. I'm not using the name, but the owner would recognize this immediately.
Eleven trucks, residential HVAC and light commercial, DC-metro area. Nine years in business. Solid reputation. A service manager he trusted. He believed he was running 21% net margin. When I modeled peak season separately from the annual number, the actual figure for those months was closer to 8%.
Two things were driving the gap.
His peak-month labor costs were higher than his annual average — overtime and one subcontracted crew covering overflow. Neither appeared as a separate line item. Buried in labor expense and cost of goods, annualized, they averaged down to something that looked manageable.
Then the cash conversion cycle. His office couldn't invoice as fast as installs were completing. He was finishing jobs Thursday and billing the following Tuesday. On third-party financed installs — he was using a partner, which was the right call — collection from install completion was running close to a month. In July and August, when install volume was at its highest, he was simultaneously capacity-constrained and cash-constrained.
When I asked his DSO, he didn't have the number. Most owner-operators under 15 trucks I've worked with can't tell me their days sales outstanding within a week's accuracy — DSO being the average number of days between completing a job and collecting payment. In February that's a background problem. In August, with 40% of annual install volume running through a six-week window, a slow collection cycle forces a credit line draw at the worst possible moment.
The mis-priced hours and the delayed receivables were stacking. Neither one appeared in the annual break-even number he'd been managing to.
What to Run on Monday Morning
You need three numbers: your break-even hourly rate in a slow month, a shoulder month, and a peak month. Not an annual average.
Step one: Pull actual billable hours per truck per month for the last 12 months. Use GPS logs, dispatch records, or your field management software. Your number, from your trucks, in your market. National average truck utilization figures are built from survey data across shops with wildly different conditions. They will not tell you anything useful about your overhead rate.
Step two: Calculate your fully loaded truck cost per billable hour for three representative months. February as slow, April or October as shoulder, July or August as peak. Fixed vehicle costs — insurance, payments or depreciation, registration — don't change. Variable costs scale with miles. Divide total monthly truck cost by that month's actual billable hours. The three numbers will differ, and the spread will likely surprise you.
Step three: Run overhead allocation against each month's billable hour count. Total fixed overhead divided by actual billable hours, three times. February's number is highest. August's is lowest. If you're pricing to an annual average, you're discounting yourself in your highest-demand window.
Step four: Add burdened labor cost per hour for each scenario. Peak months may include overtime or subcontractor premiums. If they do, they belong in the peak-month model.
Step five: Add your target net margin. Not what you've historically produced — what you intend to produce. Apply it to the fully loaded cost to get a minimum viable selling rate per hour for each scenario.
If all three rates come out identical, the model isn't finished. A correctly built model will show the peak rate lower per hour of overhead — because fixed costs are spread across more hours — but your pricing in peak should not drop to match. That spread is where the profit lives.
Run those numbers. Put them next to what you charged last August.
FAQ
What is break-even analysis for contractors, and why does it matter?
It's the calculation that tells you the minimum revenue required to cover all costs before a dollar of profit appears. The version most shops run — once a year, divided by twelve — produces a number that's accurate in approximately none of the twelve months it gets applied to. Billable hours shift. Overhead rate per hour shifts with them. The static annual number hides both.
Why does my break-even number change month to month?
Your fixed costs don't change, but the number of hours they're spread across does. Truck insurance in February and truck insurance in August cost the same. But if you bill 90 hours in February and 175 in August, the cost per hour is nearly half. At the same time, peak months often carry higher variable labor costs — overtime, subcontractor coverage — that push the calculation back up. The net result depends on your specific numbers. Run your own.
How is contribution margin different from gross margin?
Gross margin allocates a share of overhead to each job. Contribution margin strips that out — it's revenue minus variable costs only. In a labor-constrained peak period, contribution margin per hour tells you which job types generate the most return for each hour your crew commits. A job that looks fine on gross margin per ticket can consume four constrained hours at a below-market effective rate. Contribution margin per hour flags that. Gross margin per ticket doesn't.
Should I charge more in July than in February for the same job?
The math usually supports it, though not for the intuitive reason. Your overhead per billable hour is actually lower in July — fixed costs spread across more hours — which means your minimum required rate is lower. That headroom belongs in your net margin, not in a price reduction. On top of that, peak-season demand generally supports higher rates. Pricing flat all year means you're not capturing what a constrained, high-demand market is offering. That's a choice. Make it deliberately.
What is days sales outstanding and why does it matter in peak season?
DSO is the average number of days between completing a job and collecting payment. In peak season, when install volume spikes and office staff is stretched, invoicing slows and the cycle lengthens. A shop running 30-plus days to collect while doing the bulk of its annual install volume in six weeks is cash-constrained at the exact moment it's most capacity-constrained. Tracking DSO monthly — not annually — lets you see the cycle lengthening before it forces a credit draw.
Can I update my flat-rate price book once a year and call it done?
Annual updates are better than nothing. They still miss the seasonal dynamic entirely, and they miss mid-year cost movements — equipment prices, overtime rates, subcontractor premiums — that compress margin between updates. At minimum, reconcile your highest-volume job types against actual job cost quarterly. Not just the labor rate. The material cost and the hours consumed. The book won't do this for you.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
