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 total PE/banking transactions · Stanford MBA
Updated October 7, 2026·Originally published February 22, 2026·8 minute read
Share

Public filings and owner planning checks

Use payment model and calculation scope before a trade label. Five FY2025 specialty-contractor filings yield 70.6 to 108.3 receivable-days proxies including reported retainage. The service and project ranges below are planning assumptions to test, not measured trade percentiles.

Sam Yang. Level founding-team research: 2,242 contractors and $13.25B in job revenue; these filing ratios use a separate source population.

8 minute readCash Flow

The short answer

For HVAC, plumbing, roofing, and electrical contractors, start with the collection model. This page uses 30 to 45 days for service work and 60 to 90 days for commercial projects as illustrative planning ranges, not measured trade benchmarks. Five FY2025 public-company receivable-days proxies span 70.6 to 108.3 days when separately reported retainage is included and separate contract assets are excluded. Compare matching accounts, periods and formulas.

Key takeaways

  • Filing calculations: Comfort Systems 108.3 days, EMCOR 91.1, Limbach 75.2, APi 72.1 and IES 70.6. These are Level calculations from year-end balances and annual revenue, not issuer-reported average invoice payment days.
  • Rabbet's 2024 survey reported that 82% of respondents experienced payment delays longer than 30 days. That is a respondent share, not DSO. Level's separate collection-rate metric has a median of 85.1% among 464 eligible companies.
  • Keep trade AR, retainage and contract assets visible separately. Do not add retainage twice when it is already included in the AR line.
  • Subtracting a cost-based DPO ratio from a revenue-based DSO ratio does not give a dollar financing requirement. Forecast dated receipts and payments to size the cash gap.

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 planning scenarioCommercial project planning scenarioMain 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 illustrative owner planning ranges, not observed percentiles from the Level research universe or a separately measured sample for each trade. Card-at-completion work can have much lower receivable days, and a contractually permitted progress-payment cycle can be longer. 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.

There are two different measures worth keeping side by side. Neither is reserved for public or private companies.

Balance-sheet receivable-days proxy:

Receivable days = (chosen AR balance / comparable annual sales) x 365

This page uses year-end net trade receivables, including reported retainage, divided by full-year total revenue. Total revenue is a practical filing denominator, not proof that every dollar was sold on credit. A monthly management calculation can instead use average eligible AR and comparable credit sales. Define that choice before comparing results. Growth, acquisitions and seasonality can make a year-end balance unrepresentative of the year.

These accounts come from GAAP financial statements, but this ratio is not a universally required or issuer-reported GAAP DSO measure. Separate contract assets are excluded here. If you add them to study a wider revenue-to-cash exposure, show that as a separately named measure and keep the same scope across periods.

Paid-invoice payment time:

For a chosen paid-invoice cohort, calculate days from invoice issue to payment and state whether the average is invoice-count or dollar weighted. Partial payments need a stated rule. Report unpaid invoices and aging alongside it: an average of settled invoices can improve simply because the slow invoices remain unpaid. It measures actual recorded payment timing, while the balance-sheet ratio measures a stock of receivables relative to a sales flow.

What the Public Companies Report

Here are five public specialty-contractor comparisons from FY2025 filings, freshly checked on October 7, 2026. They are examples, not a ranking of the five largest or a current-quarter update. Amounts are in USD millions; four filings report thousands converted to millions, while APi reports rounded millions. Ratios use the underlying reported amounts and round only the result.

Company and primary filingFiscal year-endRevenueChosen net ARReceivable daysCurrent ratio
Comfort Systems (FIX)Dec 31, 20259,101.6412,701.055108.31.21x
EMCOR (EME)Dec 31, 202516,986.4224,241.17791.11.22x
Limbach (LMB)Dec 31, 2025646.804133.20575.21.44x
APi (APG)Dec 31, 20257,9111,56372.11.50x
IES (IESC)Sep 30, 20253,371.468652.08870.61.71x

Reproduce the columns from each filing's consolidated balance sheet and annual income statement: receivable days = chosen net AR / revenue x 365; current ratio = total current assets / total current liabilities. IES uses a September fiscal year, so its observation date differs from the other four.

The important numerator choices:

  • FIX: billed AR 2,577.858 plus unbilled AR 123.197 = 2,701.055. Retainage is already included. Separate other receivables and contract assets are excluded.
  • EMCOR, Limbach and APi: use the net AR balance-sheet line, excluding separately shown contract assets. APi's note 7 says its retention receivables are included in AR.
  • IES: trade AR 552.158 plus separately presented retainage AR 99.930 = 652.088. Trade-only would be 59.8 days, explaining the previous roughly 60-day comparison. Including retainage changes the scope, not the company's collection performance.

