TemplateLast reviewed November 4, 2026

HVAC Maintenance Agreement Pricing Template (Free .xlsx)

Price an HVAC maintenance agreement from your own equipment list, visit hours, materials, drive time and margin, and track every renewal in one sheet.

It’s easy to price a maintenance agreement from what the last building paid, add a bit for the extra rooftop unit, and send the number. A year later it’s hard to say whether that agreement made money. Our HVAC maintenance agreement pricing template starts from what the agreement costs you to deliver: each unit and visit, the drive out, the filters and belts, and your overhead. Then it prices that cost at the margin you choose.

Download the HVAC maintenance agreement pricing template. It’s a plain .xlsx file with no macros and no sign-up. Replace the sample equipment, hours and rates with your own, and the annual, monthly and per-visit prices recalculate.

Video walkthrough

This short captioned walkthrough goes from the equipment list to the equipment types, then shows the Price sheet turning the annual cost into a price at your margin.

HVAC Maintenance Agreement Pricing Template walkthrough

Who this template is for

It’s for commercial HVAC contractors and the service managers who quote planned maintenance: rooftop units, split systems, boilers, exhaust fans and make-up air units on offices, schools, clinics and retail sites. It suits a shop that prices each agreement from the equipment on site, rather than from a flat rate per ton or per building.

The workbook answers four questions for one agreement at a time:

  1. How many labor hours and how much material does this equipment list need in a year?
  2. How many trips to the site does that take?
  3. What does the agreement cost us in total, once overhead is in?
  4. What do we charge per year, per month and per visit to keep our margin?

The fifth sheet keeps track of the agreements you’ve already sold and flags the ones coming up for renewal.

What’s in the workbook

There are five sheets, in this order:

  1. Instructions covers setup, the colour legend, how to import the file into a browser-based spreadsheet app, the limitations, and a note that every formula, layout choice and sample figure was written from scratch for this file.
  2. Types lists the kinds of equipment you service. Each type has visits per year, labor hours per visit for one unit, and materials per visit for one unit. It holds 30 types.
  3. Equipment is the list of units on this one agreement: a tag or description, the type (picked from a dropdown fed by Types) and the quantity. The sheet looks up the visits and works out labor hours and materials per year for each row. It holds 100 rows.
  4. Price holds your rates and builds the price: labor hours, site visits, labor cost, materials, trips, direct cost, overhead, total annual cost, then the annual, monthly and per-visit price, the annual margin and how many extra visits that margin covers. Below that sits the renewal summary.
  5. Renewals is a list of your agreements with start dates, terms and annual prices. It works out each renewal date and marks it Active, Renew soon or Lapsed. It holds 200 agreements.

Blue cells are for typing, yellow cells calculate, and green cells hold the headline results. Every rate, hour and price in the file is a sample input for you to replace. None of them is a market rate.

How to set it up

  1. If your spreadsheet app opens the file read-only, turn on editing so the formulas calculate.
  2. On Types, replace the sample rows with the equipment you service. Use your own numbers for visits per year, hours per unit per visit and materials per unit per visit. Your service records and your own checklists are the best source.
  3. On Equipment, list every unit the agreement covers. Pick each type from the dropdown and enter the quantity. If a type isn’t in the list, add it on Types first.
  4. On Price, enter your loaded labor cost per hour, the round-trip drive time per site visit, the trip cost per visit, overhead as a share of direct cost, and your target margin.
  5. Check Rows to check on Price. It must read 0 before the price shows. Anything else means a Row check on Types or Equipment, or one of the rates, needs fixing.

Equipment sheet listing five sample lines on one agreement with type, quantity, visits per year, labor hours and materials per year, and a row check

Building the cost: units, visits and trips

The Types sheet carries the per-unit numbers, so each type only has to be set once. A large rooftop unit in the sample takes 2.5 hours a visit, four times a year, with $46 of filters and belts each time. A split system takes 1.25 hours twice a year. Equipment then multiplies those by the quantity on the agreement. Three split systems at two visits each come to 7.5 labor hours a year.

Drive time and trip cost are counted per trip. A technician drives out once and services every unit that’s due that day. So the workbook counts site visits as the highest visits-per-year among the units on the agreement, and charges drive time and trip cost per visit. The sample’s rooftop units are on four visits a year, the exhaust fans on two and the boiler on one, so the site gets 4 visits a year. The fans and the boiler ride along on visits the RTUs already need.

