Skip to main content
2,200+ service businesses benchmarked. Do you know your gross profit per labor hour? See where you stand →
Level
Job Costing

Your Service Agreements Are Probably Mispriced

Sam YangEx-CFO across trades, SaaS & services · $2.5B in total PE/banking transactions · Stanford MBA
Updated October 7, 2026·Originally published August 21, 2025·12 minute read
Share

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

12 minute readJob Costing

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):

BandCompany-level SA gross marginWhat to check first
90th percentile and above70.3%+Light-touch scope (inspections, monitoring), or SA costs that may be under-recorded
75th percentile53.5%Pricing, scheduling density, included-parts limits
Median37.9%The middle of the sample, not a quality standard
25th percentile20.5%Stale pricing, over-servicing, unbilled extras
10th percentile and below-30.4% or lowerWhole 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):

PercentileSA Gross Margin
Bottom 10%-30.4%
25th percentile20.5%
Median37.9%
75th percentile53.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:

  1. An SA book bills $400,000 at a -10% gross margin, which is a $40,000 loss.
  2. At the median 8.7% ratio, pull-through revenue is $34,800.
  3. 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.
  4. 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 revenueWhat to check
90th93.4%Often large replacement or project work; check whether a few jobs drive it
75th29.6%Recommendation process, follow-up on unapproved estimates
Median8.7%Whether techs document findings at all
25th1.5%Whether follow-on work is coded to SA customers in your system
10th0.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:

  1. Direct delivery costs only (labor, drive time, truck, parts, subs). This is closer to a gross margin.
  2. 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.

  1. 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.
  2. Train techs on identifying opportunities.
  3. Create a simple incentive structure.
  4. 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.

Share

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.

Sam Yang

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

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.

2,200+ contractors in the research universe$13.25B in job revenue analyzedWeekly action cadenceContractor research basis and metric-specific samples, not a count of client engagements

No credit card. 15-min audit. We only follow up if we can actually help.

No commitment. Real numbers, not generic advice.