Trades industry news, updated weekly
Business Tips

Your Overhead Rate Is Calculated Backwards

Maria ChenMaria Chen··12 min read

Your Overhead Rate Is Calculated Backwards

Sit with this. In 2019, I pulled the P&L on a 14-truck residential HVAC shop my firm was evaluating for acquisition. The owner had been losing money on every install for three years. Not a little money. Every install. He didn't know it. His overhead percentage looked reasonable because he had calculated it during a strong Q3 when revenue was running high. The rate felt right because the math had been done when the denominator was flattering.

When you express overhead as a percentage of revenue, you get a number that is accurate in exactly one scenario: the month you calculated it.

The Revenue Percentage Trap: Why Overhead Rates Break When You Need Them Most

Your overhead costs do not scale with revenue. Rent doesn't care what you billed in March. Commercial auto insurance doesn't pause while your techs take a week down. The office manager's salary shows up on the first of the month whether your trucks ran twenty calls or two hundred.

When you set overhead as a percentage of revenue, you are assuming the overhead burden rises and falls with your workload. It doesn't. In high-revenue months, the fixed cost pool spreads across a large base and the percentage looks healthy. In slow months, the same fixed costs consume a larger share of a smaller number and the percentage spikes. If you priced jobs using the rate from your good month, you underpriced every job you sold in your slow months — which are typically when you most need the margin.

The deeper problem: collapsing everything into a single percentage hides which category is actually hurting you. Fixed costs and variable costs behave differently. Blend them and you lose the ability to find the problem. You just know things feel tight, and you can't tell whether it's the insurance renewal, the fuel cost, or the non-billable drive time eating you.

That 14-truck shop? Overhead percentage on paper was 31%. What it obscured was that the calculation had been run against a Q3 that included three large commercial retrofit jobs that didn't repeat. The actual overhead burden in a typical quarter was closer to 44% of revenue. Every install was priced to recover 31%.

What Overhead Actually Is: A Fixed-Cost Recovery Problem

Stop thinking about overhead as a percentage. It is a number of dollars you owe every year whether you open your doors or not.

Your rent is, say, $36,000 a year. Commercial auto insurance — which has been running 14–22% higher each renewal year since 2021, per NICB reporting — might be $28,000 for a four-truck shop. Add vehicle payments, dispatching software, flat-rate book subscription, accounting, shop utilities, and admin labor that never touches a tool. That pool of fixed and semi-fixed costs is what you owe before you earn the first dollar of profit.

The correct question is not "what percentage of revenue does this represent?" It is "how many billable hours do I need to run to recover this number?"

That question changes how you price.

Take your total annual overhead, divide by your projected billable hours, and you get an overhead cost per billable hour. That is the floor your labor rate has to clear before profit begins.

The overhead rate you calculated when revenue was running hot is not your overhead rate. It's the overhead rate for the version of your business that only exists in Q3.

Technician wages and burden belong here too, though they often get miscategorized. A tech riding a truck who is paid 40 hours per week regardless of billable output — his drive time, shop time, callbacks — is effectively an overhead cost. The shops that account for this end up with a very different picture than those assuming 40 billable hours out of a 40-hour tech.

The Billable Hour Is the Unit. Build Your Rate Around It.

Step one: establish total annual overhead. Everything that isn't direct labor on a job and parts purchased for that job.

Step two: estimate realistic billable hours. Not clock hours. Not scheduled hours. Hours that produce revenue on a ticket.

This is the second place most shops go wrong. I've audited shops projecting 1,800 billable hours per truck per year. When I pull actual dispatched calls and average hours on site from the field management software, the real figure is usually closer to 1,400, sometimes lower. The gap between 1,800 and 1,400 is 22%. If your overhead rate was calculated against the higher number, you are undercollecting overhead by 22%.

Step three: divide. Annual overhead divided by realistic billable hours equals overhead cost per billable hour.

Step four: compare that number to your current labor rate and find the gap.

Vehicle operating cost deserves separate attention because it is the item I see most consistently mispriced. Most shops use some version of a national average — something from a trade publication or a vendor rep. That number does not apply to your situation.

A Sprinter running 22,000 miles a year in Northern Virginia costs materially more per hour to operate than one running 14,000 miles in suburban Phoenix. Insurance is higher here. Maintenance scales with mileage. Fuel varies by region. The national average figures tend to run low, because the publications and vendors that produce them have an interest in showing costs as manageable. The ACCA publishes guidance on vehicle cost components — use it as a checklist, then populate it with your own actuals.

Run your own. Pull actual fuel, insurance, maintenance, and vehicle payment costs for the last 12 months. Divide by actual miles driven. Price from that number.

Why Flat-Rate Books Make This Worse

Flat-rate books from the major vendors are built on embedded labor and overhead assumptions. Those assumptions may have nothing to do with what it costs your shop to run a truck in your market. The price points are set to produce consistent revenue per ticket — useful for training CSRs, useful for reducing tech discretion — but consistent revenue per ticket is not the same as consistent margin per ticket.

The shops I audit that rely entirely on vendor flat-rate books show remarkably consistent average ticket revenue. They also show variable gross margin by job, because job complexity, actual time on site, and parts cost variance don't care about the book's internal assumptions.

This is the structural problem. Fixed costs require consistent overhead recovery per billable hour. A pricing structure that produces consistent revenue but variable cost recovery is going to have bad months for reasons the owner cannot see in the ticket-level data.

The flat-rate books are calibrated to support the vendor relationship, not your P&L. The updates, the training, the integration with the dispatching platform — all of it reinforces a pricing structure the vendor controls, built against cost assumptions that aren't yours.