Why Comfort Systems Shows 108 Days

Comfort Systems' 108.3-day ratio is 2,701.055 / 9,101.641 x 365. Its 88.817 million of costs and estimated earnings in excess of billings is a separate contract asset, excluded from that numerator. The 506.5 million retention balance disclosed in its revenue-recognition note is already in AR; adding it again would double count it.

This decomposition changes the owner question. A billed invoice awaiting payment, unbilled receivable and contractual retainage need different actions: collection follow-up, billing support or release documentation. A higher blended ratio does not by itself establish poor collections. Equally, calling a balance structural does not establish that every dollar is collectible.

DPO and the Cash Conversion Cycle: Keep the Denominators Visible

To show the payables side, the table below uses year-end trade AP / annual cost of services or revenue x 365. This is a cost-based DPO proxy, not observed supplier payment time. The cost denominator includes items such as wages that need not pass through trade AP; eligible credit purchases or invoice-level payment dates would answer a narrower supplier question.

CompanyTrade AP, USD millionsAnnual cost, USD millionsCost-based DPO proxyChosen AR minus trade AP, USD millions
Comfort Systems696.3486,905.74236.8 days2,004.707
EMCOR1,227.42813,703.43432.7 days3,013.749
Limbach74.172477.49056.7 days59.033
APi5265,42435.4 days1,037
IES209.3562,511.97130.4 days442.732

These are the same linked filings. IES note 7 separates trade AP of 209.356 from the 456.646 combined AP-and-accrued-expenses line; using the latter would count payroll accruals, taxes and other liabilities as supplier AP. Limbach's AP line includes retainage, and FIX's AP note also includes subcontractor retainage.

Why the old day-gap calculation did not size funding: FIX's 108.3 minus 36.8 is about 71.5 days, but multiplying that by daily revenue does not equal AR less AP because DPO uses daily cost. The directly comparable dollar subtraction is 2,701.055 - 696.348 = 2,004.707 million, not the prior $1.8 billion estimate. Even that is only an AR-minus-AP subtotal, not a financing requirement: contract assets, inventory, contract liabilities, payroll and other operating balances also affect cash.

A conventional cash-conversion-cycle ratio adds inventory days to receivable days and subtracts payable days, with consistent definitions. Construction adds progress billings and contract timing that this shorthand can obscure. To size your credit line or payroll buffer, build a dated receipts-and-payments forecast, including contract deposits, retainage release, supplier due dates and payroll, then locate the peak cash deficit. Do not call Limbach's roughly 18.5-day ratio spread 18.5 days of all costs to finance.

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

Keep the research populations and units separate:

  • Rabbet's 2024 Construction Payments Report: its August 2024 online survey reported that 82% of respondents experienced payment delays longer than 30 days, compared with 49% in 2022. Page 6 describes a 93% general-contractor and 7% subcontractor respondent mix. The accessible report does not state a respondent count we could verify. This is a self-reported delay question, not the age of every invoice or a balance-sheet DSO calculation; do not treat the year-to-year surveys as a matched-company experiment.
  • Level Index collection-rate cohort: the median is 85.1% among 464 eligible contractors. This measures cash collected as a share of billed revenue. The canonical dataset does not publish the measurement window, so the remainder is not automatically point-in-time AR, permanent loss or recoverable cash.
  • Level billing-speed metrics: median 1 day including progress billers and 7 days excluding progress billers, with a reported sample of 733 companies. That is completed-job-to-invoice timing, not payment time and not a causal guarantee that invoicing earlier improves every customer's cash cycle.

Public filings and a private owner's ledger can expose the same handoff questions: is the work billable, has the pay application been accepted, is the invoice disputed, and is retainage eligible for release? Team size does not answer those questions. Assign one owner and an evidence-based next step to each balance, then track payment against that forecast.

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.

Use 30 to 45 days for service and 60 to 90 days for projects as this page's initial planning scenarios, not verified trade percentiles. Replace them with your contract terms and comparable ledger history. The CFMA 2024 Benchmarker highlights report 56.6 days in accounts receivable for fiscal 2023 in an analysis including 1,290 valid company responses received by July 2024. That broad construction survey is another population and year, not this page's five-company FY2025 filing table or a measured HVAC-only range. 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

The service and project ranges are explicitly planning assumptions. The Level research universe covered 2,242 contractors and $13.25B in job revenue, but each metric uses an eligible subset; it does not independently establish the trade-specific DSO bands. The collection metric uses 464 companies; billing speed uses 733. The five public-company ratios above use a separate filing population.

