Your Flat-Rate Book Is Built on Someone Else's Numbers
Your Flat-Rate Book Is Built on Someone Else's Numbers
The 14-truck residential HVAC shop had a flat-rate book. The owner had been using it for four years. It felt like discipline — consistent pricing, no technician discretion on labor rates, a professional presentation at the point of sale. When I pulled the P&L in 2019, he was losing money on every install. Had been for three years. He had no idea.
The book wasn't a fraud. It was something quieter and harder to catch: it was someone else's math.
The Book Has Numbers. They're Just Not Yours.
Every flat-rate book is built on a cost model. Somebody had to decide what an hour of labor is worth, what a diagnostic call should cover, what the overhead burden per ticket looks like. That somebody was either a large shop that built a proprietary system calibrated to their own operation, or a vendor. Vendors need the book to feel credible, and credibility means pricing at a level that produces closed tickets. A closed ticket at thin margin still generates the vendor's commission or software subscription. A lost ticket generates nothing. So the book prices to close, not to protect your cost structure.
I'll say this directly: the flat-rate pricing books sold by major industry vendors are calibrated to maximize the vendor's revenue, not your margin.
The 2019 shop was running a vendor-configured book. Gross margin on install tickets looked right around 34% on the P&L summary. When I rebuilt the cost-of-doing-business calculation from actual inputs, the install margin was 11%. The book had been papering over the gap for three years.
What's Actually Baked Into That Labor Rate
A flat-rate labor rate is supposed to cover four things: technician wage and burden, vehicle operating cost per billable hour, overhead allocation, and target net margin. Most shops don't think about it in those terms — they see a number in the book and use it. But those four inputs are sitting behind the number whether you look at them or not.
Technician wage and burden. Base hourly rate plus payroll taxes, workers' comp, health insurance, and any other employer-side costs. In the shops I audit, burden typically adds 28-32% on top of base wages — check your own payroll summary and your workers' comp invoice, because the number is specific to your state and your claims history. If your tech earns $28/hour, the fully-loaded wage cost is probably $36-39/hour before you've moved a truck.
Vehicle operating cost per billable hour. This is where most shops go wrong. Your fleet age, your insurance carrier, your fuel market, your maintenance history — none of that is a national average. It's specific to your shop and your zip code, and the book has no way to know it.
Overhead per billable hour. Rent, admin salaries, software subscriptions, marketing spend, shop supplies — divided by your actual annual billable hours. Not clock hours.
Target net margin. The percentage of revenue you intend to keep after all costs are paid. Not what you hope for. What you've committed to.
Here's the distinction that determines what the book actually delivers. Gross margin is revenue minus direct costs — labor and materials. It's the number most P&Ls show first, and it's not the number that tells you whether the business is healthy. What you need is the margin after overhead is absorbed, and overhead varies by shop in ways a vendor's book cannot account for. A flat-rate book produces predictable revenue per ticket. The margin per ticket is a different question entirely, and the book treats it as answered when it isn't.
The Shop the Book Was Built For Is Probably Not Your Shop
Most commercial flat-rate books are calibrated to an operation larger than the shop buying them. Larger shops run lower overhead per billable hour because they have more billable hours across which to distribute fixed costs. They buy equipment in higher volume. Their labor mix skews toward apprentices relative to journeymen, which pulls the average wage cost down. If you're running six trucks and the book was built on assumptions from a twenty-truck operation, you are pricing off a cost structure that doesn't match yours.
What that looks like in practice: a competitor running a model built on their actual costs wins the job at a price you can't match without losing margin, and you don't know why.
A flat-rate book produces predictable revenue per ticket. The margin per ticket is what the book is not built to protect.
I saw this from the inside at Atlantic Comfort Partners. When we acquired smaller shops, several were running flat-rate books whose assumptions were closer to our cost structure than to theirs. Post-close, when we standardized pricing to our own model, margins on those shops improved. Before close, the books had made the pricing look stable enough that neither the seller nor our own acquisition team had flagged the problem. The margin was an artifact of the cost model, not the operation.
The ServiceTitan version of this problem compounds it. A shop at five or six trucks signs an annual contract, pays the implementation fee, gets a price book configured by a consultant who's on-site briefly and then gone. The book becomes a fixture. The numbers feel authoritative because they came from a professional implementation. Nobody on the team knows how to edit them, and the question of whether they should is not being asked. Someone else's numbers, now locked into software with an annual renewal attached.
The Story: What Happens When the Book and the Costs Diverge
Back to 2019. The owner had been running the business for eleven years and was still working about fifteen hours a week in the field. He was good at it. The flat-rate labor rate in the book did not include a market-rate wage for his own time.
Most working owners I audit have this problem. Their labor is a real cost of producing revenue. If you're pulling field hours, that labor needs to appear in cost of goods sold at what you would pay a journeyman with equivalent skill. In the Northern Virginia and DC market where I do most of my audit work, that's been running $44-48/hour fully loaded for an experienced residential tech over the past few years. It was not in his book. It was not in his P&L. His reported gross margin on installs was 34%.
When I rebuilt the cost-of-doing-business calculation with actual inputs — real technician wages and burden, actual truck operating cost per billable hour (two vehicles past 180,000 miles, commercial auto premium up significantly at the last renewal), overhead allocation, and a market-rate line for his own labor — the install margin was 11%. Not a rounding error. Not a bad month. Three years of installs priced at a margin that didn't work.
The service call fee had the same fingerprints. The book had set a diagnostic price and the owner had stopped asking whether it was right. His costs had moved. The book hadn't. The gap distributed itself across labor and vehicle expense, invisible as a line item, showing up only as slow, inexplicable pressure on cash.
That's the specific risk of a flat-rate book that goes unexamined. It feels like financial discipline. It produces tidy tickets and consistent pricing. And it can conceal a structural margin problem for years, because the number in the book becomes the reference point and nobody runs the math behind it.
How to Find Out If Your Numbers Are In the Book at All
You need one number: your actual fully-loaded cost per billable hour. Then compare it to what the book implies.
Start with billable hours, because this is where the book's assumptions are most likely wrong. A technician on your payroll for 2,080 clock hours per year does not produce 2,080 billable hours. After drive time, callbacks, training, paid time off, and slow weeks, the actual billable-hour figure for a residential service tech is meaningfully lower — the shops I audit tend to run between 1,300 and 1,450, and I pull that from dispatch logs, not estimates. If the flat-rate book's implied overhead allocation is using a denominator closer to 1,800, every fixed cost in the business is being spread across hours that don't exist.
Run these four inputs and divide by your actual logged billable hours:
Total technician labor cost with burden. Every tech, every dollar of employer cost, full year. Pull the payroll summary and add the employer side of payroll taxes, workers' comp, and health benefits.
Total vehicle operating cost. Fuel receipts, insurance invoices, maintenance and repair logs, and an annual depreciation figure for each vehicle. On commercial auto: premiums in residential HVAC have risen 14-22% annually in most states since 2021 (NICB, 2024). A book last updated in 2020 or 2021 has a truck cost assumption that the rate environment has likely invalidated.
Total overhead. Rent or mortgage on shop space, all administrative salaries, software subscriptions, marketing spend, utilities, liability insurance, any fixed cost that isn't labor or materials.
Add those three. Divide by actual billable hours from your dispatch records. What comes out is your cost floor: the minimum rate per billable hour at which you break even before a dollar of profit.
Now look at the labor rate in your flat-rate book. Back-calculate what it implies about the inputs above. Is the implied rate above or below your floor? By how much?
If the book's implied rate is below your floor, you are pricing below cost on labor. If it's above, the next question is whether the margin cushion is intentional and sufficient, or just the accidental result of a book that happened to price high in your market.
I have a cost-of-doing-business spreadsheet that runs this calculation. If you want it, ask. The calculation is what matters. The number it produces is the one the book is not showing you.
FAQ
Is flat-rate pricing itself the problem, or just how it's implemented?
The format isn't the problem. Pricing jobs in advance so customers see a number before the work starts is defensible practice — it removes technician discretion on labor rates, which is good for consistency and margin control. The problem is adopting the system without verifying that the labor rate and task times inside it reflect your cost structure. The book is a container. The inputs have to be yours.
How often should I update the numbers in my flat-rate book?
At minimum, every year — and immediately when a major cost input shifts. Commercial auto insurance and technician wages are the two inputs I watch most closely in the shops I work with; both have moved faster than most books have been updated since 2021. If your insurance premium jumped at renewal or you gave the team a meaningful raise to stay competitive, update the book before the next call goes out.
My flat-rate book is built into ServiceTitan and I can't easily edit it. What do I do?
You can edit it, but the process isn't intuitive if the original configuration was done by an outside consultant. Start with a CSV export of the price book data — that lets you identify the implied labor rate per task and compare it against your actual cost floor. I've had clients work through the reconfiguration with a ServiceTitan trainer and find it useful. The sessions aren't free, but one or two of them costs less than a month of underpriced install tickets.
What's a reasonable target net margin on residential HVAC installs?
In the shops I've audited — mostly independent residential operations under 25 trucks — net margin on installs after all costs, including a market-rate owner salary, tends to cluster between 8% and 24%. The shops at the high end are generally in lower-competition markets, pricing correctly on equipment, or both. My working benchmark for a well-run independent is somewhere in the 12-16% range, and I flag anything below that for a cost-structure review. If your P&L shows higher than 20%, the first question is whether your own labor is fully costed in. Usually it isn't.
Does this problem apply to flat-rate books for service calls, or mostly installs?
Both, but the impact looks different. On installs, the margin problem tends to be large and slow — you don't know you're losing money until someone rebuilds the cost stack. On service calls, the problem is smaller per ticket but compresses cash flow over time rather than showing up as a clean margin miss. The diagnostic call pricing issue I see most often: a flat rate set several years ago that hasn't moved while truck and technician costs have risen. Same root cause in both cases — a number that was set once and never reexamined.
If the book's labor rate is higher than my cost floor, does that mean I'm fine?
It means your pricing clears your cost floor on labor, which is necessary but not sufficient. The next question is whether your task times are accurate. Flat-rate books assign a labor-hour allowance to each task, and if your techs are consistently running over those times, the adequate rate doesn't save you. I usually ask shops to log actual time against book time for three to four weeks of calls — enough to see a pattern without waiting for a full quarter. If average actual time is running more than 15% above the book's allowed time, the task times need recalibration alongside the rate.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