Use a flat-rate book if you want the task-time structure and the CSR workflow. Calculate your actual overhead cost per billable hour first. Then back-solve what the book's base rate needs to be to hit that floor, and change the default. The vendor's base rate is their guess about your market. It is not your number.

A Real Number From a Real Shop

During my two years at Atlantic Comfort Partners, I analyzed shops coming into the roll-up. The pattern was consistent enough that I stopped being surprised by it.

Shops arrived with overhead rates they reported as 28–32% of revenue. Owners had worked to get there. When I rebuilt the calculation on a per-billable-hour basis — using actual vehicle operating costs from the maintenance logs, actual insurance premiums from the renewal documents, actual non-billable labor hours from the dispatch records — the real overhead rate came out between $54 and $68 per billable hour. Labor rates billed to the customer were typically in the $78–$92 range. Those numbers are from the shops I personally worked through at Atlantic Comfort, 2019–2021.

That sounds like it leaves room. It doesn't, once you account for parts margin compression, non-billable callbacks, and actual fleet utilization.

At $54 in overhead per billable hour and $78 billed, the math is thin. At $68 and $78, a shop with any job complexity or parts variance is losing money on individual tickets and not knowing it.

One more connection, and I make it in nearly every piece I write on pricing: days sales outstanding. A shop running 47-day DSO on commercial accounts is financing its own overhead gap with cash it hasn't collected yet. Two shops with identical overhead structures but different collection cycles are not in the same position. The one with slow collections is paying fixed costs today against revenue it hasn't received.

On residential, keep DSO under 30 days. On commercial, don't wait until day 31 to follow up — call on day 22, require ACH on any contract above a threshold you set, and treat a slow-pay pattern as a pricing signal.

What to Do Monday Morning

Pull the last 12 months of overhead expenses from your P&L. You want everything above the gross margin line that isn't direct labor on jobs and parts purchased for jobs. Don't try to build an exhaustive list from memory — export the P&L, go line by line, and ask for each item: did this require a truck to run a call, or would I owe it regardless? If it's the latter, it's overhead.

Separate your expenses into three groups: fixed costs that don't move with volume, semi-variable costs that move with volume but not proportionally, and vehicle operating costs pulled out on their own. Keep them separate because they behave differently when revenue shifts.

Pull actual dispatched calls and average hours on site from your field management software. Calculate actual billable hours per truck over the last 12 months. Not projected. Actual.

Divide total annual overhead by actual billable hours. That is your overhead cost per billable hour.

Compare it to the labor rate currently on your invoices. If the gap is less than $30 before parts margin, pay attention. If it's less than $20, you have a problem. Run it.

Build the spreadsheet so you can move the revenue assumption by 15% and watch what happens to your overhead cost per billable hour. A model that only works at one revenue level will fail you precisely when you need it — when revenue drops.


FAQ

My accountant already gives me an overhead percentage on my P&L — isn't that the same thing?

Your accountant is giving you overhead as a percentage of revenue you actually recorded. That's a backward-looking ratio, useful for comparing periods, not a pricing tool. It tells you what happened. It doesn't tell you what you need to charge going forward to recover fixed costs across a range of revenue levels. The per-billable-hour figure is what you price against. Use both; don't confuse them.

How many billable hours should I realistically project per truck per year?

Start with your actual last-12-months data from your field management software. In the shops I've worked with under 25 trucks, the actual figure has typically landed between 1,200 and 1,600, depending on market density and dispatch efficiency. The 1,800-hour figure appears in optimistic projections. I've rarely seen a shop hit it without tight dispatch management. Take your actual number, reduce it by 5% as a conservative buffer, and build your rate against that. Revise as your data improves.

What counts as overhead versus cost of goods sold for an HVAC shop?

Direct labor on the job — the technician's time while on site — and parts purchased for the specific job are cost of goods sold. Everything else is overhead. The grey area is technician time that isn't on a job: drive time, shop time, training, callbacks. Treat non-billable tech hours as overhead, not COGS. Otherwise you're inflating gross margin by hiding labor cost in the wrong bucket. Your accountant may set this up differently for tax purposes; that's fine. Run a parallel management P&L that accounts for it correctly.

If my overhead rate goes up, do I just raise prices — and what if my market won't bear it?

You have three variables: overhead cost, billable hours, and labor rate. If the market won't support a higher labor rate, recovering more overhead means more billable hours — better utilization, more trucks — or lower overhead costs. What you cannot do sustainably is absorb the gap.

Shops that believe the market won't bear higher rates usually haven't tested that belief recently. They're pricing against competitors they assume are cheaper. Some of those competitors are losing money. I've seen the P&Ls.

How often should I recalculate my overhead rate, and what triggers should make me do it sooner?

Once a year at minimum, at the start of your fiscal year. Recalculate sooner if your commercial auto insurance renews at a materially different number, if you add or remove a truck, if you hire or lose office staff, or if actual billable hours run more than 10% below your projection for two consecutive months. Insurance renewals have been moving fast enough since 2021 that waiting a full year to reprice the impact is a meaningful risk.

I use a flat-rate book from a vendor — can I adjust it to reflect my actual overhead?

Yes, and you should. Most flat-rate books have a base rate or labor rate multiplier you can modify. Calculate your overhead cost per billable hour using the method above. Establish the labor rate you need to cover it plus your target profit margin. Then back-solve what the book's base rate needs to be to produce that number on an average ticket. The vendor's default is their assumption about your market. Replace it with your actual number. The task-time structure can still be useful. The embedded pricing cannot be trusted as-is.

Enjoyed this article?

Get articles like this in your inbox every Monday. Free, no spam.

More from The Backcharge