A row with a quantity of 0 sends no truck. If an agreement lists a unit you’re not servicing this year, its visits don’t count toward the trip total.

The sample totals 36.5 labor hours on the equipment, plus one hour of drive time for each of the 4 site visits. At the sample labor rate, that’s a labor cost of $2,916.00. Materials add $604.00 and trips add $140.00.

Types sheet showing six sample equipment types with visits per year, labor hours per visit, materials per visit and a row check

From cost to price at your margin

Labor, materials and trips make the direct cost of $3,660.00. Overhead goes on top as a share of that, $549.00 in the sample, for a total annual cost of $4,209.00.

The price comes from a margin on the price. A 30% target margin means 30% of the price is profit, so the price is the cost divided by 0.7. Adding 30% to cost instead (a markup) leaves a margin of about 23%. The workbook divides the total annual cost by one minus your target margin, then splits the result into a monthly price and a price per site visit.

The last line, extra visits the margin covers, is the one to read before you send the quote. It divides the annual margin by the average cost of one planned visit and rounds down. That’s roughly how many unplanned calls, callbacks or emergency trips the agreement can absorb in a year before it stops paying for itself. If it reads 0 or 1 on a site you know generates calls, the price is too thin.

Worked example from the sample data

The sample is one made-up commercial building with a large rooftop unit, two smaller RTUs, three IT room splits, four roof exhaust fans and a boiler, priced at the sample rates on the Price sheet. Here’s what it produces:

LinePer year
Labor hours on the equipment36.5
Site visits4
Labor cost, including drive time$2,916.00
Materials$604.00
Trip cost$140.00
Overhead$549.00
Total annual cost$4,209.00
Annual price$6,012.86
Monthly price$501.07
Price per site visit$1,503.21
Annual margin$1,803.86
Extra visits the margin covers1

At the sample rates, this agreement prices at $6,012.86 a year, or $501.07 a month. The margin of $1,803.86 covers 1 extra visit at the average visit cost before the year turns into a loss. Move the large rooftop unit to six visits a year and the site visits rise to six with it, because that unit now sets the trip count.

Price sheet showing the sample rates, the cost lines from labor hours to total annual cost, the annual, monthly and per-visit price, and the renewal summary

Tracking renewals

Renewals are easy to miss when nobody is watching the dates. The Renewals sheet lists each agreement with its start date, term in months and annual price. It works out the renewal date and the days left from the as-of date on Price, and marks the agreement Lapsed, Renew soon (inside the window you set, 60 days in the sample) or Active.

The sample tracks 6 agreements. 2 are due within the window, 1 has already lapsed, and the agreements still running are worth $28,210 a year. Set the as-of date to today each time you open the file, and the Renew soon count tells you who to call this week. When you price a renewal, run the building’s equipment back through the first three sheets with this year’s labor cost before you send the new number.

Renewals sheet listing six sample agreements with customer, agreement number, start date, term, annual price, renewal date, days to renewal, status and a row check

The agreement, the calculator and this workbook

This workbook sets the price. The terms, scope and sign-off belong in the agreement document itself. Our free commercial HVAC maintenance agreement template covers that part. For a quick number in the browser without a spreadsheet, the maintenance agreement price calculator runs the same math on a short equipment list. If you’re new to the terms, our glossary entry on the maintenance contract explains what these agreements usually include. More free tools for running the business are on our free field service templates page.

Using it in a browser-based spreadsheet app

The file is a standard .xlsx. If you work in a browser-based spreadsheet app, import the file rather than opening it from a preview. In most apps that’s File > Import, then upload the file. After importing, check that the Price sheet shows the same sample results before you replace the data.

Limitations to know before relying on it

  • One copy prices one agreement. Save a copy per customer or per building.
  • Site visits follow the busiest unit with a quantity above 0. If some equipment needs its own separate trips, such as a boiler serviced in a month when the cooling units aren’t due, don’t raise that unit’s visits, because that also multiplies its labor hours and materials. Instead, add a type such as “Site trips” on Types with 0 labor hours and 0 materials, set its visits per year to the total trips the site needs (4 rooftop visits plus 1 separate boiler trip makes 5), and list it once on Equipment with a quantity of 1. The trip count rises to match and the equipment hours stay the same.
  • Drive time is one figure per site visit. A site with very different access from visit to visit needs an average.
  • The workbook doesn’t schedule visits, split them across seasons, add sales tax, or price emergency calls.
  • Overhead is one percentage of direct cost. If you allocate overhead per hour instead, fold it into the loaded labor cost and set overhead to 0.
  • Renewal terms are whole months, and the tracker holds 200 agreements.
  • Any Row check that isn’t OK, or a missing or negative rate, turns every price into Check data until you fix it. The renewal summary does the same with its own checks.

