HVAC Flat Rate Pricing - How to Build a Flat Rate Price Book
A flat-rate price is the cost of the task at its average time, plus a reserve for warranty callbacks, plus marked-up parts, divided by one minus your target margin. In the illustrative example below, a Condenser fan motor job that averages 1.75 hours with $165.00 of parts prices at $736.08. That price survives the occasional long job surprisingly well - it breaks even only at 4.85 hours, 2.8 times the average - but it is fragile to the one thing it is built on: get the average wrong by an hour and a 40% margin is really 27.1%.
None of the numbers here are market prices or a claim about what your area pays. They come from one set of made-up costs, and your price book comes from yours, run through the same steps.
The flat rate pricing formula
For each task in the book:
Flat-rate price = (average hours x loaded labor rate + callback reserve + parts cost x parts markup) / (1 - target margin)
where the callback reserve = callback rate x hours per return visit x loaded labor rate.
That is the whole calculator. Four inputs carry it:
- Loaded labor rate - not the tech’s wage, but wage plus van, insurance, licensing and admin per billable hour. $95.00 an hour in this example.
- Average hours for the task - measured wrench time, not drive time.
- Parts cost and markup - 1.6x here.
- The callback reserve - a return visit under warranty is unbillable by definition, so every price carries a share of one. Here, 8% of jobs come back and each return takes 1.5 hours, so every task carries $11.40.
Then divide by one minus the margin. Do not multiply by one plus it.
Worked example: one task, step by step
Condenser fan motor, illustrative inputs: 1.75 average hours, $165.00 of parts, $95.00 loaded labor, 1.6x parts markup, 40% target margin.
- Labor: 1.75 x $95.00 = $166.25
- Callback reserve: $11.40
- Parts: $165.00 x 1.6 = $264.00
- Cost: $441.65
- Price: $441.65 / 0.60 = $736.08, leaving $294.43 of profit on a job that takes the average time
The callback reserve is only 1.5% of that price. It is small, and it is the term that decides whether warranty work is a cost of doing business or an unplanned hole in the year.
Margin is not markup. Multiply the $441.65 cost by 1.40 instead of dividing by 0.60 and the price comes out at $618.31 - a margin of only 28.6%, and $117.77 less on every one of these jobs.
A small flat rate price book
The same formula across five illustrative residential tasks:
| Task | Average hours | Parts cost | Labor | Callback reserve | Parts at markup | Flat-rate price |
|---|---|---|---|---|---|---|
| Capacitor replacement | 0.75 | $28.00 | $71.25 | $11.40 | $44.80 | $212.42 |
| Condenser fan motor | 1.75 | $165.00 | $166.25 | $11.40 | $264.00 | $736.08 |
| Blower motor | 2.50 | $240.00 | $237.50 | $11.40 | $384.00 | $1,054.83 |
| Refrigerant leak search | 2.00 | $45.00 | $190.00 | $11.40 | $72.00 | $455.67 |
| Full system diagnostic | 1.00 | $0.00 | $95.00 | $11.40 | $0.00 | $177.33 |
Every row uses the same $11.40 reserve because the return visit costs the same whichever task caused it. If your callback rate differs by task - leak searches coming back more often than capacitors, say - give each task its own rate.
What the clock does to one flat-rate job
The fear with flat rate is the job that runs long. Here is the $736.08 Condenser fan motor job at different actual durations, after labor, marked-up parts and the callback reserve:
| Hours the job actually took | Net after costs and reserve | Margin |
|---|---|---|
| 0.75 | $389.43 | 52.9% |
| 1.00 | $365.68 | 49.7% |
| 1.75 | $294.43 | 40.0% |
| 2.50 | $223.18 | 30.3% |
| 3.00 | $175.68 | 23.9% |
| 4.00 | $80.68 | 11.0% |
| 5.00 | -$14.32 | -1.9% |
The fast job nets $389.43; the long one still nets $80.68 at four hours. The price only stops making money at 4.85 hours, 2.8 times the average it was built from. At five hours the job loses $14.32. The long job hurts, but it is survivable, and it is supposed to happen: the average already includes some long jobs, and the short ones pay for them.
The real risk: getting the average wrong
The price is derived from the average. So an error in the average is not one bad job - it is every copy of that price, on every call, until somebody re-measures. The price in the book stays $736.08; only the margin moves:
| Average you priced on | Average it really is | Margin you planned | Margin you get | Net per job |
|---|---|---|---|---|
| 1.75 | 1.75 | 40% | 40.0% | $294.43 |
| 1.75 | 2.00 | 40% | 36.8% | $270.68 |
| 1.75 | 2.25 | 40% | 33.5% | $246.93 |
| 1.75 | 2.75 | 40% | 27.1% | $199.43 |
| 1.75 | 3.25 | 40% | 20.6% | $151.93 |
| 1.75 | 3.75 | 40% | 14.2% | $104.43 |
If the true average is 2.75 hours instead of 1.75, the 40% margin you planned is really 27.1%. Half an hour off gives 33.5%; two hours off, 14.2%. Nothing on the invoice shows it.
Compare the two kinds of mistake in dollars. One job that runs to 4.00 hours costs $213.75 of the profit you planned, once. An average that is half an hour low costs $47.50 on every job; over 100 jobs that is $4,750.00, about 22 times the single long job. A long job announces itself. A wrong average never does.
Each hour on the average is worth $158.33 of price at these inputs (the loaded rate divided by 0.60), so every quarter hour is $39.58. Priced on 2.75 hours, the same task would be $894.42.
How to build a flat rate price book
- List the tasks you actually do, in the words you quote them in.
- Log wrench time per task, separately from drive time, for every job. A book built on memory drifts low, because the jobs that stick in the mind are the fast ones.
- Average the log, long jobs included. The long jobs belong in the average - that is how the flat rate pays for them.
- Price each task with the formula above, using your loaded rate, your parts costs and markup, your callback rate and your margin.
- Re-derive the book on a schedule - quarterly, or when parts prices move - from the logged average, not the remembered one.
An illustrative log of 10 Condenser fan motor jobs: 1.50, 1.75, 2.00, 1.75, 2.25, 3.50, 1.50, 2.00, 1.75, 2.50 hours. The average is 2.05 hours, not the 1.75 the book was built on, so the book’s $736.08 has really been earning 36.1%, not 40%. Repriced on the logged average, the task is $783.58, $47.50 more. The single 3.50-hour job is part of that: without it the average would be 1.89 hours, and keeping it in adds $25.51 to the price. That is the long job being paid for, in advance, by every customer.
How these were calculated
Price = (average hours x loaded rate + callback rate x return-visit hours x loaded rate + parts x markup) / (1 - target margin). A job’s net is the price minus actual hours x loaded rate, parts at markup and the callback reserve; margin is net divided by price. The break-even hour is the price minus parts at markup and the reserve, divided by the loaded rate. The error table prices the task on 1.75 hours and charges the job at the longer true average. Every figure was computed twice, by the code behind the product and by an independent implementation, and the two agree to the cent.
This post, like the kit, counts the callback reserve as spoken for on every job, so a job that takes exactly the average earns exactly 40%. All inputs - the labor rate, task times, parts costs, markup, callback rate and margin - are illustrative, not typical or market figures. None of this is financial, legal or tax advice.
If you want to build the book on your own tasks, times and costs, the kit below lays out the same arithmetic with blank price-book and time-log worksheets, and scripts for quoting flat rates, diagnostic fees and parts markup.