Skip to content
MetricsJul 18, 2026·4 min read

What is a good DSO? Benchmarks and how to lower it

Days Sales Outstanding measures how long revenue sits as receivables before it becomes cash. How to calculate it, what counts as good for your terms, the ways the metric lies, and the levers that actually bring it down.

Days Sales Outstanding (DSO) answers one question: on average, how many days does a dollar of credit sales spend as a receivable before it becomes cash? It is the single most quoted number in accounts receivable, it fits in a sentence, and it is misread constantly. This post covers the calculation, what "good" means honestly (it depends on your terms, and anyone who gives you one universal number is skipping the hard part), and the levers that actually move it.

The formula, with a worked example

The standard simple method:

DSO = (accounts receivable / credit sales in the period) x days in the period

Say you invoiced $120,000 on credit over the last 90 days, and your open receivables today total $52,000. DSO = (52,000 / 120,000) x 90 = 39 days. Read it as: the average invoiced dollar takes about 39 days to arrive.

  • Use credit sales only. Cash and card-at-checkout revenue never becomes a receivable, so including it flatters the number. If half your revenue is paid up front, computing DSO on total revenue can make a struggling collections operation look excellent.
  • Pick a period long enough to smooth lumps. 90 or 365 days for most small businesses. A 30-day window whipsaws with every big invoice.
  • Be consistent. DSO is most useful as a trend on a fixed method. Switching periods or definitions between measurements produces movement that means nothing.

The free DSO calculator runs this exact formula in your browser and shows the arithmetic. If your credit sales for the period are zero it will tell you DSO is undefined rather than print a fake zero.

So what is a good DSO?

The only honest benchmark is relative to your payment terms, because DSO bundles two very different things: the terms you offered (a choice) and how far beyond them customers stretch (a performance problem). A rule of thumb that survives contact with reality:

  • DSO at or below your terms (30 or less on net 30): excellent. Customers pay on time or early; whatever you are doing, keep doing it.
  • DSO up to roughly 1.5x your terms (31 to 45 on net 30): normal for B2B. Some drift past due is structural; AP departments batch payments and float their vendors a little.
  • DSO beyond about 1.5x your terms (45+ on net 30): collections are leaking. At this level the gap is no longer explained by payment-run timing; invoices are being forgotten, disputed silently, or deprioritized because nobody chases.
  • DSO around 2x your terms or worse: treat it as an emergency. You are functionally a lender, unpaid, to your slowest customers.

Cross-industry comparisons mostly mislead. Construction and enterprise sales run long terms and long DSO by nature; SaaS billed by card runs near zero. Comparing your agency's 44 to a hardware distributor's 61 tells you about their industries, not your collections. The comparison that matters is you against your own terms, and you against your own last quarter.

Three ways DSO lies to you

  1. Growth distorts it. Because the numerator is a snapshot and the denominator is a flow, a fast-growing book carries a rising DSO even when every customer pays exactly on time; a shrinking one flatters it. Check the aging report alongside DSO: aging tells you where the money actually is.
  2. Averages hide the tail. A DSO of 38 can mean everyone pays around day 38, or that most pay on day 30 while two large accounts sit at day 120. The second case is far more dangerous (collectibility falls sharply as invoices age) and DSO cannot distinguish them. The 90+ bucket of the aging report can.
  3. It bundles a choice with a problem. Moving terms from net 45 to net 30 lowers DSO without collecting a single invoice faster; offering net 60 to win a big logo raises it while being a perfectly sound decision. Track DSO against terms, not in a vacuum.

How to actually lower it

In rough order of effect for a small B2B business:

  1. Chase every invoice, on a schedule, without exceptions. The largest cause of high DSO in small businesses is invoices nobody followed up on. A fixed escalation sequence, friendly at 3 days late and firm at 30, run every time, moves DSO more than any other single change because it attacks the actual failure mode: forgetting.
  2. Invoice immediately and correctly. Every day between delivering the work and sending the invoice is a day of DSO you donated. And a wrong PO number or misaddressed invoice adds a silent dispute cycle before the clock even starts.
  3. Make paying trivial. A payment link in the reminder beats "see attached wire instructions" by removing a lookup step from someone else's busy day.
  4. Send a pre-due heads-up. A note 3 days before due catches lost and misrouted invoices while they are nobody's fault, which is the cheapest possible time to catch them.
  5. Put teeth in the terms. A late fee clause, stated up front and applied evenly, gives your reminders a neutral consequence to point at. Check your state's rules in the late fee laws library first.
  6. Fix the repeat offenders structurally. For the accounts that are late every single month, reminders are treating symptoms. Shorter terms, deposits, or card-on-file autopay fix the disease.

Measure it, then automate the boring part

A reasonable operating cadence: compute DSO monthly on a trailing 90-day window, watch the trend against your terms, and read it next to the aging report so averages cannot hide the tail. When the number drifts up, the cause is almost always visible in aging within a minute: a cluster of invoices crossing 60 days because nobody chased them.

Duebay computes DSO and live aging from the moment your invoices land (CSV, Stripe, or entered by hand), and its sequences do the chasing that keeps the number down. The metric is free forever; the point of the product is making the follow-through automatic.

See your own aging and DSO in about two minutes: import a CSV and Duebay computes both on the spot.

Generate a free aging report

Stop doing this by hand

Duebay runs the escalation described here on a schedule: import your open invoices, and every overdue one gets chased from friendly nudge to final notice without you writing another email.