Say you sell a maintenance agreement for $150 a year, two visits included. The price sounds fair, maybe even a little generous to the customer. But if each visit costs you close to $93 once you count labor, parts, and overhead, that $150 agreement is losing you $36 a year, and you won't see it until you add up every account at the end of the season.
An HVAC maintenance agreement is a fixed annual fee covering a set number of scheduled visits, usually with a discount on repairs and priority scheduling folded in. Price one the same way you'd price a flat-rate task: cost out each visit, then set a margin, rather than picking a number because it sounds close to what other shops charge.
This guide covers what an agreement should include, how to price it, and a worked example you can run your own numbers through.
What a maintenance agreement covers
Most agreements bundle a few things into one annual price.
- A set number of visits. One visit a year covers a single system. Two visits, one in spring and one in fall, let you check cooling and heating separately.
- A defined checklist per visit: filter change, coil and condensate check, electrical connection check, refrigerant and airflow check, and a safety inspection on the furnace or heat pump.
- Priority scheduling if the system breaks down between visits.
- A discount on repair parts or labor for anyone enrolled, usually the biggest reason a customer signs up in the first place.
What goes on that list is a decision for you, not a fixed standard. Write it down so a customer knows exactly what the fee buys and a tech knows exactly what to check at every visit.
How to price it
Cost out one visit the way you'd cost out any task on a price book: the burdened labor cost for the time it takes, the materials used (a filter, refrigerant if it's part of the visit), and a share of overhead. Multiply that per-visit cost by the number of visits in the agreement, then set a margin on top the same way as any other flat-rate price. The guide to calculating a burdened labor rate covers the labor input, and the flat-rate price calculator turns labor, materials, overhead, and margin into a price.
A repair discount changes the math, since it lowers revenue on any repair an enrolled customer needs. Price the discount as a cost of the agreement, not a free perk, by estimating how many enrolled customers call for a repair in a typical year and what the discount costs on those calls.
ACCA's own trade blog put the market average for a residential maintenance agreement at around $225 a year. That's one trade publication's estimate of a broad national average, not a number that fits every shop's cost structure, service area, or visit count. Use it to sanity-check your own price, not as the price itself.
A worked example
The figures below are a made-up example with round numbers, not a real price book. Use your own labor, materials, and overhead figures instead.
| Line | How it's figured | Amount |
|---|---|---|
| Labor per visit | 1 hour x $58/hour burdened labor cost | $58 |
| Materials per visit | Filter and minor parts | $15 |
| Overhead per visit | Share of shop overhead for the visit | $20 |
| Cost per visit | $58 + $15 + $20 | $93 |
| Cost for two visits | $93 x 2 | $186 |
| Agreement price | $186 divided by 0.75, for a 25 percent margin on price | $248 |
That $248 covers two visits a year at a 25 percent margin, before any repair discount is priced in. Change the visit count, the labor rate, or the margin, and the agreement price changes with it.
One plan or several tiers
You can offer one flat plan or a few tiers that differ by visit count, priority level, or the size of the repair discount. A single plan is easier to sell and explain. Tiers let a customer pick more coverage without you having to price every option from scratch, since each tier is still built from the same per-visit cost with a different visit count or discount layered on.
Reviewing agreement pricing
Ken Misiewicz, president of ACCA member Pleune Service Company, described how his shop handles this: margins get reviewed at the customer level throughout the year, then addressed formally during preventive maintenance renewals. Renewal time is a natural checkpoint, since the agreement is already up for a new price. Recheck your labor, materials, and overhead figures at each renewal cycle, not only when a customer asks why the price went up.
SpanCrew charges $99 a month flat for the whole crew, with no per-tech pricing, currently in early access.