The Contractor DSO Index
How long publicly traded construction and industrial-services contractors actually wait to get paid — calculated from their own SEC filings, 2015–2025.
Across 14 publicly traded construction and industrial-services contractors, median days sales outstanding (DSO) in FY2025 was 73 days, with a middle range of 57.8–82.1 days. Including unbilled contract assets — work performed but not yet invoiced — the median rises to 89.1 days. Every figure is calculated from receivables and revenue as reported in the companies' own SEC annual filings.
Source: SEC XBRL company facts (data.sec.gov). Dataset generated 2026-07-27, methodology version 1.0. Download the full dataset (CSV).
Median DSO by fiscal year
The gold bar is median DSO on invoiced receivables. The figure in parentheses adds unbilled contract assets — work the contractor has performed and earned revenue on, but has not yet been able to invoice. That gap is the part of the cash-conversion cycle most contractors never measure.
FY2025 DSO by trade segment
| Segment | Median | P25 | P75 | Filers |
|---|---|---|---|---|
| Heavy civil | 66.1d | 52d | 80.2d | 2 |
| Industrial & energy services | 73.5d | 72.4d | 73.6d | 3 |
| Mechanical & electrical | 67.7d | 59.9d | 87.1d | 4 |
| Specialty & infrastructure | 72.1d | 37.1d | 97d | 5 |
Segment samples are small by construction — this is the full population of comparable US listed contractors, not a survey sample. Read segment medians as indicative.
Company-level detail, FY2025
Every row is auditable. Company names link to their SEC filing history so you can check the receivable and revenue figures yourself.
| Company | Segment | Revenue | Receivables | DSO | Relative |
|---|---|---|---|---|---|
| Dycom Industries, Inc.DY | Specialty & infrastructure | $4.7B | $1.4B | 106.3d | |
| EMCOR Group, Inc.EME | Mechanical & electrical | $17.0B | $4.2B | 91.1d | |
| Quanta Services, Inc.PWR | Specialty & infrastructure | $28.5B | $6.8B | 87.8d | |
| Tutor Perini CorpTPC | Heavy civil | $5.5B | $1.2B | 80.2d | |
| Limbach Holdings, Inc.LMB | Mechanical & electrical | $647M | $133M | 75.2d | |
| Argan, Inc.AGX | Industrial & energy services | $874M | $176M | 73.6d | |
| Matrix Service CoMTRX | Industrial & energy services | $769M | $155M | 73.5d | |
| Team, Inc.TISI | Industrial & energy services | $896M | $178M | 72.4d | |
| APi Group CorpAPG | Specialty & infrastructure | $7.9B | $1.6B | 72.1d | |
| MYR Group Inc.MYRG | Mechanical & electrical | $3.7B | $604M | 60.2d | |
| IES Holdings, Inc.IESC | Mechanical & electrical | $3.4B | $552M | 59.8d | |
| Granite Construction Inc.GVA | Heavy civil | $4.4B | $630M | 52d | |
| MasTec, Inc.MTZ | Specialty & infrastructure | $14.3B | $1.5B | 39.3d | |
| Primoris Services CorpPRIM | Specialty & infrastructure | $7.6B | $723M | 34.9d |
What the filings say about retainage
Among the handful of filers that break retainage out as its own tagged line item, retainage was a median 33.6% of total receivables in FY2024 — on a sample of just 3 companies.
The small sample is itself the finding. Most large contractors do not separate retainage in their structured filing data at all, which means the single largest category of intentionally withheld cash in the industry is close to invisible in public financial data. If it is hard to see at this scale, it is usually harder to see inside a contractor's own accounting system, where retainage is frequently tracked in a spreadsheet rather than the ledger.
Methodology
- Source. The SEC XBRL company facts API, which publishes the tagged data companies file in their 10-Ks. No survey data, no estimates, no customer data.
- Formula. DSO = fiscal year-end accounts receivable ÷ fiscal year revenue × days in the fiscal year. The unbilled variant adds current contract assets to the numerator.
- Tag selection. Receivables use standard current trade-receivable tags in a fixed priority order. Long-term contract receivable tags are deliberately excluded, because filers apply them inconsistently and including them produces DSO figures that reflect tagging choices rather than payment behaviour.
- Restatements. Where a company has restated a figure, the most recently filed value is used.
- Plausibility band. Observations below 15 or above 150 days are marked † and excluded from medians and quartiles, but still published in the tables and the CSV.
- Known coverage gaps. ROAD, STRL do not report a standard current trade-receivable tag and are excluded rather than estimated.
- Updates. Regenerated quarterly as the peer group files. Last generated 2026-07-27.
Frequently asked questions
- What is a good DSO for a construction company?
- Among publicly traded contractors in FY2025, the middle half sat between 57.8 and 82.1 days, with a median of 73 days. A contractor below roughly 57.8 days is collecting faster than three quarters of the listed peer group. These are large public companies with dedicated credit and collections departments, so a smaller contractor running at or near the median is performing well rather than poorly.
- How do you calculate DSO for a contractor?
- Divide accounts receivable at fiscal year end by revenue for that fiscal year, then multiply by the number of days in the year. This index uses that formula with figures taken directly from SEC XBRL data. A second variant adds current contract assets, so unbilled work in progress is counted alongside invoiced receivables.
- Why is construction DSO higher than in other industries?
- Progress billing, pay-application review cycles, conditional and unconditional lien waiver requirements, pay-when-paid clauses down the subcontractor chain, and retainage withheld until substantial completion all add time between performing work and receiving cash. None of these delays reflect a customer refusing to pay; they are structural to how construction contracts are administered.
- Does DSO include retainage?
- It depends on where the filer classifies it. Retainage that is recorded within accounts receivable is captured in these DSO figures; retainage sitting in a separate long-term asset is not. Only a small minority of the peer group tags retainage separately in XBRL at all, which is why the retainage figures in this index carry a much smaller sample than the DSO figures.
- Where does the data in the Contractor DSO Index come from?
- Every observation comes from the SEC's XBRL company facts API, which publishes the tagged financial data companies file in their 10-Ks. The index covers 2015 through 2025. The full dataset, including the specific XBRL tag behind every number, is downloadable as CSV and each company links to its SEC filing history.
See where you land
Put your own revenue and receivables against the FY2025 median of 73 days and see what the gap is worth in cash.
Calculate your AR opportunity →Work on it with us
We are working with a small group of contractors on QuickBooks Online to cut the manual side of collections.
Apply to the Founding Design Partner Program →