What should DSO be for a contractor?
Why one DSO benchmark is useless, how to split the number into the three parts you control differently, and how to set a figure you can defend.
Every contractor eventually asks some version of this question, usually after a lender or a board member asks it first. The honest answer is that a single benchmark number is close to useless, because DSO is three different problems added together and they have almost nothing to do with each other.
Comparing your DSO to a peer’s tells you very little unless you also know their customer mix, their negotiated terms, and how fast they invoice. Decomposing your own tells you exactly what to fix.
The three components
Days sales outstanding, as usually calculated, measures the gap between revenue being recognized and cash arriving. Inside that gap are three distinct intervals:
Days to invoice. From work performed to invoice accepted by the customer. This is entirely yours. No customer, contract or market condition prevents you from billing faster. It is a function of how your paperwork moves.
Contractual terms. Net 30, net 45, net 60, or whatever your largest customers have pushed you into. This is a negotiation outcome, and for most mid-market contractors it is only marginally negotiable. Your leverage is a function of how badly the operator needs your crews.
Days past terms. From payment due to payment received. This is a mix of two things: your customer’s payment behavior, and the share of your invoices carrying a dispute that stops the clock.
Most companies quote one number and then try to improve it with a single lever, usually collections calls. That fixes the third component and leaves the other two untouched.
Why this decomposition changes the conversation
Consider two companies both running 68 days DSO.
The first invoices in four days, works on net 45, and runs 19 days past terms. Their problem is downstream: disputes, a customer with a slow AP function, or both. More aggressive billing will not help them at all; they are already billing fast. What they need is to find out why invoices are aging past due.
The second invoices in 22 days, works on net 30, and runs 16 days past terms. Their problem is upstream and it is theirs alone. Every day they remove from the billing cycle comes straight off the total, with no negotiation and no awkward phone calls to a customer’s accounts payable department.
The same headline number, two entirely different projects. This is why the benchmark question is the wrong question and the decomposition is the right one.
What good looks like for each component
Days to invoice. There is no structural reason this needs to exceed a handful of days for routine work. The theoretical floor is set by your customer signature process and your invoicing run, not by anything else. Companies that capture tickets in the field and validate them automatically bill in days rather than weeks. Companies moving paper through trucks and manual entry rarely get below two weeks and often sit at three or four.
If your days-to-invoice is in double digits, this is where your fastest available improvement is, and it does not require anyone else’s cooperation.
Terms. Take what the market gives you and be realistic. Where there is room, the room is usually in prompt-payment discounts rather than in shorter stated terms. Whether that trade is worth it depends on your cost of capital, which you should actually calculate rather than assume.
Days past terms. A number in the low single digits means your invoices are clean and your customer pays reliably. A number in the twenties or thirties means either your invoices are triggering disputes or your customer has a structural AP problem. Sort your aged receivables by customer and by dispute status, and it will be obvious within an hour which of the two you have.
The measurement most companies are missing
Almost every contractor can produce a DSO figure. Very few can produce days-to-invoice, because it requires a date that most systems do not capture: the date the work was performed, as distinct from the date the ticket was entered.
Without that date, your billing delay is invisible. Your system reports the interval from invoice creation to payment, which quietly excludes the entire upstream problem. This is why companies are frequently confident that their billing is fast and are wrong about it.
If you capture nothing else from this, capture that date. It costs a field on a form, and it turns your largest hidden interval into something you can see.
Setting a target for your own business
A workable approach:
- Measure the three components separately over the last two quarters.
- Set days-to-invoice against your own floor, not a benchmark. Your floor is roughly your signature turnaround plus your invoicing cadence. If you invoice weekly, your floor includes up to seven days of waiting for the run; consider whether that cadence still makes sense.
- Treat terms as fixed unless you have genuine leverage with a specific customer.
- Set days-past-terms by customer rather than in aggregate. One large slow payer will dominate the average and hide the fact that everyone else pays on time.
- Recombine and set the total as the sum of three separately-justified numbers. If you cannot justify each component, you do not have a target. You have a wish.
The output is a DSO goal you can actually defend to a lender, along with a specific list of what has to change to reach it.
Why the upstream component is usually the right first project
Days to invoice has three properties that make it the best place to start.
It is entirely within your control, so progress does not depend on anyone else’s cooperation. It compounds, because faster billing usually means cleaner billing: tickets validated at the point of creation generate fewer disputes downstream, which reduces days past terms as a side effect. And it is measurable weekly rather than quarterly, so you find out quickly whether what you changed worked.
The cost of the delay itself is straightforward arithmetic: your annual billed revenue, multiplied by the excess days divided by 365, multiplied by your cost of capital. For a business billing $45 million with a two-week billing cycle, removing ten days is worth six figures a year in carrying cost alone, before counting the disputes that never happen because the ticket was checked while the crew was still on location.
That is usually the number that gets the project funded.
Frequently asked questions
What is a good DSO for a construction company?
There is no single benchmark worth chasing, because DSO is three separate intervals added together: your days to invoice, the contractual terms you agreed, and the days your customer runs past those terms. Two contractors with identical DSO can have completely different problems. Decompose your own and set a target for each part rather than comparing a headline figure to a peer.
How is DSO different from days to invoice?
DSO measures the full gap between recognizing revenue and receiving cash, which mixes your performance with your customer payment behavior and your negotiated terms. Days to invoice measures only the part you control: work performed to invoice accepted. It is the more actionable number and most contractors cannot produce it, because the date work was performed is not captured anywhere their system can reach.
Why is my DSO getting worse when nothing changed?
Usually one of three things: your customer mix shifted toward slower payers, your billing cycle is lagging the field as volume grows, or disputes are rising and stopping the clock on invoices. Sorting aged receivables by customer and by dispute status separates the three within an hour.