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

Contractor DSO Benchmarks by Trade: HVAC, Plumbing, Roofing, and Electrical

Sam YangEx-CFO across trades, SaaS & services · $2.5B in service-business transactions · Stanford MBA
Updated September 3, 2026·Originally published February 22, 2026·8 minute read
Share

From Level's proprietary contractor research

For HVAC, plumbing, roofing, and electrical contractors, payment model matters more than trade. Level uses 30 to 45 days for service-heavy work and 60 to 90 days for commercial project work, while public MEP contractors span 60 to 108 days.

Pattern across 2,200+ contractors, $13.25B in job revenue analyzed

8 minute readCash Flow

The short answer

For HVAC, plumbing, roofing, and electrical contractors, Level uses a 30 to 45 day operating range for residential and service-heavy work and 60 to 90 days for commercial project work. Public MEP contractors span 60 to 108 days because balance-sheet DSO can include billed receivables, retainage, unbilled work, and contract assets. Compare the same work mix and calculation method.

Key takeaways

  • The public numbers: Comfort Systems 108 days, EMCOR 91, Limbach 75, APi 72, IES 60. Cash conversion cycles run 18 to 71 days.
  • Rabbet's 2024 construction-payments research found that 82% of surveyed contractors waited more than 30 days for payment. Separately, Level's private-contractor research found a median collection rate of 85.1% among the 464 contractors with enough data for that metric.
  • Level collections diagnostic scenario: recovery odds can fall from roughly 94% at 30 days to roughly 26% at 12 months, so age is the enemy. Recalculate from your own invoice cohort before using it as a forecast.
  • Calculate both your GAAP DSO (what a buyer uses) and your invoice-to-payment DSO (what you can actually improve), and benchmark against the right comp for your mix.

Normal Contractor DSO by Trade and Payment Model

There is no honest single DSO for an entire trade. The useful answer is a range tied to how the work is billed and collected.

TradeResidential or service-heavy operating rangeCommercial project operating rangeMain reason the range moves
HVAC30 to 45 days60 to 90 daysCard-at-completion service versus progress-billed construction, retainage, and approvals
Plumbing30 to 45 days60 to 90 daysResidential service and replacement versus commercial projects and new construction
Electrical30 to 45 days60 to 90 daysDirect service billing versus general-contractor payment chains and retainage
Roofing30 to 45 days for retail and service work60 to 90 days for commercial projectsDeposits and completion billing versus insurance approvals, supplements, retainage, and progress billing

These are practical working ranges from Level contractor finance work. Segment the ledger before comparing: residential service, retail replacement, insurance restoration, and commercial project receivables should not share one target.

Two Ways to Measure DSO, And They Give Very Different Answers

When I talk to contractors about days sales outstanding, there's usually a disconnect. They've heard "DSO" thrown around by their accountant or a PE firm, but the number they calculate from their invoicing system doesn't match what they see in industry reports.

These contractor DSO benchmarks separate construction accounts receivable on a balance sheet from invoice-level payment speed, so an owner can compare the right number.

That's because there are two fundamentally different ways to measure DSO, and public companies use a different method than most private contractors.

Public company DSO (GAAP balance sheet method):

DSO = (Accounts Receivable / Annual Revenue) × 365

This uses the AR balance from the balance sheet, which includes billed AR, unbilled AR, retainage, and contract assets. It's a point-in-time snapshot of how much revenue is tied up in receivables.

Private contractor DSO (invoice-level method):

DSO = Average days from invoice date to payment date

This is what your FSM or accounting software calculates, the actual time between sending an invoice and getting paid.

Both are valid. They measure different things. And the gap between them explains a lot about why public company DSO looks so high.

What the Public Companies Report

Here's DSO for the five largest publicly traded specialty contractors, calculated from their most recent 10-K filings:

CompanyRevenueAR (net)DSODPOCurrent Ratio
Comfort Systems (FIX)$9.1B$2.7B108 days37 days1.21x
EMCOR Group (EME)$17.0B$4.2B91 days33 days1.22x
Limbach Holdings (LMB)$647M$133M75 days57 days1.44x
APi Group (APG)$7.9B$1.6B72 days35 days1.50x
IES Holdings (IESC)$3.4B$552M60 daysN/A1.71x

Sources: FY2025 10-K filings (FIX, EME, APG, LMB filed Feb-Mar 2026; IESC filed Nov 2025).

Why Comfort Systems Shows 108 Days

