Your Overhead Allocation Is Wrong — And It's Mispricing Jobs
Your Overhead Allocation Is Wrong — And It's Mispricing Jobs
In 2019, I pulled the install P&L on a 14-truck residential HVAC shop in the mid-Atlantic. My PE firm was two weeks from closing on the acquisition. The job-level margin reports looked fine — sixteen to nineteen percent on installs, month after month. The owner was proud of them. He'd been watching those numbers for three years.
The shop had been losing money on installs for all three of those years. Not a little. Meaningfully.
The mechanism wasn't fraud. It wasn't bad estimating. It was a flat overhead allocation rate — a single percentage spread across every job based on revenue — hiding where overhead was actually going.
The Flat-Rate Overhead Myth: Why One Percentage Fits Nothing
You add up your annual overhead — rent, insurance, owner's salary, office staff, marketing, software subscriptions — and divide by annual revenue. You get a number, say 28%. You build that 28% into every job as a blanket adder. Job invoices for $4,000, you allocate $1,120 in overhead. Job invoices for $800, you allocate $224.
At year-end, the math closes. Revenue times 28% equals total overhead, roughly. Your accountant signs off, your P&L balances.
The problem is that overhead doesn't follow revenue. Revenue is an output. Overhead accrues during production — specifically, during the hours your people and trucks are active on a job. A $4,000 install that takes eight hours consumes twice the overhead of a $4,000 install that takes four hours. The invoice looks identical. The overhead consumption was completely different.
The flat rate looks right in aggregate and lies at the unit level.
When I run my cost-of-doing-business template with a shop for the first time — an annual overhead build with every fixed and semi-fixed cost itemized — the number that surprises owners most isn't the total. They usually know the total, roughly. What surprises them is watching that total get reallocated by labor hours instead of revenue, and seeing which jobs flip from profitable to underwater.
Most shops built their flat rate from a number that was never checked against actual job composition. Set it once, maybe three years ago, when the service-to-install mix was different. Hasn't moved since.
What Overhead Actually Follows
Time and truck usage. For shops under 20 trucks, those two variables are nearly inseparable — techs travel in trucks, trucks don't move without techs.
My standing fixation in client work is truck operating cost per billable hour. Most shops fold vehicle cost into their flat overhead rate using something from a trade publication or a pricing seminar. That number is a fiction. Commercial auto premiums vary by state and by claims history. Fuel costs vary by region. Maintenance costs vary by fleet age and how hard your techs drive.
Run your own number. Take the last twelve months of vehicle-related expense for one truck — fuel, insurance, registration, maintenance, repairs, depreciation — and divide by the billable hours that truck was in service. That's your actual cost per truck-hour.
Here's what that looks like on real job types. A four-hour replacement on a one-story house with an existing line set in good condition, AHRI-matched pair from distributor stock — call it four hours, two techs. If your truck-hour rate is somewhere in the range I see with mid-Atlantic shops, vehicle overhead for that job runs around $140.
Now take the same equipment to an attic installation where nobody ran a Manual D before booking. The AHRI match is identical. The invoice might be similar if you're working from a flat price book. But the job runs seven hours because the attic access is a pull-down stair, the existing ductwork needs a trunk line relocation, and your tech is making field decisions about static pressure that add two hours. Same two techs, seven hours. Vehicle overhead is now $245 or more. A $100-plus difference that your flat allocation never captured.
Two installs, identical equipment cost. One consumed 75% more overhead.
The Job That Was Lying to You
Back to that 14-truck shop.
When my team re-allocated the overhead by labor hours — standard post-close financial restatement at Atlantic Comfort Partners — the install gross margin dropped from the reported 17% to something closer to 6%. The service call margin held up, because service work is faster and dispatched in tighter windows.
The installs had been systematically underpriced for three years. The flat rate had assigned them proportional overhead based on their higher invoice values, which looked generous on paper. What it missed: installs carry disproportionately high labor hours, and labor hours are what overhead follows. So the flat percentage was too low in real terms for every install the shop ran.
The owner wasn't making bad decisions. He was making decisions from bad information.
At Atlantic, I saw this pattern in multiple acquisition targets. Every one of them had install margins on paper that didn't survive reallocation. This is the most direct explanation I have for why acquired shops underperform on gross margin within two years of close — the acquirer reprices using a more accurate allocation methodology, and the margin that existed only on paper stops appearing in practice.
Why Your Price Book Isn't Solving This
The flat-rate price books sold to residential HVAC shops bundle overhead as a flat adder into the labor line. The adder is typically expressed as a percentage of direct labor cost — slightly better than a percentage of revenue, but still missing the underlying driver.
A two-hour diagnostic call and a six-hour changeout do consume overhead at roughly the same rate per hour. That part of the logic is correct. But the price book doesn't surface that relationship transparently, and most owners never verify whether the adder in their book matches their actual overhead rate per labor hour. They assume it does. It usually doesn't, because the book was calibrated to a national average shop — which is not your shop.
The books produce predictable revenue per ticket. That's their selling point. They don't produce predictable margin per ticket, because margin depends on your costs.
The SEER2 transition made this visible. Equipment costs went up — I watched my clients absorb 10-15% increases on mid-tier residential systems during the transition, based on what they were paying distributors before and after the cutover. Shops that repriced held margin. Shops that didn't — and my experience puts that at roughly 60% of the independents I was talking to during 2023 — ran the new equipment through the old price book, which was already built on understated overhead allocation.
Equipment cost up. Overhead margin already thin. Jobs that looked fine at 17% were suddenly visible at 9%, and the owners couldn't explain the movement.
The overhead was always consuming that margin. The books just never showed it.
How to Build a Labor-Hour Overhead Rate
Four steps.
First, identify your total annual overhead. Every cost that doesn't go directly into a specific job: rent or mortgage on the shop, office staff wages and burden, owner's W-2 compensation at a market rate (not the tax-minimized number), marketing, software, building insurance, professional fees. Not materials. Not field labor. Not equipment. Everything else.
Second, count your total annual billable labor hours. Hours your techs are productive on jobs — not total clocked hours, not drive time in most allocation models. If you have time-tracking, pull it. If you don't, take your average crew size, multiply by the hours per week they're actually on jobs versus in transit or in the shop, and annualize it. Be honest about the ratio. In the shops I audit, productive field time as a share of total clocked hours typically runs somewhere between 60 and 75 percent, and most owners overestimate it.
Third, divide overhead by billable hours. That's your burden rate per labor hour. The specific number will depend entirely on your overhead and your crew's actual output — the calculation is more important than any benchmark I could give you.
Fourth, apply it at the job level. A four-hour job carries four times the overhead absorption of a one-hour job. Price accordingly.
The denominator matters as much as the numerator. When shops grow headcount without growing billable hours, fixed costs spread over more bodies but fewer productive hours per body — the burden rate rises even though nothing on the overhead side changed. That's when owners tell me margins are compressing despite higher revenue. The denominator moved against them.
One more thing on cash timing. Once you track overhead by labor hour, jobs that run over estimate show up differently. A four-hour overrun isn't just a labor cost problem — it's overhead absorption you didn't price for. That hits working capital before it hits net income. If your days sales outstanding is creeping and the bank account is doing things your P&L can't explain, job-level cost overruns are often where to look first.
What to Do Next Monday Morning
Pull the last ten closed jobs from your system. For each one, write down actual labor hours (not estimated), actual material cost, and the invoice total.
Take your total overhead expense for the most recent full month and divide by the total billable labor hours your crew logged that month. That's your rough burden rate. Not perfect — a full annual calculation is more accurate — but usable in an afternoon.
Apply that rate to each of the ten jobs: multiply actual labor hours by the burden rate, add actual material cost, add direct labor cost, subtract from the invoice. Job-level margin under labor-hour allocation.
Run the same ten jobs under your current flat percentage. Multiply each invoice by your overhead rate, same subtraction.
Compare the two columns. On service calls, the numbers will be reasonably close. On installs — especially attic jobs and anything where the ductwork needed field decisions — the gap will open. In the shops I've reviewed, that gap tends to be wider on installs than owners expect, and it's rarely in their favor.
If your installs are showing 8 points lower than your flat-rate P&L has been reporting, that's a math problem. You now have the math. Reprice the job types that consistently run long before you book another one at the old number.
FAQ
My accountant gives me overhead as a percentage of revenue for tax purposes — isn't that the same thing I should use for job costing?
No, and the distinction matters. Your accountant's overhead rate is designed to produce an accurate annual tax return. It is not designed to tell you whether a specific job made money. The tax-purpose rate allocates costs to the period they were incurred; the job-costing rate allocates costs to the work that caused them. For pricing decisions, you need the second version. Your accountant may be excellent and still have no reason to build you a labor-hour burden rate — it's a different tool for a different question.
We do a mix of service calls and equipment installs. Should I use different overhead rates for each type of work?
Yes, if your job data supports it. Service calls are shorter, dispatched more efficiently, and usually run one tech per truck. Installs run longer with different crew configurations and more coordination overhead. If you track labor hours separately by job type, build two burden rates. In the shops I've worked with, the install rate runs meaningfully higher per labor hour once you account for the additional dispatching, permitting, and inspection load that installs carry. The exact gap varies by shop — run your own data rather than targeting a benchmark.
How do I figure out my total annual overhead if some costs, like the owner's salary, are hard to pin down?
Use a market-rate replacement cost for the owner's labor, not the W-2 amount on the tax return. If you work 30 hours a week in the field, price that at what you'd pay a working foreman with your skill level. If you work 15 hours a week on the business side, price that at what an office manager runs in your market. Add those two figures as your owner's imputed labor cost, then add every actual fixed expense from your bank statements. The goal is to know what it costs to run this business if it were to continue without you subsidizing it with discounted personal wages.
If I switch to labor-hour allocation, do my flat-rate book prices still work, or do I have to reprice everything?
You don't have to reprice everything at once. Start by calculating your labor-hour burden rate and checking whether the overhead adder in your price book is above or below it. If the book is within 10 percent, selective repricing on long-duration job types is your priority. If it's 20 or more points off — which I see regularly in shops that haven't updated their book in two or three years — the installs are almost certainly underpriced and the diagnostic calls may be slightly overpriced. Fix the installs first. That's where the dollar exposure is.
What counts as "billable hours" — is that just time on-site, or does drive time count?
For overhead allocation purposes, I typically recommend using on-site hours as the denominator and tracking drive time separately as a vehicle cost. This keeps the calculation clean: overhead burden rate covers shop-related fixed costs, vehicle cost per truck-hour covers transit. Some shops fold drive time into billable hours, which works as long as you're consistent. What you cannot do is use total clocked hours — including shop time, training, and bench time — as the denominator. That deflates your burden rate and produces the same underallocation problem you're trying to fix.
We're at six trucks and growing. When does this problem get worse?
Two inflection points. One is when you hire a service manager or operations coordinator — a fixed overhead cost that doesn't scale with job volume. The other is when your install-to-service revenue ratio shifts. Shops that grow by adding installs to chase higher ticket revenue are increasing the share of labor-heavy work without repricing for it. The shops where I've seen the allocation problem become a genuine cash crisis are usually at 8 to 12 trucks, running installs at 55 to 65 percent of revenue, and using an overhead rate they set when installs were 35 percent of the mix.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
