Your Service Agreements Are Probably Mispriced
From Level's proprietary contractor research
In a cross-trade sample of 259 contractors with $10K+ in service agreement revenue, the 10th percentile SA book ran a -30.4% gross margin and the 90th percentile ran 70.3%. A 100-point spread means you should audit your own agreements before trusting any single average.
Level Index, service agreement gross margin, n=259 contractors with at least $10K in SA revenue
The Unsourced 18% Figure
Search "service agreement profitability" and you'll find the same number everywhere: 18-22% average gross margins on maintenance contracts. It shows up in HVAC blogs, industry reports, and consultant slide decks.
No source, sample or cost definition usually travels with that number, so it can't be checked against anything. Treat it as commonly repeated, not measured. The bigger problem is that a single average hides a very wide spread, including contractors whose SA books lose money.
Between PE due diligence on contractor acquisitions, building AI accounting products for contractors, and running profitability audits at Level, I've reviewed the service agreement economics of hundreds of contractors. The Level Index measures this directly. There, service agreement gross margin means gross margin on recurring service-agreement (maintenance) revenue, across 259 companies with at least $10K in SA revenue. The sample is cross-trade, not a separately measured HVAC subset. The published definition also does not itemize which delivery costs each company recorded. A company that leaves drive time, truck cost or included parts out of SA cost will show a higher margin than one that records them. Read these percentiles as recorded-cost margins, and compare them to your own number only after you match the cost components (see the audit below).
How to read the distribution (the explanations are things to check, not measured causes):
| Band | Company-level SA gross margin | What to check first |
|---|---|---|
| 90th percentile and above | 70.3%+ | Light-touch scope (inspections, monitoring), or SA costs that may be under-recorded |
| 75th percentile | 53.5% | Pricing, scheduling density, included-parts limits |
| Median | 37.9% | The middle of the sample, not a quality standard |
| 25th percentile | 20.5% | Stale pricing, over-servicing, unbilled extras |
| 10th percentile and below | -30.4% or lower | Whole SA book below cost. Individual agreements inside it may still be profitable. |
The measured median is 37.9%. That does not prove the commonly repeated 18-22% is wrong, because nobody has shown what population or cost definition produced 18-22%. A figure that includes dispatch and admin overhead, or one that weights by revenue instead of by company, could come out lower without contradicting this median. What the data does show is that no single average describes the spread.
Here's the precise percentile breakdown from 259 contractors with meaningful SA books (at least $10K in SA revenue):
| Percentile | SA Gross Margin |
|---|---|
| Bottom 10% | -30.4% |
| 25th percentile | 20.5% |
| Median | 37.9% |
| 75th percentile | 53.5% |
| Top 10% | 70.3% |
The spread is about 100 points between the 10th and 90th percentiles (70.3% minus -30.4% is 100.7 points). Some of that can reflect different agreement designs, trade mix and how completely costs are recorded, which the published benchmark does not separate. Either way, two companies that both call their programs service agreements can have very different economics.
The Contractors Losing Millions on SAs
Here is how this happens, shown with three fictional scenarios. They are not client records. Each uses round numbers chosen so the arithmetic checks out.
Fictional scenario A: cost outgrows price. A large commercial book bills $10,000,000 a year in SA revenue. Recorded delivery cost has crept to $12,000,000 because labor rates rose and prices did not. Margin is ($10.0M - $12.0M) / $10.0M = -20%, a $2,000,000 annual loss. Retention is strong and the book is growing, so nobody looks, and growth makes the loss larger.
Fictional scenario B: underpriced and under-collected. A book bills $500,000 and costs $530,000 to deliver, a -6% gross margin. The company collects 58% of what it bills in the period, $290,000. These are two separate problems.
- The -6% is an accrual margin. It stays -6% even if every invoice is eventually paid.
- The 58% is a cash timing and collection problem. The $210,000 not yet collected is not all recoverable, because some of it may be disputed, credited or written off.
So the cash shortfall against $530,000 of cost falls between $30,000 and $240,000, depending on what is eventually collected.
Fictional scenario C: scope creep. A book bills $300,000, but after years of added visits and "included" extras, delivery costs $450,000. Margin is ($300K - $450K) / $300K = -50%.
How common is a negative SA book? In the Level Index sample above (259 companies with $10K+ SA revenue), the 10th percentile is -30.4% and the 25th percentile is 20.5%. That means between 10% and 25% of those companies had a negative SA gross margin. The exact share is not published here. Those companies were paying to do the work.
Why SAs Get Mispriced
Service agreements get mispriced for predictable reasons:
1. The "Loss Leader" Trap
The conventional wisdom says SAs are loss leaders, you lose money on the maintenance visits and make it up on the repairs and replacements they generate. There's a kernel of truth here, but it's dangerously overextended.
You will often hear that contract customers spend several times more over their lifetime than non-contract customers. We have no sourced figure for that multiple. Customers who buy agreements may also already be bigger spenders, so the agreement may not be the cause. Either way, the loss-leader logic only works if the pull-through revenue actually materializes and is actually profitable. If your techs are doing maintenance visits and walking away without identifying any opportunities, you're losing money on the front end and generating nothing on the back end.
The fix: Track pull-through with one fixed denominator: additional repair, replacement and project revenue from SA customers, divided by annual SA revenue. In the Level Index (386 eligible companies, cross-trade), the median is 8.7%, the 75th percentile is 29.6% and the 90th percentile is 93.4%. No single pull-through ratio makes a loss leader work. The test is whether pull-through gross profit covers the SA loss.
Fictional check:
- An SA book bills $400,000 at a -10% gross margin, which is a $40,000 loss.
- At the median 8.7% ratio, pull-through revenue is $34,800.
- If that work earns a 40% gross margin (an assumption; use your own job margin), it contributes $13,920 of gross profit. The program is still $26,080 short.
- To cover the $40,000 loss at a 40% margin, pull-through revenue needs to reach $100,000, a 25% ratio.
If your SA margin is positive, the same math tells you how much of your pull-through is a bonus rather than a rescue.
2. Not Tracking Actual Cost Per Visit
Most contractors price SAs based on estimated visit time, "two tune-ups per year, 1.5 hours each, our tech costs $40/hr, so our cost is $120." Clean math. Wrong math.
Real cost per visit includes:
- Actual tech time (often 2+ hours, not 1.5)
- Drive time (paid hours that aren't billed; measure your own, since minutes per trip vary by route density)
- Truck cost (fuel, maintenance and insurance per visit; if your labor rate is already loaded with vehicle cost, don't add it again)
- Parts and filters (included in the contract but not always tracked)
- Emergency callbacks (some percentage of SAs generate emergency calls between scheduled visits)
- Administrative time (scheduling, reminders, paperwork)
Here is a fictional example of how the gap opens. The $120 estimate above assumes 3.0 tech hours a year. Suppose actual records show:
- 2 visits, each with 2.0 hours on site plus 0.5 hours of paid drive: 5.0 hours at $40 = $200
- Included filters: $25 a year
- Truck cost of $15 per visit: $30
That totals $255 a year, 112.5% above the $120 estimate. Your own gap could be smaller or larger. The point is to price from recorded hours and costs, not the estimate. Count each cost once: if the $40 rate is already loaded with truck or admin cost, leave those lines out.
3. Scope Creep on "Included" Services
SA contracts get more generous over time. A salesperson adds "priority scheduling." Customer service throws in a "free diagnostic." Management agrees to "include refrigerant top-offs." Each concession is small, but together they can add materially to delivery cost. Fictional example: one free diagnostic at $60 of labor plus $20 of refrigerant per agreement adds $80 to an agreement that cost $255 to deliver. That is a 31% cost increase with no price change.
The fix: Audit every SA tier annually. List exactly what's included. Calculate the actual delivery cost at current labor rates. If the cost exceeds the revenue, raise the price or reduce the scope. This sounds obvious but most contractors haven't done it since the agreements were first designed.
Free benchmark review
See how your margins benchmark.
We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit.
The Pull-Through Revenue Gap
This is the single biggest missed opportunity I've seen across the contractor businesses I've reviewed.
Pull-through revenue = additional repair, replacement and project revenue from service-agreement customers, divided by annual SA revenue. It counts dollars, not the share of customers or visits that buy something. It also includes work from SA customers whether or not a maintenance visit found it.
| Percentile (Level Index, n=386, cross-trade) | Pull-through / annual SA revenue | What to check |
|---|---|---|
| 90th | 93.4% | Often large replacement or project work; check whether a few jobs drive it |
| 75th | 29.6% | Recommendation process, follow-up on unapproved estimates |
| Median | 8.7% | Whether techs document findings at all |
| 25th | 1.5% | Whether follow-on work is coded to SA customers in your system |
| 10th | 0.3% | Same, plus whether visits include any inspection step |
The ratio between the 90th and 10th percentiles is roughly 300 to 1, but the benchmark does not say why. Equipment age, customer mix, trade and how revenue is coded all move the ratio. Training and incentives are the levers you control, so they are worth testing:
- Techs need to be trained to identify work, not just perform the maintenance checklist, but inspect for repair needs, aging equipment, and upgrade opportunities
- Techs need a reason to recommend work, commission, spiff, recognition, or at minimum a culture where recommendations are expected and tracked
- Recommendations need a system, documented, photographed, presented to the customer, followed up on if not approved immediately
Get the arithmetic right before you set a goal. Fictional example:
- A $1,000,000 SA book at 8.7% pull-through brings in $87,000 of follow-on revenue, or $1,087,000 in total from SA customers.
- Moving to 40% brings follow-on revenue to $400,000. That is about 4.6 times the pull-through component.
- Total revenue from those customers rises to $1,400,000, about 29% more, not triple.
Watch quality alongside the ratio. Track approval rates, callbacks and complaints so that incentives don't produce recommendations customers later regret.
How to Audit Your SA Profitability
If you don't know your SA margins, here's how to find out:
Step 1: Calculate total SA revenue. Easy, pull from your accounting system. Include all maintenance contract billing.
Step 2: Calculate total SA cost. This is where it gets real. Include:
- All labor hours your techs spent on SA visits (not estimates, actual hours from your field service software)
- Drive time and truck costs allocated to SA visits
- Parts, filters, and materials used on SA work
- Any subcontractor costs on SA work
- A share of scheduling, dispatch, and admin overhead (optional; see the note below)
Step 3: Divide. (Revenue - Cost) / Revenue = your SA gross margin.
Calculate it two ways:
- Direct delivery costs only (labor, drive time, truck, parts, subs). This is closer to a gross margin.
- Direct costs plus the overhead share. This is a fully loaded program margin and will run lower. Don't compare it with the 37.9% benchmark median, whose published definition does not itemize cost components.
Count each cost in one place only. If technician labor is loaded with truck or admin cost, don't add those again.
Step 4: Segment. Don't just look at the total. Break it down by:
- Agreement tier (basic vs. premium)
- Customer type (commercial vs. residential)
- Equipment type (HVAC vs. plumbing vs. electrical)
- Contract age (new vs. multi-year)
You'll almost certainly find that some segments are profitable and others are underwater. The aggregate number hides the variance, and the variance is where the money is.
If you need help setting up this analysis, our guide on job costing in QuickBooks covers the accounting setup. For the strategic layer, repricing, restructuring, and optimizing the SA book, that's what a fractional CFO does.
When Service Agreements Aren't Worth It
The contrarian take: not every contractor should have service agreements.
If you're a pure project/install contractor with no service division, SAs don't fit your business model. Don't bolt them on because a consultant said "recurring revenue is king." Recurring revenue is only king if it's profitable.
If your market won't support the pricing required to make SAs profitable (for example, if competitors anchor residential plans at a price below your recorded delivery cost), you may be better off selling individual maintenance visits at full margin rather than locking in annual contracts at a loss.
If you don't have the systems to track SA delivery cost, you can't manage what you can't measure. Running SAs without tracking actual visit costs is gambling, and the house usually wins (meaning: you lose).
The contractors who win with SAs are the ones who price them correctly, track delivery cost obsessively, and use maintenance visits as the engine for pull-through revenue. Everyone else is subsidizing their customers.
The Bottom Line
Don't plan from the commonly repeated 18-22%, and don't plan from the 37.9% median either. In the Level Index sample of 259 contractors, SA gross margin on recorded costs ranged from -30.4% at the 10th percentile to 70.3% at the 90th. Contractors who have never run the math can't know which end they're on.
If you have a meaningful SA book (50+ agreements), audit it. Calculate the real margin by tier, by customer type, by equipment. You'll almost certainly find segments that need repricing and segments that are performing well. That visibility is the difference between a service agreement program that builds your business and one that quietly drains it.
Q: Can Level audit my service agreement profitability? A: Yes. We connect to your QuickBooks and field service software, pull the actual labor, materials, and delivery cost per SA, and calculate your true margins by agreement tier and customer segment. The first audit is free.
Q: How do I improve pull-through revenue? A: Start by tracking it with the same denominator every month: follow-on revenue from SA customers divided by annual SA revenue.
- Check whether your field service software has a recommendations or estimate-from-visit feature, and use it to set a baseline. If it doesn't, tag follow-on jobs to SA customers in your accounting system.
- Train techs on identifying opportunities.
- Create a simple incentive structure.
- Review the numbers monthly.
We don't have measured data on how long improvement takes, so set your own checkpoint. For example, run a 90-day review of the ratio, the approval rate and the average ticket. Our add-on sales benchmarks analysis covers related pull-through benchmarks.
Q: Should I raise SA prices or cut costs? A: Usually both, but pricing first, since many agreements were priced years ago and never adjusted. Set the annual escalator from your own measured change in delivery cost per agreement rather than a generic industry percentage. Put the escalator and its notice terms in the contract language.
A price increase moves margin less than people expect. Fictional example: an agreement at a 37.9% margin has cost equal to 62.1% of price. Raise price 5% with cost unchanged, and cost becomes 62.1 / 105 = 59.1% of the new price. That is a 40.9% margin, about 3 points better. Tighter scheduling that cuts drive time lowers cost directly.
We can't promise that customers will stay after an increase. Track cancellations by tier for the two renewal cycles after any change.
Benchmark source scope
Measured Level Index comparisons on this page come from the canonical aggregate dataset. Each metric retains its own eligible population and definition; the broader founding-team research universe of 2,242 contractors and $13.25B of job revenue is provenance, not a count of Level clients or the sample of every metric. Fictional scenarios and legacy, unverified references are labeled separately.
Get the next one
Want next week's benchmark in your inbox?
One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.
Related reads
Job Costing
Contractor Finance KPIs Ranked by Profit Impact (2026)
The 8 financial KPIs that move a contractor's bottom line, in an editorial priority order by profit leverage, with Level Index benchmarks where a measured sample exists and measurement steps where one does not.
Job Costing
Your 45% Job Could Really Be a 24% Job. Here's Where the Margin Goes.
In a fictional illustration, a contractor job bid at 45% gross margin lands between about 24% and 29% once labor is fully burdened, callbacks counted, material drift priced, and AR financing charged. Rebuild it with your own numbers.
Job Costing
Landscaping Route Margin: Rebuild Labor Cost Correctly
Rebuild landscaping route margin using loaded labor, drive time, equipment per crew-hour, and seasonal capacity. Includes Level job-data context.

About the author
Sam Yang
Founder & CEO
Founder of Level, the AI operating layer for contractors and skilled trades, and the other operating businesses where scarce labor is the constraint. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in job revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.
LinkedIn