Days Sales Outstanding and the Mismatch Inside It
Why this matters
An owner quotes a collections figure to a lender, a partner or the office and treats it as a fact about customers. It is not. Days sales outstanding is built from two halves that disagree about what a period is, and the disagreement is big enough that the same shop, on the same day, with every customer paying at exactly the same speed, reports anything from the high thirties to the low nineties depending only on which window someone selected. Quote the figure without the window and you have quoted nothing. Worse, the decision that follows the figure - chase harder, tighten terms, draw on a line - gets aimed at a problem that may not be there.
The two halves disagree about what a period is
The numerator is a current snapshot: everything still owed on invoices that have been sent, whatever date they carry, net of payments recorded against them. Sent, overdue, part-paid, from last week or from last March - all of it, as of today. Nothing about it is period-scoped.
The denominator is a windowed flow, and it is an accrual figure whatever basis your books are kept on: sales inside the selected window only, meaning invoices issued between the window's start and today, net of goodwill credits, then divided by the number of days in the window to give a daily sales rate. A shop on cash-basis books cannot tie this to its own revenue line and should take it from the invoice register instead.
So the arithmetic is: open receivable, divided by (sales in window / days in window).
A snapshot numerator over a windowed flow makes a figure that moves with the window you chose. This card owns that claim for the group; the siblings below cite it rather than re-deriving it.
If a shop's daily billing rate were genuinely constant, the two halves would agree and the window would not matter, because any stretch you sampled would return the same rate. Field-service shops are seasonal, bill in bursts when the office catches up, and lose a week to a holiday. So the shorter the window, the more the answer reports that window's own billing rate and the less it reports anything about collection.
One shop, one day, three windows
Everything below is in sales-months, where one sales-month is this shop's average month of invoiced sales. The shop runs a summer peak at 1.5 times the average month, shoulder months at about 1.0, and slow months at 0.6. Annual invoiced sales are 12.0 sales-months by construction.
Review day is the 8th of the first slow month, immediately after three peak months closed. Open receivable on that morning is 1.80 sales-months. Terms are net 30 on 95 percent of invoices issued.
Three people pull the number that day, each with a different default window.
| Window ending the same morning | Sales issued inside it | Daily sales rate | Reported DSO |
|---|---|---|---|
| Trailing 7 days | 0.14 sales-months | 0.0200 sales-months/day | 90.0 days |
| Trailing 90 days | 4.29 sales-months | 0.0477 sales-months/day | 37.8 days |
| Trailing 365 days | 12.00 sales-months | 0.0329 sales-months/day | 54.8 days |
The 7-day denominator is 7 days at the slow-month rate: 7 times 0.6/30 is 0.14 sales-months. The 90-day denominator is those same 7 slow days plus 83 peak days at 1.5/30, so 0.14 plus 4.15 is 4.29 sales-months. Dividing the same 1.80 sales-months of receivable by each daily rate gives 90.0, 37.8 and 54.8 days.
Nothing moved between those three readings. No customer paid, no invoice went out, no term changed. The spread between the lowest and highest reading is 2.4 times, and the number a shop acts on is whichever one happened to be on the screen.
Why the direction is predictable, not random
This is not noise you can average away. The 90-day window landed almost entirely on the peak, so its daily rate is the highest of the three and its DSO is the lowest of the three. The 7-day window landed entirely in the trough, so its rate is the lowest and its DSO is the highest. The annual window sits between them because it averages the whole cycle.
That gives you a rule you can apply without recomputing anything: a short window pointed at a busy stretch flatters the figure, and a short window pointed at a quiet stretch condemns it. A shop that reviews monthly will therefore watch its collections number improve every spring and deteriorate every autumn while its customers behave identically, and if the seasonality is strong enough the seasonal swing is larger than any real collection change it is trying to detect.
The second predictable direction comes from the denominator counting invoices issued, not work completed. Two weeks of an office short-staffed does not change what customers owe and does not change what they pay, but it cuts the denominator hard on any window short enough to notice. See the case card below, where exactly that sent a shop chasing customers who were paying normally.
Two things inside the numerator that nobody scopes
The window argument gets all the attention because it is visible. Two quieter inputs move the same figure, and both of them run in the flattering direction.
A write-off is indistinguishable from a collection. Suppose this shop clears 0.20 sales-months of aged junk off the book, by goodwill credit or by bad-debt write-off, which move this ratio the same way and are different entries everywhere else, since a credit reverses the sale and its tax while a bad-debt write-off is a deduction with its own state-specific sales-tax recovery route. Take the one your accountant says fits the facts rather than the one the software makes easy. If a credit lands against invoices issued inside the window, the numerator falls by 0.20 and the window's sales fall by 0.20 too, so the annual reading goes from 54.8 to 1.60 times 365 divided by 11.80, which is 49.5 days. If it lands against invoices issued before the window opened - and old junk usually is old - or if the balance is written off rather than credited, only the numerator moves, and the reading goes to 1.60 times 365 divided by 12.00, which is 48.7 days. Either way the figure improved by 5 to 6 days and nobody paid anything. Any collections review that reports an improvement should state what was written off in the same breath.
Deposits and progress payments compress it without anybody paying faster. The numerator is net of payments recorded against open invoices, so a shop that starts taking a deposit on larger jobs shrinks its open receivable on day one. That is a real cash improvement and it is not a collection-speed improvement, and the figure cannot tell the two apart. Read it alongside the part-paid population rather than on its own.
What the number can carry, and what it cannot
It cannot carry a level. "We are at 54 days" is meaningless outside the window that produced it, so it cannot be compared against a published benchmark, a trade average, or another shop's figure, because none of them state their window and most of them are not computing it the same way. If someone hands you their number, the only useful question is "over what window", and if they cannot answer, the comparison is over.
It can carry a trend, on one held window. Same window length, same calendar anchor, read as a series. Movement in that series is still contaminated by seasonality, which is why a year-over-year read of the same month beats a month-over-month read.
It cannot carry an explanation. A rise tells you the ratio moved. Whether the receivable grew or the window's billing rate shrank is a separate question, and you answer it by looking at the two halves separately, not by staring harder at the ratio.
Pick one window and never change it
The operational answer is two standing windows and a rule about quoting them, and these are starting points to tune once you can see your own seasonality:
- Trailing 365 days is the permanent trend line. It is the only window long enough that the receivable and the sales that built it come from roughly the same population, and it is immune to a slow month. Read it quarterly. It moves slowly, which is the point.
- Trailing 90 days is the operating read, for spotting a change inside a season. Read it monthly, and compare it against the same 90 days last year rather than against last quarter.
- The window goes in the sentence, every time the number is said out loud. "Fifty-five on the trailing year" and "thirty-eight on the trailing quarter" are two facts about one shop. "Fifty-five" on its own is the start of an argument.
Never switch the window to make a point. If the quarterly read looks better than the annual one, that is seasonality, and moving to it permanently means you have set your alarm to go off every autumn.
The countback version, for when the answer has to be right
When a lender, a buyer, a partner or a credit decision is going to rest on the number, stop dividing by an averaged rate and walk the receivable backwards through the sales that actually produced it. The method is old, it is arithmetic, and it takes about ten minutes with the invoice register open.
Start with the open receivable. Walk back month by month through invoices issued, consuming the receivable against each month's billing until it is exhausted, and count the days you crossed. The partial month at the end is prorated.
| Walking back from review day | Issued there | Consumed | Receivable left | Days counted |
|---|---|---|---|---|
| Days 1 to 7 of the slow month | 0.14 | 0.14 | 1.66 | 7.0 |
| The peak month before it | 1.50 | 1.50 | 0.16 | 37.0 |
| The peak month before that | 1.50 | 0.16 | 0.00 | 40.2 |
The last row prorates: 0.16 of that month's 1.50 sales-months is 0.1067 of the month, and 0.1067 of 30 days is 3.2 days, so 37.0 plus 3.2 is 40.2 days.
Countback DSO is 40.2 days. Against net 30 terms that is 10.2 days past terms on average, which is a sentence you can act on: it is a collections finding, not a window artifact. Note where it sits relative to the three window figures - below the annual 54.8 and above the quarterly 37.8, and nowhere near the 90.0 the 7-day window printed. The annual figure overstated because the receivable was built at the peak rate while the denominator averaged in slow months that contributed almost nothing to it. The countback has no such problem, because it only ever divides the receivable by the billing that actually created it.
What changes the answer: countback assumes customers pay oldest-first, which is close enough for residential work and can be wrong on a commercial account that pays by purchase order and skips disputed invoices. Where one account is large enough to matter, pull it out and count it separately rather than letting it distort the walk. And if the receivable is deeper than your sales register goes back, you do not have a DSO problem, you have a write-off decision, and that is the aging ladder's question rather than this one.
References
- See related: universal-the-quarter-dso-doubled-and-sales-were-flat, a case where the window moved and the shop read it as customers paying slower.
- See related: universal-the-aging-buckets-and-what-each-one-actually-costs, for splitting the same receivable by how far past due it is.
- See related: universal-partly-paid-invoices-and-the-coverage-number, for the part-paid slice of the numerator.
- See related: universal-days-to-pay-by-method-and-what-the-gap-buys-you, which measures collection speed per payment rather than across the whole book.