Comfort Systems' 108-day DSO looks alarming until you understand what's in their AR balance.

Their 10-K breaks it out: $2.58B in billed AR, $123M in unbilled AR, plus $89M in costs and earnings in excess of billings. That $2.7B combined figure includes:

  • Progress billing on large construction projects, revenue recognized but not yet billed per contract terms
  • Retainage, amounts withheld by customers until project completion (typically 5-10%)
  • Unbilled work, revenue earned but invoice not yet issued

For a company doing 63% new construction work, a significant portion of AR is structural, it's not "slow collections," it's the nature of construction billing.

IES Holdings, by contrast, has a 39% residential segment where billing cycles are much shorter. Their 60-day DSO reflects that mix.

The Cash Conversion Cycle

DSO alone doesn't tell the full story. What matters is the spread between how fast you collect and how fast you pay, the cash conversion cycle.

CompanyDSODPOCash Cycle (DSO - DPO)
Comfort Systems1083771 days
EMCOR913358 days
APi Group723537 days
Limbach755718 days

Limbach has the tightest cash conversion cycle at 18 days, they collect in 75 days and pay suppliers in 57 days. That's only 18 days of working capital they need to finance.

Comfort Systems, despite the highest DSO, has a 71-day cash cycle. At $9.1B in revenue, that's roughly $1.8B in working capital tied up at any given time. They can afford it, they generated $1.2B in operating cash flow last year and sit on $982M in cash.

Most $5-30M contractors can't.

Free benchmark review

See how your cash cycle benchmarks.

We compare your AR, billing speed, and cash timing against companies that collect faster.

How This Compares to Private Contractors

Two different research sources describe the private-contractor cash problem:

  • Rabbet's 2024 Construction Payments Report: 82% of surveyed contractors waited more than 30 days to receive payment, up from 49% in its 2022 report.
  • Level Index collection-rate cohort: 85.1% median among 464 contractors (meaning 14.9% of billed revenue was not collected within the measurement window, distinct from a point-in-time AR balance).
  • Billing speed median: 1 day (but adjusted for progress billers, the real median is 7 days)
  • Level collections diagnostic scenario: recovery odds can fall from roughly 94% at 30 days to roughly 26% at 12 months. Recalculate this curve from your own invoice cohort before using it as a forecast.

The difference between public and private contractor DSO isn't just the number, it's the infrastructure behind it.

Public contractors have:

  • Dedicated AR teams and credit departments
  • Automated billing systems tied to project milestones
  • Contractual payment terms enforced with legal resources
  • Diversified customer bases that reduce concentration risk

Most private contractors have the owner calling customers to ask where the check is.

What Is Normal DSO for Electrical, Plumbing, and Roofing Contractors?

The payment model matters more than the trade label. A residential service company that collects by card at completion should not use the same target as a commercial project contractor billing through a general contractor.

  • Electrical: Separate residential service, commercial service, and project work. Commercial electrical DSO is often shaped by progress billing, retainage, approval chains, and the general contractor's payment cycle.
  • Plumbing: Keep residential service and replacement work separate from commercial service and new construction. Blending card-at-completion jobs with progress-billed projects produces an average that is useful for neither team.
  • Roofing: Separate retail deposits and completion payments, insurance restoration receivables, and commercial progress billing. Supplements, carrier approvals, retainage, and final inspections can each hold cash for different reasons.

Level's operating range is 30 to 45 days for residential and service-heavy work, where card-on-completion and short invoice cycles are possible, and 60 to 90 days for commercial project work shaped by progress billing, retainage, approvals, and general-contractor payment chains. Those are practical comparison ranges from Level's contractor finance work, not a promise that every invoice should land there. The CFMA 2024 Construction Financial Benchmarker reports 56.6 days in accounts receivable across 1,290 construction companies, while public specialty-contractor filings span roughly 55 to 100-plus days depending on service mix and calculation scope. Track each collection model separately and investigate movement inside each segment. The Level collection benchmark documents the calculation differences.

Use the DSO calculator to model the cash tied up in your actual aging report. If billing, closeout, and collections are moving in different systems, Level's contractor finance team can trace the handoff that is holding cash.

Source and claim note

Level's 30 to 45 day and 60 to 90 day operating ranges come from contractor finance work and are designed to separate service collections from progress-billed project cash cycles. They are not a published universal DSO survey. The 85.1% median collection rate comes from the Level Index's 464-contractor metric cohort. The original Level research universe covered 2,242 contractors, but each metric uses the subset with sufficient data.