None of the sample figures is a benchmark. A labor rate, trip cost or margin from another shop tells you nothing about your own costs, so use your payroll, vehicle and job records for the inputs.

When the next quote request comes in, grab the HVAC maintenance agreement pricing template, list the equipment, and price it from your own numbers.

Frequently asked questions

  1. How do you price an HVAC maintenance agreement?

    Build the annual cost first: labor hours for every unit and visit, drive time for each site visit, materials such as filters and belts, a trip cost per visit, and overhead on top. Then divide that total by one minus your target margin. At a 30% margin, the price is the cost divided by 0.7. The workbook turns the result into annual, monthly and per-visit prices.

  2. Why does the workbook count site visits separately from units?

    Because one trip to the site services every unit that is due that day. Drive time and trip cost belong to the visit, not to each unit, so the workbook takes the highest visits-per-year among the units on the agreement as the number of site visits. Labor hours on the equipment itself still count per unit.

  3. What does 'extra visits covered' mean?

    It is how many unplanned service calls, each costing about the same as an average planned visit, the margin could absorb before the agreement stops making money for the year. The workbook divides the annual margin by the average cost of one visit and rounds down. A low number tells you there is little room for callbacks.

  4. Does this pricing template work in Google Sheets?

    It is a plain .xlsx file with no macros, so most spreadsheet apps can open it. To try it in Google Sheets, choose File > Import > Upload and select the file, then check that the Price sheet shows the same sample results before you replace the data.

  5. Where do I get the agreement itself?

    This workbook sets the price. The agreement document is a separate free template on this site, the commercial HVAC maintenance agreement template, and the HVAC maintenance agreement price calculator gives a quick price in the browser from the same math.

Trust signal

Fact Checked & Editorial Guidelines

Every post on this site is fact-checked against the policy below before the "Last reviewed" date is updated. If a single item below fails verification, the post does not go live.

  • Every claim traces to a source.

    Pricing, feature lists, integrations, and headquarters are taken from vendor product pages, documentation, or signed contracts — never repeated from secondary blogs. Where a claim is sourced from a single vendor's marketing, it is qualified as such.

  • Vendor relationships are disclosed in-line.

    If a review covers a platform whose vendor has provided trial access, sandbox access, or paid placement on a sister property, that relationship is stated in the review's methodology footer — not buried in a sitewide disclosure page.

  • Pricing is rechecked at every review cycle.

    Vendor pricing changes constantly. The 'Last reviewed' date on each post is the date the price line was last re-verified against the vendor's public pricing page. If you spot a stale price, the contact page accepts corrections.

  • Corrections are logged, not silently rewritten.

    Material factual corrections after publication get a correction note dated and appended to the post. We don't pretend the prior version never said what it said.

Spotted an error? Send a correction via thecontact page — corrections are logged with a dated note on the post.

Trust signal

Editorial Review & Methodology

Reviews and comparisons on this site follow a single documented methodology — the same rubric, applied identically to every platform, on every review cycle.

  • Five-criteria scoring rubric, applied identically to every platform.

    Usability, pricing transparency, feature depth, support quality, and integrations. Each criterion scored 0–10 with documented weighting. The rubric is published on the methodology page and does not change between platforms in the same review.

  • Hands-on testing where vendor trial access permits.

    If a vendor offers trial or sandbox access, the reviewer spins up an account and works through the documented evaluation script before scoring. Where access is enterprise-gated, the access type is disclosed and scoring draws on product documentation, verified buyer reviews, and analyst sources.

  • Editorial independence from commercial relationships.

    No vendor pays for placement, previews scores, or controls the content of a review. Affiliate links, where present, do not change ranking — picks are ordered by score, not by commercial yield. If a conflict of interest exists for a specific review, it is disclosed within that review.

  • Reviews get re-checked, not just re-dated.

    Each 'Last reviewed' update means the rubric was re-applied — pricing, feature inventory, integration list, and any material vendor changes since the prior review. A bare date bump without re-evaluation is not a re-review.

The full rubric, weighting, and review-cycle process is on themethodology page.