How it's worked out
Hours per visit = for each equipment type, units × hours per unit, added up, plus the drive time for that visit. Hours per year = hours per visit × visits per year.
Annual cost = hours per year × loaded labor cost per hour + (materials per unit per visit × units) × visits.
Annual price = annual cost ÷ (1 − overhead % − net profit %). Overhead and profit are both a share of the price, not a markup on cost, so dividing is what makes the numbers come out right. If overhead and profit add up to 100% or more, no price works, and the calculator tells you so.
Monthly billing = annual price ÷ 12. Price per unit per visit = annual price ÷ (units × visits). Effective billed rate = annual price ÷ all hours, drive time included: compare it with the hourly rate you charge on service calls.
Worked example
With the example numbers above (all placeholders, not typical times or costs):
- Hours per visit: 6 × 1 + 2 × 2 + 4 × 0.75 = 13 unit hours, plus 1 hour of drive = 14 hours. Four visits = 56 hours a year.
- Labor: 56 × $55 = $3,080.
- Materials: (6 × $25 + 2 × $60 + 4 × $15) = $330 a visit × 4 = $1,320.
- Annual cost: $3,080 + $1,320 = $4,400.
- Annual price: $4,400 ÷ (1 − 25% − 15%) = $4,400 ÷ 0.60 = $7,333, or about $611 a month. That includes about $1,833 of overhead and $1,100 of net profit.
- Per unit per visit: $7,333 ÷ (12 units × 4 visits) = about $152.78. Effective billed rate: $7,333 ÷ 56 hours = about $130.95 an hour.
- Profit table: at 10% net profit the price is about $6,769; at 20%, $8,000.
Things this leaves out
- Repairs. PM contracts usually cover inspection and routine parts only. Repairs found on a visit are quoted separately, so they're not in this price.
- Access and site rules. Roof access, lifts, escorts, safety training, and after-hours windows all add time. Build them into your hours per unit or drive time.
- Coil cleaning, water treatment, and specialty work. If the contract includes them on some visits only, add their average hours and materials per visit.
- Price increases. This is one year. Multi-year contracts need an annual increase clause so rising labor and parts costs don't eat the profit.
We don't quote "typical" PM hours per unit or commercial contract prices, because we haven't found a solid public source for them. They depend on the equipment, the site, and your market. Time your own crews and price each site. Owners compare real numbers in the anonymous Owner Numbers survey.
Related tools and guides
Pricing plans for homeowners instead? The HVAC service agreement (maintenance plan) pricing calculator checks the margin per member and projects your agreement base. For how to price, sell, and renew agreements, read the HVAC maintenance agreements guide. The loaded labor cost you enter above comes from the HVAC labor burden calculator, and the HVAC break-even hourly rate calculator shows whether your effective billed rate beats what an hour really costs your shop.