The 82% slow-payment statistic comes from Rabbet's 2024 Construction Payments Report, linked in the private-contractor comparison above. The external construction comparison is the CFMA Construction Financial Benchmarker, and public-company figures on this page come from issuer filings such as Comfort Systems USA. Use the same DSO formula and AR-aging date for every internal comparison.

What PE Firms Look at During Diligence

When a PE firm evaluates your business for acquisition, they calculate DSO from your balance sheet, the same way public companies report it. They also look at:

AR aging: What percentage of your receivables are current (0-30 days), 30-60, 60-90, and 90+? Anything over 90 days gets heavily discounted in their model.

Customer concentration in AR: If 40% of your outstanding AR is from one customer, that's a risk they price. One disputed invoice could blow up your cash flow.

Retainage exposure: How much of your AR is retainage? Is it documented? When does it convert to cash? Retainage that's been outstanding for 12+ months is effectively a write-off.

Write-off history: What percentage of AR do you write off each year? Level uses 1.5-3% of accounts receivable as a collections diagnostic scenario, not a universal construction average. If yours is higher, inspect the aging, disputes, retainage, and customer concentration before drawing a conclusion.

The Practical Takeaway

You don't need to match IES Holdings' 60-day DSO. But you should know your number, and know what's driving it.

Calculate your GAAP DSO: (Total AR including retainage / trailing 12-month revenue) × 365. This is the number a buyer will calculate.

Calculate your invoice-level DSO: Average days from invoice to payment. This is the number you can actually improve.

Tighten the cash cycle: If your DSO is 90 days and you're paying suppliers in 15 days, you're financing 75 days of working capital. Every day you close that gap frees up cash.

Benchmark against the right comp: A commercial mechanical contractor should benchmark against Comfort Systems or Limbach, not IES Holdings. Revenue mix drives DSO more than operational efficiency.

The full operating benchmarks for all five public contractors, including DSO, DPO, current ratio, FCF margin, capex, and ROE, are in the Level Market Monitor.


FAQ

Q: What's a "good" DSO for a private contractor?

There is no defensible universal target. The CFMA 2024 Construction Financial Benchmarker reports 56.6 days in accounts receivable across 1,290 construction companies, while public specialty-contractor filings span roughly 55 to 100-plus days depending on segment and calculation scope. Compare like with like, separate service work from progress-billed projects and retainage, and trend each measure monthly.

Q: What is a normal HVAC contractor DSO?

Use 30 to 45 days as Level's operating range for service-heavy HVAC work and 60 to 90 days for commercial projects. Separate maintenance, service, replacement, and construction receivables before comparing.

Q: What is a normal plumbing contractor DSO?

Use 30 to 45 days for residential service and replacement work and 60 to 90 days for commercial plumbing projects. A blended plumbing contractor DSO can hide a fast service ledger behind slow progress-billed work.

Q: What is a normal electrical contractor DSO?

Use 30 to 45 days for direct service billing and 60 to 90 days for commercial electrical projects. General-contractor approval chains, retainage, and unbilled change orders usually explain the difference.

Q: What is a normal roofing contractor DSO?

Use 30 to 45 days for retail and service work and 60 to 90 days for commercial projects. Track insurance restoration separately because supplements, carrier approvals, and depreciation holdbacks create a different cash cycle.

Q: How does DSO affect my company's valuation?

Directly. Lower DSO means less working capital tied up in receivables, which means more free cash flow. PE firms model working capital requirements as part of the purchase price adjustment. High DSO = more cash locked up = lower effective purchase price.

Q: Why is DPO important alongside DSO?

Because the spread between DSO and DPO is your cash conversion cycle, the number of days you need to finance from your own cash. Public contractors maintain 18-71 day cash cycles. If yours is 90+ days, you're effectively running a bank for your customers.

Q: How do I improve my DSO?

Three levers: (1) Invoice faster, the Level Index shows billing speed is the most controllable variable. (2) Enforce payment terms, stop accepting "net-60" from customers who should be net-30. (3) Reduce retainage exposure, negotiate retainage release at substantial completion, not final completion.

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 revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.

LinkedIn

See how your cash cycle benchmarks.

We compare your AR, billing speed, and cash timing against companies that collect faster.

2,200+ service businesses benchmarked$13.25B in revenue analyzedWeekly action cadence

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

No commitment. Real numbers, not generic advice.