Commercial HVAC Maintenance Contracts: How to Price, Sell, and Deliver Them
A commercial PM contract is a year of labor you have promised at a fixed price. How to price it from hours instead of a per-unit going rate, sell it with an equipment survey, write terms that protect you, deliver every visit, and turn the contract into repair and replacement work.
Some links to software vendors may be affiliate links. If you click through and sign up for a tool, we may earn a commission at no cost to you. Affiliate relationships do not influence our rankings. How we review.
Residential maintenance plans are a product you sell to hundreds of homeowners at one price. Commercial maintenance contracts are not. Every building is different, every contract is a custom bid, and the customer is a property manager or facilities director who will compare your number against two other contractors and read the exclusions.
That makes commercial contracts easy to get wrong in both directions. Bid from a per-unit going rate and you win the work and lose money on every visit, because the roof hatch, the escort, and the twelve units with four filters each were never in the price. Bid carefully but sell it badly and you lose to the cheapest number on the page - often the contractor who will skip visits to make the price work.
Done well, though, a book of commercial contracts is the steadiest work an HVAC company can own. It fills the shoulder seasons, it pays in advance, and it puts your technician on the roof of every building in the portfolio, which is where repair and replacement work is found. This guide covers how to price a contract from labor hours, how to sell it with an equipment survey instead of a price sheet, what the contract needs to say, how to deliver it without missing visits, and how to make it renew. The commercial software guide on this site covers which platforms can run it; this one covers the business.
Key takeaways
- →Price every contract from hours, not from a per-unit going rate. In the example below, 12 rooftop units on quarterly visits take about 54 labor hours a year. At $60 an hour loaded plus $1,550 in filters, belts, and chemicals, the cost is about $4,790 - so a $400-per-unit price of $4,800 earns nothing, and a 40 percent margin needs about $8,000.
- →Sell with an equipment survey. Walk the roof, list every unit with make, model, serial, tonnage, age, filter and belt size, photograph the condition, and deliver a written report with the proposal. The survey is the sales call, and it is also the data you need to price correctly.
- →Offer two or three scopes - inspection and PM only, PM with filters and belts, and PM with repair labor covered - and only sell full parts-and-labor coverage once you have a couple of years of repair history on your own contracts.
- →The contract terms protect the margin: an equipment schedule, a scope per visit type, visit windows, exclusions, an annual escalator, billing in advance, and an early-termination clause that pays for completed visits. Promise priority dispatch, not a response clock you cannot staff in July.
- →Every PM visit should end in a condition report with photos and a deficiency list, and every deficiency should be quoted within two business days. If the visits on the example building turn up $6,000 a year in approved repairs at 50 percent margin, that adds about $3,000 of gross profit - nearly doubling what the contract itself earns.
- →Track actual hours against priced hours on every agreement. If the example building actually takes 70 hours, its cost rises to about $5,750 and the margin on an $8,000 contract falls from 40 percent to 28 percent - fix it at renewal, not after three years.
- →Forty contracts like the example is about $320,000 a year in contracted revenue, about $128,000 in gross profit, and roughly 2,160 hours of scheduled work - more than one full-time technician kept busy all year before a single repair is sold.
Why commercial contracts are a different business from residential plans
A residential plan is a standard product: one or two visits, a fixed price, a short list of perks. The economics work on volume and on averages - some homes take longer, some take less, and it evens out across a few hundred customers.
Commercial contracts do not average out. A 40-unit portfolio with roof access through a locked hatch and a building engineer who must escort your tech is a different job from three units behind a strip mall, and a single mispriced contract can be a large share of the program. Each contract has to stand on its own numbers.
The buyer is different too. Property managers and facilities directors are buying risk reduction and documentation: fewer tenant complaints, no surprise failures, and a written record they can show an owner or an asset manager. They will read the scope, compare exclusions, and ask what happens when a compressor fails. Owner-occupied small commercial - restaurants, medical and dental offices, retail, churches, light industrial - buys more like a homeowner with a bigger system, and is often the easiest place to start.
And the delivery obligation is real. A residential customer who misses a tune-up is mildly annoyed. A commercial customer who paid for four quarterly visits and received three has a breach of contract, and the next contractor who bids that building will point it out.
Price from hours, not from a going rate
The most common pricing method in commercial PM is a per-unit number someone heard once - so much per rooftop unit per year, regardless of size, access, or visit frequency. It is the fastest way to win contracts that lose money.
Price from the work instead. Take a 40,000 square foot office building with 12 rooftop units in the 5 to 10 ton range, on quarterly visits: two full PM visits a year in spring and fall, and two filter-and-belt visits in between. Estimate about an hour and a half per unit on a full PM and half an hour per unit on a filter visit. That is 12 units times four hours a year, or 48 hours, plus about an hour and a half per visit for check-in, roof access, setup, and the report - another 6 hours. Call it 54 labor hours a year.
At a loaded technician cost of $60 an hour, the labor is $3,240. Add materials: filters for 12 units changed four times a year, belts, and coil cleaning chemicals - about $1,550 in this example. Total direct cost is roughly $4,790.
Now compare. At a going rate of $400 per unit, the contract is $4,800 a year and earns about $10. To earn a 40 percent gross margin, the price is cost divided by 0.6 - about $8,000 a year, or $2,000 a quarter. That is the number to defend, and the survey and the proposal are how you defend it.
Adjust the hours for what makes a building slow: roof access by ladder or hatch rather than stairs, escorts or security sign-in, long distances between units, tight after-hours visit windows, and equipment that is old or poorly maintained. Price the first year of a neglected building higher, or quote a one-time catch-up service before the contract starts, rather than absorbing the dirty coils and seized belts inside a maintenance price.
Use the same loaded labor rate as your service department, and check the materials against current supplier pricing for the exact filter sizes on the survey. A contract priced from real hours and real filters is also a contract you can explain line by line when the property manager asks why you are higher than the other bid.
Sell it with an equipment survey, not a price sheet
The strongest commercial maintenance sale starts on the roof. Offer to survey the building's equipment: list every unit with make, model, serial number, tonnage, refrigerant, age, filter size and count, and belt size; note the condition of coils, cabinets, drains, and curbs; and photograph every unit and every problem you find.
Deliver the result as a short written report: an equipment schedule, a condition summary, the deficiencies you found ranked by urgency, and the units approaching the end of their service life. Storing the photos in CompanyCam ($63 a month for one user, $129 to $199 for three, plus $29 per additional user) or your field platform keeps them attached to each unit for every visit after this one.
The survey does three jobs. It shows the customer you know their building better than whoever they have now. It gives you the data to price the contract from hours instead of guessing. And the deficiency list is usually the first repair sale - often closed before the contract is signed.
Present two or three scope options rather than one number. Inspection and PM only is the lowest price and the lowest risk for you. PM with filters and belts included is the most common middle option. PM with repair labor covered - parts billed separately - is the higher tier for customers who want predictable costs. Show the price of each, what each includes, and what each excludes, side by side.
Hold full parts-and-labor coverage back until you have data. Pricing it means predicting how often a given building's compressors, motors, and boards will fail, and the only reliable source for that is a couple of years of repair history on contracts you already run. When you do offer it, price by equipment age and condition, and exclude major components or units that fail the initial inspection until they are repaired.
Who to sell to, and when
The best prospects are customers you already serve. Every commercial repair call from a building without a maintenance contract is a contract lead: the tech already has the access, has seen the equipment, and has just solved a problem. Have the tech note the unit count and condition on the job, and have someone follow up within a week with an offer to survey the rest of the building.
Property management companies are the second target, because one building can become a portfolio. Win one building, deliver every visit on time with clean reports, and ask the property manager which other buildings in their portfolio have a contractor they are unhappy with. That is a short conversation after a good year and an impossible one after a sloppy one.
Mind the calendar. Many property managers and facilities departments build next year's operating budgets in the late summer and fall, and many existing contracts renew on a calendar or fiscal year. A survey offered in August, when the cooling problems are fresh, lands a proposal in front of the budget. The same proposal in February may wait a year.
Expect a longer cycle than residential. A small owner-occupied business may sign in a week. A managed office building can take one to three months between the survey and the signature, with an owner or asset manager approving behind the property manager. Put follow-up dates on every open proposal and work them like any other quote pipeline.
Public work - schools, municipal buildings, some institutional buyers - usually comes through formal bid processes with their own requirements, which can include bonding, insurance minimums, and prevailing wage rules. It can be good work, but read the bid documents before treating it like a private building.
What the contract needs to say
A handshake scope is how contractors end up changing filters they did not price and arguing about who pays for a belt. Put these in writing in every contract.
An equipment schedule: every covered unit listed by location, make, model, and serial number. Equipment not on the schedule is not covered, and equipment added later gets added to the schedule and the price. A scope per visit type: a task checklist for the full PM and for the filter visit, so both sides know what was promised. ANSI/ASHRAE/ACCA Standard 180, which covers inspection and maintenance of commercial building HVAC systems, is a useful reference when writing the checklist and is recognizable to facilities professionals.
Visit frequency and windows: quarterly visits within a stated month, and full PMs scheduled before each season rather than in it. Exclusions: refrigerant beyond a stated amount, major components, damage from outside causes, code-required upgrades, and anything not on the schedule. Response: promise priority dispatch ahead of non-contract calls and a discounted labor rate on repairs. Do not promise a hard response clock - "four hours, 24/7" - unless it is priced and you can staff it in the worst week of July.
Money terms: an annual escalator in the low single digits, written into the contract rather than negotiated every year; billing in advance, monthly or quarterly, not in arrears after the visit; payment terms and any purchase order requirement, so invoices are not rejected. And an early-termination clause. Visits cost unevenly - the spring and fall PMs cost more than the filter visits - so a customer who cancels after the spring PM, having paid one even quarter, has received more than they paid for. The clause should say that on early termination the customer pays for completed visits at standard rates, less what they have paid.
Term and renewal: one year, renewing automatically unless either side gives 30 to 60 days of notice. Then set your own reminder 90 days before every renewal date, because the renewal is where pricing gets fixed.
Deliver every visit, and make each one visible
A maintenance contract that is not delivered is a refund waiting to be demanded. Generate every visit for the contract year on the day it is signed, inside each visit window, and track completion against the schedule weekly. A missed window should show up on a report, not in a phone call from the property manager.
Schedule contract work into the shoulder seasons on purpose. Full PMs before cooling and heating seasons, filter visits through the slow months. This is half the value of a contract book: in the example below, 40 contracts are about 2,160 hours of planned work spread through the year, which keeps techs billable in exactly the weeks the phone is quiet. The seasonality guide on this site covers using trough hours this way.
Every visit ends with a report. Unit by unit: what was done, readings taken, filter and belt changes, photos, and a deficiency list ranked by urgency. Capture readings consistently - measureQuick (free tier, Premier at $49 per user a month) gives techs a structured way to record and document system measurements - and send the report to the property manager the same week. Most facilities buyers cannot easily check whether a visit happened. The report is how they know, and it is what they forward to the owner.
Quote every deficiency within two business days. A deficiency that sits in a report for a month is forgotten; one that arrives as a priced quote with photos while the visit is fresh gets approved. Track deficiency quote turnaround and close rate as closely as you track visit completion.
Send an annual summary before each renewal: visits completed against the contract, deficiencies found and fixed, open recommendations, and the age and condition of each unit with an estimated replacement horizon. For the customer, that summary is the start of their capital budget. For you, it means the contractor who wrote the replacement plan is the first one asked to quote it.
Where the money actually is: pull-through and replacement
The contract itself pays for the visits and a reasonable margin. In the example, $8,000 a year at about 40 percent is roughly $3,200 of gross profit. That is good, steady money, but it is not the main reason to own a contract book.
The larger value is the work the visits find. Twelve rooftop units of mixed ages will need repairs, and the contractor with a tech on the roof every quarter is the one who finds them. If the visits on the example building turn up $6,000 a year in approved repairs at a 50 percent gross margin, that is another $3,000 of gross profit - nearly doubling what the building is worth to you. Your own number depends on the age of the equipment you cover, which is why it is worth measuring rather than assuming.
Then replacement. A building with four of its twelve units past 15 years old has a replacement program coming whether anyone plans it or not. The annual summary turns that into a planned project spread over two or three budget years instead of an emergency in August, and a rooftop unit replacement is a substantial commercial sale. Contractors who track equipment age across their contract book can see their replacement pipeline years ahead.
Measure pull-through per contract: repair and replacement revenue from contract customers, divided by the number of contracts. Watch it by technician as well. A tech who writes thin reports produces thin pull-through, and the gap between techs is usually a coaching problem rather than a difference in the buildings they cover.
Track profit per contract, and fix it at renewal
Every agreement should have its priced hours on record, and every visit should log actual hours against it. That one comparison catches almost every pricing mistake within a year.
Back to the example. Priced at 54 hours and $8,000, it earns about 40 percent. If the building actually takes 70 hours because of the hatch, the escort, and two units that need a coil cleaning every visit, labor rises to $4,200 and total cost to about $5,750. The margin drops to 28 percent. Left alone, the escalator will not close that gap.
Reprice at renewal, with the data. The annual summary already shows the work performed; add a short note on the hours the building actually needs and the new price. Customers who have received every visit and every report on time usually accept a correction backed by numbers. If one will not, that contract may be worth less to you than the hours it consumes.
Look at the whole book once a year: margin per contract, renewal rate, pull-through per contract, on-time visit completion, and deficiency quote close rate. A small number of contracts typically cause most of the problems. Fix or drop them before selling more of the same kind.
At scale, the book is significant. Forty contracts like the example is about $320,000 a year in contracted revenue and about $128,000 of gross profit before pull-through, with roughly 2,160 hours of work you can schedule a year ahead. That is more than one full-time technician's year, booked before the season starts.
What software needs to do for a contract book
A handful of contracts can run on a calendar and a spreadsheet. Past a dozen or so, the risk is missed visits and unknown margins, and that is what software has to fix.
Whatever platform you use, it should do four things for a contract: generate every visit from the agreement automatically, attach visits and reports to specific units on the equipment schedule, show completion against what the contract promised, and compare actual hours and materials against what the agreement was priced for. Ask the vendor to show all four in a demo using one of your real contracts. ServiceTitan, BuildOps, and FieldEdge all handle commercial service agreements at different scales; the commercial software guide compares them for commercial shops.
Billing in advance is mostly an accounting job. QuickBooks Online ($38 to $340 a month depending on tier) handles recurring invoices for monthly or quarterly contract billing; most shops let the field platform own the agreement and its visits and let accounting own the invoices, reconciled monthly. The integrations guide covers how that sync should work.
AI is useful in two places here. Scheduling tools that respect visit windows, site access hours, and technician skills keep a growing contract book from crowding out service calls. And quoting tools that pull the equipment data and deficiency photos into a proposal shorten the time from a PM visit to a delivered repair quote - which is the step that decides whether the contract produces any pull-through at all.
A 90-day plan to start or fix a contract program
Days 1 to 30: list every commercial customer you serve, with or without a contract. For existing contracts, pull the scope, the price, and the last 12 months of visits and hours, and work out the actual margin on each. Write your standard visit checklists and your contract template with the terms above.
Days 31 to 60: reprice anything below your target margin at its next renewal, and build a simple pricing worksheet - units, hours per visit type, access time, materials, loaded rate, target margin - so every new bid is priced the same way. Start the equipment survey offer on every commercial repair call from a building without a contract.
Days 61 to 90: generate every contract visit for the next 12 months on the schedule, start sending a report after every visit, and set a two-business-day standard for deficiency quotes. Put renewal reminders 90 days out on every contract. Then measure four numbers monthly: on-time visit completion, margin per contract, deficiency quote close rate, and surveys delivered against contracts signed.
Tools mentioned in this guide
Tool rankings for this topic
Frequently asked questions
Q.How do you price a commercial HVAC maintenance contract?
Price it from labor hours, not a per-unit going rate. Count the units, estimate hours per unit for each visit type, add time per visit for access, setup and the report, multiply by your loaded labor rate, add filters, belts and chemicals, and divide by one minus your target margin. For example, 12 rooftop units on quarterly visits might take about 54 hours a year; at $60 an hour plus $1,550 in materials the cost is about $4,790, so a 40 percent margin needs a price of about $8,000 a year.
Q.How much should a commercial HVAC maintenance contract cost per unit?
There is no reliable single per-unit number, which is why per-unit pricing loses money so often. The same unit costs very different amounts to maintain depending on size, filter count, visit frequency, roof access, escorts and condition. In the example in this guide, a $400-per-unit price on 12 units would have covered cost and earned nothing, while the hours-based price came to about $667 per unit per year. Price each building from its own survey.
Q.What should be included in a commercial HVAC maintenance agreement?
An equipment schedule listing every covered unit; a task checklist for each visit type; visit frequency and windows; exclusions; the repair labor discount and priority dispatch terms; an annual escalator; billing in advance with payment terms and any purchase order requirement; an early-termination clause that pays for completed visits; and the term and renewal notice period. ANSI/ASHRAE/ACCA Standard 180 is a useful reference when writing the maintenance checklist.
Q.How do you sell commercial HVAC maintenance contracts?
Start with an equipment survey rather than a price sheet. List every unit with make, model, serial, tonnage, age and filter and belt sizes, photograph the condition, and deliver a written report with a deficiency list and two or three priced scope options. The best leads are commercial repair calls from buildings without a contract, and property management companies, where one well-delivered building can lead to others in the same portfolio.
Q.Should a commercial maintenance contract include parts and labor?
Not at first. Inspection-and-PM and PM-with-filters-and-belts scopes carry little risk. Covering repair labor is a reasonable higher tier. Full parts-and-labor coverage requires predicting failures, and the only reliable basis for that is a couple of years of repair history on your own contracts. When you offer it, price by equipment age and condition and exclude major components or units that fail the initial inspection.
Q.How do you make money on commercial HVAC maintenance contracts?
Three ways: a margin on the contract itself when it is priced from real hours, repair work found on the visits, and replacement projects planned from the equipment data. Quote every deficiency within two business days and send an annual summary with equipment age and replacement horizons. In the example in this guide, $6,000 a year in approved repairs at 50 percent margin adds about $3,000 of gross profit to a contract that earns about $3,200 on its own.