DSO: The Number Every Contractor Should Know
An operator working-capital illustration
On $10M in annual revenue, the difference between 30-day and 90-day DSO is roughly $1.6M of cash that's either in your account or sitting in a customer's. That is a steady-sales working-capital illustration, not a measured recovery. Track invoice-age DSO alongside completion-to-invoice time and customer disputes.
Sam Yang, contractor CFO and former private-equity investor
The short answer
Days Sales Outstanding (DSO) is a receivables-to-sales ratio expressed in days. A year-end approximation is AR divided by trailing annual credit sales, multiplied by 365. At steady $10M annual credit sales, 60 fewer days corresponds to about $1.64M less AR. That is working-capital arithmetic, not a guaranteed cash recovery. Level's current collection-rate median is 85.1% across 464 companies; collection rate is not DSO.
Key takeaways
- Separate three clocks: completion to invoice, invoice to cash, and contractual retainage release. Late invoicing lengthens job-to-cash time without necessarily increasing invoice-age DSO.
- The current 464-company collection-rate distribution is 85.1% at the median and 96% at P90. Its observation window is not published, so those percentages cannot be converted into today's AR balance.
- In the historical invoice-size analysis, the $100K+ invoices represent about 0.7% of invoice count and 38% of invoiced value. The table below retains that distinct cohort, not a claim about current unpaid AR.
- Prioritize large disputed invoices by dollars, evidence needed and named customer approver. Lenders' advance rates and eligibility rules come from the actual borrowing-base agreement.
Normal DSO by trade
This is almost always asked per trade, and the honest answer is that the published figures are weaker than the question implies. The following earlier source table is retained for context. Its vintages are mixed, so it is not a current trade ranking:
| Figure | Days | What it really is |
|---|---|---|
| All specialty trades | 55 to 57 | CFMA Construction Financial Benchmarker. One industry-wide number, published against many trades rather than measured per trade. |
| HVAC, single filer | 69.4 | Limbach Holdings Form 10-K. A large commercial mechanical contractor, not a distribution, and we record its confidence as low. |
| Electrical, single filer | 57.4 | MYR Group financials via GuruFocus. Again one public company. |
What that table cannot support is a claim that one trade collects faster than another. When we checked our own data, roofing's 56.6 days is explicitly flagged as an industry benchmark shared across eleven trade records, so the small differences between rows are an artifact of which source and vintage each row drew from, not a real trade difference. Anyone publishing a tidy per-trade DSO ranking is reading more into these numbers than they contain.
Contract structure explains why two contractors can have different collection clocks: retainage release, pay applications and disputed change orders differ from a paid-at-service residential job. We have not measured a within-trade DSO distribution that proves its spread is larger than differences between trades.
For a dated, reproducible comparison, calculate the same year-end net trade receivables / full-year revenue x 365 proxy from public filings. These are diversified public companies, not small-business targets or average invoice payment times. Receivables include separately presented retainage where applicable; separate contract assets are excluded. Fiscal year ends differ for IES.
| Issuer | Fiscal year end | Year-end receivables-to-sales proxy |
|---|---|---|
| Comfort Systems (FIX) | December 31, 2025 | 108.3 days |
| EMCOR (EME) | December 31, 2025 | 91.1 days |
| Limbach (LMB) | December 31, 2025 | 75.2 days |
| APi (APG) | December 31, 2025 | 72.1 days |
| IES (IESC) | September 30, 2025 | 70.6 days |
The public-contractor cash-flow analysis provides the filing links and numerator/denominator details. A year-end acquisition or seasonal receivables peak can move this ratio without changing payment behavior on an individual invoice.
Across 464 contractors, the separate collection-rate dataset reports median 85.1%, P75 92.7% and P10 38.8%. On a hypothetical matched $5M billing cohort, 85.1% versus 96% is $545,000 of collected-flow difference. This does not prove $545,000 is sitting in today's receivables or available to recover. Collection windows, credits, write-offs and maturity must be reconciled first.
Our DSO calculator's 38-45-day and 88-100-day bands are operator planning bands, not measured trade quartiles. Use them to stress-test cash needs, then compare your own consistent customer cohorts and contract terms.
Collection rate is one of four measurable gaps between accounting profit and cash in the bank. The other three are billing capture, invoicing lag, and job closeout, each with its own sample size, in Profitable on Paper, Broke in the Bank.
The Corporate Finance Metric Contractors Don't Track
In private equity, when we evaluated a contractor for acquisition, the first financial metric we looked at after EBITDA was DSO, Days Sales Outstanding. It expresses receivables relative to sales in days. It is useful for working-capital analysis, but it does not directly measure the average payment time of individual invoices.
At steady annual credit sales, 30-day and 90-day DSO imply very different receivables requirements. On $10M, the 60-day difference is $10M / 365 x 60 = $1,643,836 of working capital. This balance-ratio illustration assumes comparable sales and receivables definitions; it is not proof that every invoice pays in exactly 30 or 90 days.
In my underwriting work, DSO was a useful first question. The operator follow-up mattered more: which customer, invoice or certification step explains the change?
Calculate your own DSO → Open the DSO Calculator, plug in your annual revenue and current AR balance, and see your DSO number plus how it compares to clearly labeled operator planning bands. 60 seconds, no email required.
What DSO Looks Like Across the Trades
The current published company-level collection-rate cohort contains 464 companies. It measures cash collected divided by billed revenue; the observation window is unavailable. It is not a DSO distribution, an invoice-level median or an instantaneous balance-sheet snapshot.
| Percentile | Current Collection Rate | What It Means |
|---|---|---|
| P90 | 96.0% | Higher collected-to-billed ratio in this cohort |
| P75 | 92.7% | Upper quartile of this ratio |
| Median | 85.1% | Middle company in this cohort |
| P25 | 70.7% | Lower quartile of this ratio |
| P10 | 38.8% | Low ratio requiring reconciliation before diagnosis |
Earlier collection-rate table, retained as an unreconciled prior cut
| Percentile | Invoice Collection Rate | What It Means |
|---|---|---|
| Top 10% (P90) | 88.8% | Earlier cut; denominator and observation window not reproduced |
| Top 25% (P75) | 82.5% | Earlier cut; not the current 464-company percentile |
| Median | 70.5% | Earlier cut; not a verified invoice-level snapshot |
| Bottom 25% (P25) | 43.0% | Earlier cut; cannot be multiplied by annual sales to infer AR |
| Bottom 10% (P10) | 8.8% | Earlier cut; not the current company-level P10 |
The earlier article attributed these values to 2.5 million invoices and $11.6B of invoiced value. We have not reproduced the derivation or proved whether the difference comes from weighting, timing or sample selection. No explanation is asserted as fact. The broader founding-team research universe of 2,242 contractors and $13.25B in job revenue is a separate scope, not the sample size of every metric or a count of Level clients.
For operational use, keep invoice IDs, issue dates, due dates, credits, cash applications and retainage separately. A low collected-to-billed ratio can reflect immature invoices, disputed billing, credits or missing cash application. Diagnose those before calling the difference bad debt or recoverable cash.
Free benchmark review
See how your cash cycle benchmarks.
We compare your AR, billing speed, and cash timing against companies that collect faster.
The Invoice Size Power Law
Not all invoices are equal, and the collection dynamics change dramatically with size:
| Invoice Size | Volume | Total Revenue | % of All Revenue |
|---|---|---|---|
| Under $500 | 920K (37%) | $250M | 2% |
| $500-$1K | 542K (22%) | $387M | 3% |
| $1K-$5K | 749K (30%) | $1.6B | 14% |
| $5K-$10K | 134K (5%) | $936M | 8% |
| $10K-$25K | 90K (4%) | $1.4B | 12% |
| $25K-$50K | 34K (1.4%) | $1.2B | 10% |
| $50K-$100K | 19K (0.8%) | $1.3B | 11% |
| $100K+ | 16K (0.7%) | $4.4B | 38% |
This historical size table covers approximately 2.5 million invoices and $11.6B in invoiced value, separate from the current collection-rate cohort. Counts, percentages and totals are rounded. At the displayed precision, about 0.7% of invoices represent 38% of invoiced value. Those 16,000 large invoices averaging $275K each are where the real collection risk lives. A single $250K invoice sitting at 90 days overdue has a bigger cash impact than 500 late $200 invoices.
That is why I would segment the collection queue by dollars and blockers, rather than use one reminder cadence for every invoice. Your $300 residential service invoices need automated reminders. Your $250K commercial invoices need personal attention from day one.
How to Calculate Your DSO
The formula is simple:
DSO = (Accounts Receivable / Revenue) x Number of Days
For a trailing 12-month calculation:
- Pull your current AR balance
- Pull trailing 12-month credit sales, using total revenue only as an explicitly labeled proxy when cash sales cannot be separated
- DSO = (AR / Revenue) x 365
Example:
- Current AR: $1.8M
- Annual revenue: $8M
- DSO = ($1.8M / $8M) x 365 = 82 days
This is an 82-day year-end balance proxy, not an observed average invoice payment time. For period-average DSO, use average receivables and credit sales over the same period. For actual payment speed, follow invoice cohorts from issuance to cash, including still-open invoices rather than measuring only those already paid.
What's Good?
| DSO Range | Planning Assessment | Possible Contract Profile |
|---|---|---|
| Under 30 days | Excellent | Mostly residential, COD or quick-pay customers |
| 30-45 days | Strong | Good mix of commercial and service, tight AR |
| 45-60 days | Review against terms | Commercial mix, billing disputes or seasonal balances |
| 60-90 days | Concerning | Retainage, slow commercial customers, weak follow-up |
| 90+ days | Urgent reconciliation | Old disputes, retainage, acquisitions or collection failures |
These are author planning bands, not measured industry quantiles. For a Net 30 service business, 40-50 days can be a useful review trigger; residential paid-at-service work needs a different target. A 70-day balance ratio does not establish that every customer is 40 days late. Inspect due-date aging and retainage separately. The cash-flow context article discusses RSM's historical CFMA 2020 average of 21.4 days of cash, not a current median for contractors.
The Outstanding AR Problem
A large receivables balance can carry financing costs without being recoverable in full. Customer-identifying ledger amounts are withheld. For a fictional $10M balance financed for a full year at 8%, gross carrying cost would be $800,000. That is a financing scenario; cash-funded balances, draw timing, fees and seasonal duration change the cost.
At $8M of hypothetical matched billings, the current median 85.1% versus P90 96% implies $872,000 of collected-flow difference ($8M x 10.9%). It does not imply an $872,000 AR reduction, or turn 14.9% of annual revenue into today's receivables. Reconcile opening AR plus invoices, minus cash applications, credits and write-offs, to closing AR before modeling recoverable cash.
The Three Levers That Control DSO
Lever 1: Billing Speed
Issuing a complete, accepted invoice starts the customer payment workflow. Approval requirements and disputes still determine when cash arrives.
The published median billing delay is 1 day across 733 company observations, including progress billing. The post-completion median is 7 days; the separate full-cohort slowest-decile threshold is 30 days. The published metric does not provide a progress-billing share or a complete quartile table.
Every day of invoicing delay lengthens completion-to-cash time. Ten days before invoice issuance plus a 30-day payment cycle is 40 days from completion to cash. Invoice-age DSO starts at issuance and may miss those first ten days altogether. Read our full billing speed analysis for the benchmarks.
Lever 2: Payment Terms
Start with the signed terms and the invoice-approval process. A nominal Net 30 agreement does not tell you when AP accepts the invoice or which documents it requires.
For a property-management customer, a planning scenario might be 30 days after approval plus payment-processing time, producing a 45-50-day issuance-to-cash cycle. Verify that sequence against the actual contract and payment history.
For a government job, stress-test a 60-90-day approval/payment scenario if supported by the agency workflow. Do not replace contractual rights or prompt-payment requirements with that assumption.
Know your customer DSO. Track payment speed by customer, not just in aggregate. For example, a fictional customer mix might have 20% paying in 15 days and 20% taking 60 or more; calculate your actual mix rather than assume those shares. The aggregate AR-to-sales ratio can hide customer-specific delays. Compare matched invoice cohorts and due-date aging, then assign a customer-specific fix.
Lever 3: Collection Discipline
This is the first process I inspect when due-date aging shows overdue balances. Check whether an accepted invoice is past its due date and lacks a follow-up owner. A 45-60-day invoice age is a review scenario, not a measured prevalence of neglected invoices.
An operator playbook to adapt to due dates, disputes and customer agreements, not a measured top-quartile cadence:
- Day 7: Automated payment reminder
- Day 21: Personal email to AP contact
- Day 30: Confirm due date and approval status by phone; call it overdue only if it is
- Day 45: Escalation to the project manager or property manager
- Day 60: Human review of credit hold or further work, subject to contract obligations, legal advice where needed and customer approval authority
The dataset does not isolate the causal effect of follow-up from customer mix or contract terms. My operational preference is to assign an owner, next action and evidence requirement to each material overdue balance. An AR queue can use stages, owners and next actions, with disputes and contractual retainage tracked separately.
DSO and Your Borrowing Capacity
Here's something most contractors don't realize: your DSO directly affects your borrowing capacity.
Banks and lenders look at AR quality when sizing a line of credit. Eligibility, concentration limits, dispute exclusions, cross-aging, retainage and advance rates are lender-specific. Some agreements exclude older invoices, but age alone does not establish their collateral value.
In a fictional borrowing-base example, $2M of fully eligible AR at an 80% advance rate supports $1.6M before other facility limits. If only $1M qualifies under the agreement, the same rate supports $800K. That difference comes from eligibility, not a mechanical rule assigning borrowing capacity from 40-day versus 80-day DSO.
Collecting eligible receivables can release cash while reducing the AR borrowing base. Track cash plus undrawn eligible availability, rather than assume a lower DSO always increases borrowing capacity. Resolving disputes or cross-aging can improve eligibility independently of the headline ratio.
When DSO Isn't the Right Metric
Retainage-heavy contractors may show elevated DSO when their actual contract holds a portion of billing after completion; 5-10% is a planning range to verify, not a universal retention term. If you do significant commercial work, calculate DSO with and without retainage to see your true collection performance. Read our retainage guide for strategies.
Progress billing contractors need certification and due-date status alongside invoice dates. Earlier billing improves job-to-cash timing only if it produces earlier cash; it does not inherently lower invoice-age DSO. Uncertified applications and unbilled contract assets also need consistent accounting treatment.
Rapidly growing contractors can show distorted balance ratios as acquisitions, seasonality and billing timing change. With a consistent period and entity perimeter, if revenue grew 30% but AR grew 50%, the AR-to-sales proxy rises, and that's a cash flow warning sign, not necessarily a collection problem.
The Bottom Line
DSO is the number that connects your income statement to your bank account. You can have great revenue, strong margins, and still run out of cash if your DSO is 90 days and your payroll is every two weeks.
The current collection-rate median is 85.1% and P90 is 96% across 464 companies. For hypothetical matched $10M billings, that is a $1.09M collected-flow difference, not a current AR balance, assured recovery or annual recurring profit.
Track the number. Break it down by customer. Fix the worst offenders. Measure subsequent cohorts over consistent windows and track actual cash applications. Contractual retainage and genuine disputes can remain unresolved beyond 60 days.
Q: How does Level help improve DSO? A: Depending on signed scope and data access, we refresh an AR view by customer, job and aging bucket, calculate matched-basis DSO at the agreed cadence, and review overdue balances and follow-up workflows. Weekly is one operating cadence; it is not a real-time integration guarantee. The audit establishes the baseline, data access and workflow scope; the size and timing of improvement depend on actual overdue balances, disputes and customer behavior. We do not publish a verified 10-15-day improvement rate here. The first audit is free.
Q: What DSO should I target? A: As an operator planning starting point for commercial/service Net 30 work, consider 40-50 days, then adjust for verified contract mix. For paid-at-service residential work, under 30 days is a planning review threshold, not permission for overdue invoices. For commercial work with retainage, 55-65 days is another planning scenario to test against contract terms. Those are planning bands, not statistical trade targets or blanket acceptance of overdue balances. Track retained and non-retained portions separately.
Q: How does DSO relate to my collection rate? A: They measure related but different things. Collection rate compares collected cash with matched billings over a stated window. DSO is a receivables-to-sales ratio expressed in days; invoice-cohort analysis measures actual payment velocity. You can have a high collection rate (95%) but high DSO (75 days) if customers pay eventually but slowly. Both need to be tracked.
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
Cash Flow
Profitable on Paper, Broke in the Bank: The Four Gaps That Eat a Contractor's Cash
The median contractor collects 85.1% of what it bills (n=464) and invoices 97.1% of logged hours (n=963). Four measurable gaps, none on your P&L.
Cash Flow
The October Problem: Roofing Permits Spike 46% in One Month, Then the Cash Crunch Hits
Roofing permits spike +45.8% above average in October, then fall into winter. Why a fall demand peak can set up a Q1 cash squeeze, how to test whether it applies to you, and how to plan for it.
Cash Flow
The 13-Week Cash Forecast Is a Data-Layer Test
A 13-week cash forecast exposes whether field status, billing, AR, AP, payroll, backlog, and accounting data actually tie.

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