All five FY2025 filings were freshly read for the amounts and account scope on October 7, 2026. This updates interpretation and calculation, not their observation dates. CFMA's official indexed 2024 highlights support the 1,290-response, fiscal-2023 comparison; the direct PDF returned an access error during this check. Rabbet's linked report supports its delay question and survey mix. None of these sources is a measured Level client result, universal credit-line requirement or promised collection improvement.

What PE Firms Look at During Diligence

An acquisition buyer may calculate receivable days from your balance sheet and inspect invoice-level aging. Ask which numerator, average-balance convention and sales denominator the buyer uses; there is no single universal buyer DSO formula. They also look at:

AR aging: What percentage of your receivables are current (0-30 days), 30-60, 60-90, and 90+? Older balances need review for collectibility, disputes, contractual retainage and subsequent receipts; age alone does not establish a fixed discount.

Customer concentration in AR: For a fictional concentration check, if 40% of outstanding AR belongs to one customer, forecast the effect of that customer's delay and review credit and dispute evidence. It can be a diligence risk without implying a fixed valuation discount.

Retainage exposure: How much of your AR is retainage? Is it documented? When does it convert to cash? Twelve-month-old retainage is not automatically a write-off. Compare its contractual release conditions, project status, dispute evidence and subsequent collections before assessing impairment.

Write-off history: What percentage of AR do you write off each year? State the denominator for your write-off rate, such as write-offs / annual billed sales, and compare the same basis over time. Inspect aging, disputes, retainage and concentration before calling a change a collections failure; no universal 1.5 to 3% loss threshold is established here.

The Practical Takeaway

You do not need to match IES Holdings' 70.6-day receivable-days proxy, or its 59.8-day trade-only alternative. But you should know your number, and know what's driving it.

Calculate a consistent receivable-days proxy: (chosen eligible AR, with retainage scope stated / comparable trailing 12-month sales) x 365. Keep separate contract assets visible and use average balances if that is your chosen convention; match the convention before comparing periods or buyers.

Calculate invoice payment timing: report paid-invoice days with its count or dollar weighting and partial-payment rule, alongside unpaid aging and expected receipts. A paid-only average must not hide slow invoices still open.

Forecast the cash gap: map actual dated customer receipts, supplier payments and payroll. For an explicit fictional receivables-only sensitivity, reducing eligible AR days by 10 on $5M of unchanged comparable annual credit sales reduces the modeled AR balance by $5M x 10 / 365 = about $136,986. That is a one-time balance reduction if achieved, not annual profit or guaranteed funding capacity; other balances can offset it.

Benchmark against the right scope: use these filings to inspect account presentation, then compare your own service, project and retainage cohorts. A company name or trade label cannot isolate the effect of customer mix, billing terms or operating efficiency.

The Level Market Monitor provides related public-company comparisons. Match its fiscal date and account definitions to the reproducible filing calculations above before comparing any ratio.


FAQ

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

There is no defensible universal target. CFMA's 2024 highlights give 56.6 days in accounts receivable for fiscal 2023, in an analysis including 1,290 valid companies. This page's separate FY2025 filing calculations span 70.6 to 108.3 days including separately reported retainage and excluding separate contract assets. 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 an initial planning scenario 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 as a planning scenario 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 as a planning scenario for direct service billing and 60 to 90 days for commercial electrical projects. General-contractor approval chains, retainage and change-order approvals that delay billing can all affect payment timing.

Q: What is a normal roofing contractor DSO?

Use 30 to 45 days as a planning scenario 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?

Collection quality can affect diligence, normalized working-capital requirements and cash available to the owner. A negotiated working-capital peg is distinct from enterprise valuation. Faster collections may reduce receivables or improve certainty, but a fixed multiple or purchase-price change does not follow from DSO alone; review the agreement and the full operating working-capital bridge.

Q: Why is DPO important alongside DSO?

DPO adds a view of supplier balances, but a revenue-based DSO minus a cost-based DPO is not a dollar funding calculation. Inventory, payroll, progress billings and contract liabilities also matter. Use dated receipt-and-payment schedules to locate the actual peak funding need.

Q: How do I improve my DSO?

Three owner tests: (1) Trace completion-to-invoice timing using the Level Index billing-speed definition, and track invoice-to-acceptance separately; faster issue helps cash only when it advances acceptance or payment. (2) Set commercially and legally workable terms before taking the job and confirm the actual due date. (3) Document and negotiate retainage release milestones where the contract and governing law allow. Measure resulting receipts rather than promising a fixed DSO improvement.

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 cash cycle benchmarks.

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

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.