Days sales outstanding: how to calculate it and bring it down
DSO is the average number of days it takes you to get paid. For a wholesale business on Net 30, it is the single number that says whether your terms are real.
In short
- DSO = receivables ÷ credit sales in the period × days in the period.
- Compare it with your terms. On Net 30, a DSO of 36 is fine and a DSO of 50 means you are effectively offering Net 50.
- Track it monthly on a rolling 90 days; the trend matters more than the number.
- Reminders before the due date, due-date collection and holds are the changes that move it.
The terms
- Days sales outstanding (DSO)
- The average number of days between making a sale on credit and receiving the cash, over a period.
- Accounts receivable
- The total your buyers owe you at a point in time: every unpaid invoice, current or overdue.
- Credit sales
- Sales made on payment terms in the period. Sales paid at checkout are not included, because they were never owed.
- Best possible DSO
- What your DSO would be if every buyer paid exactly on the due date. On Net 30 with monthly orders, about 30.
Worked example
The formula, worked
At the end of September a wholesaler has $52,000 of receivables outstanding. Credit sales over the previous 90 days were $120,000. DSO = $52,000 ÷ $120,000 × 90 = 39 days.
Their standard terms are Net 30, so on average buyers are paying nine days late. That is tolerable. If the same calculation next quarter gives 48, something has changed: a big buyer slowing down, a reminder process that stopped, or new accounts that were never vetted.
| Receivables at period end | $52,000 |
|---|---|
| Credit sales, last 90 days | $120,000 |
| Days in period | 90 |
| DSO | 39 days |
| Standard terms | Net 30 |
| Average days late | 9 |
What the number means against your terms
| DSO on Net 30 | What it says | What to do |
|---|---|---|
| 30 to 36 | Buyers pay on time, give or take a payment run | Keep the process running |
| 37 to 45 | Reminders are late or not reaching the payer | Add a pre-due reminder and texts; collect from saved cards |
| 46 to 60 | You are effectively on Net 50; cash is being used by your buyers | Holds at 14 days, phone the biggest late balances, review limits |
| Over 60 | A collections problem, or a few large accounts in trouble | Aging report by buyer this week; stop supply where needed |
A common rule of thumb: DSO more than a third above your standard terms signals a collection problem rather than normal variation.
Why DSO and the aging report go together
DSO is one number for the whole book, which makes it easy to track but easy to misread. A DSO of 45 could be every buyer paying 15 days late, or forty buyers paying on time and one large account at 120 days. The aging report tells you which. Use DSO to spot that something has changed and aging to find out what.
Seasonal businesses should compare DSO with the same quarter last year rather than the previous quarter, because a big season inflates receivables for a month or two after it.
Five things that bring DSO down
- Remind before the due date. A heads-up five days out turns forgotten payments into on-time ones. This alone often takes a week off DSO.
- Collect from saved cards on the due date. For buyers who are happy to pay on time, the due date becomes the payment date. See due-date collection.
- Text the person who pays. An email to accounts@ waits for a payment run; a text to the owner gets paid between appointments.
- Hold orders at a fixed point. A buyer who cannot reorder until they pay, pays. Fourteen days is common.
- Shorten terms for slow payers. A buyer with a DSO of 55 on Net 30 can be moved to Net 15 or pay-upfront. Terms are per company in Shopify.
DSO before and after a collection process
Before
- First reminder sent when someone notices the invoice is late.
- Email only, to the accounts inbox.
- No consequence for paying late.
- DSO 48 on Net 30: buyers use you as an 18-day overdraft.
After
- Heads-up at day -5, text on the day.
- Saved cards charged on the due date.
- Orders pause at 14 days overdue.
- DSO 34 on Net 30: terms are the terms.
Tracking it without a spreadsheet
Terms Due shows DSO on the Overview for the last 90 days against the previous 90, next to the share of invoices paid on time and the average days late, all built live from your Shopify orders. The Monday email carries the same figures, so the trend is in front of you without exporting anything.
Questions
What is a good DSO?
Close to your payment terms. On Net 30, anything up to about 36 is healthy. The right comparison is with your own terms and your own last quarter, not an industry average.
Should I include sales paid at checkout?
No. DSO measures credit sales only. Including cash sales makes DSO look better than it is.
What period should I use?
A rolling 90 days, calculated monthly, smooths out payment runs and seasonal lumps. Annual DSO hides problems for too long.
Is a lower DSO always better?
Lower than your terms means buyers are paying early, which is fine but may mean your terms are shorter than they need to be. Much higher than your terms is the problem.
How does DSO relate to cash flow?
Each day of DSO on $120,000 of quarterly credit sales is about $1,300 of cash. Cutting DSO from 48 to 36 frees roughly $16,000 that was sitting in your buyers' bank accounts.
Related
Reading an aging report
What an accounts receivable aging report is, how the aging buckets work, how to read it and what to do about each bucket, with a worked example.
Read moreAging report
A live accounts receivable aging report for Shopify B2B: every open invoice in current, 1-30, 31-60, 61-90 and 90+ day buckets, by buyer, with CSV export.
Read moreDue-date collection
Collect Shopify B2B net terms invoices automatically by charging the buyer's saved card on the due date, with advance notice and automatic retries.
Read moreStop chasing wholesale invoices by hand
Install Terms Due, set a credit limit for each buyer and let the app hold, remind and collect.
Install on Shopify