DSO (Days Sales Outstanding) Calculator
Compute Days Sales Outstanding (DSO) = Accounts Receivable ÷ Revenue × period. Measures how long customers take to pay invoices. Standard B2B finance KPI.
DSO Calculator
How to use the DSO Calculator
Pick the period
For annual analysis: 365 days. For quarterly: 90. For monthly: 30. The period MUST match your revenue period — use annual revenue with 365, quarterly revenue with 90. Mixing produces nonsense. Public companies disclose quarterly; private companies typically run monthly DSO for operational visibility.
Enter revenue + accounts receivable
Revenue = top-line sales for the period. AR = end-of-period accounts receivable balance (net of bad-debt allowance). Use the same period for both. For trend analysis, run the calc monthly and watch DSO over time — direction matters more than absolute level. A rising DSO is a leading indicator of collection problems building.
Enter your stated payment terms
The standard terms on your invoices — usually net 30 for B2B SMEs, net 15 for cash-tight businesses, net 60-90 for industries with long collection cycles. This sets the "expected" benchmark; the tool computes how many days over (or under) terms your actual collections are running. Best-practice DSO equals stated terms; the verdict treats up to 15 days over as normal slippage — an editorial threshold, not a survey figure.
Read the verdict + locked-cash figure
The verdict classifies your DSO vs stated terms (Excellent / Healthy / Elevated / Problematic / Critical). The locked-cash figure shows how much working capital is sitting in over-terms AR — money you could deploy if customers paid on time. For a $10M business at 60-day DSO vs 30-day terms, locked cash is ~$800K — a meaningful CFO conversation.
DSO — the credit + collections KPI that every B2B CFO watches
Days Sales Outstanding measures how long it takes to collect from customers after a sale. It's the single most-watched B2B credit + collections KPI. Public companies disclose it; banks include it in covenants; credit rating agencies use it as a deterioration signal. A DSO of 45 days on $10M revenue means ~$1.23M is locked up in accounts receivable at any time. Cut DSO by 5 days and you free ~$137K of working capital — without raising capital, taking on debt, or growing sales. That's why operational excellence in collections is one of the highest-ROI activities in finance.
Reading DSO in context — terms matter
Raw DSO is meaningless without comparing to stated payment terms. A DSO of 60 days is excellent if your terms are net 60; a disaster if your terms are net 15. The right framing is DSO MINUS stated terms — "best practice DSO" or "BPDSO". The verdict bands on this page are editorial thresholds: within 5 days of terms, excellent; 5–15 days over, ordinary slippage; 15–30 days over, an aging cluster worth pulling apart — usually a handful of accounts drive the average; 30+ days over, a systemic collection problem or a large customer imposing its own terms. Industry norms vary widely — card-paid retail collects almost immediately, subscription software collects up front, industrial B2B waits on invoice cycles, and government and healthcare payers are notoriously slow — so benchmark against direct competitors' filings, not a generic average.
Cut DSO by 5 days on a $10M revenue business and you free ~$137K of working capital. No capital raise. No new sales. Pure operational improvement.
How to actually reduce DSO
The DSO reduction playbook is well-established and works in any industry. (1) Invoice on delivery day: every day you delay invoicing is one day added to DSO. Automate where possible. (2) Offer 2/10 net 30: 2% discount for payment in 10 days, full amount in 30. Forgoing the discount costs the customer about 37% a year ((2 ÷ 98) × 365 ÷ 20), so most take it; you trade margin for cash. (3) Automated dunning: reminders at days 7, 21, 35 past due. Tone escalates; final reminder mentions credit hold or legal. (4) Credit hold at 45-60 days past due: stop new shipments until current balance is cleared. Sales hates this; CFO needs it. (5) Factor receivables: sell AR to a bank or factor at a discount to face value for immediate cash. Common in long-cycle B2B and export industries. (6) Card-on-file for small customers: auto-charge on net date eliminates collection entirely for sub-$5K customers. (7) Customer credit review annually: tighten terms for slow-paying accounts; cancel credit for chronic late-payers. Run the tool monthly and watch the days-over-terms figure fall.
The ASEAN DSO reality — wildly different by market
Collection behaviour differs sharply across ASEAN markets, reflecting payment culture, banking infrastructure and how enforceable B2B contracts are in practice. In Singapore, net-30 terms are generally honoured and receivables-backed bank financing is easy to arrange. In Malaysia, stated terms are often net 30 but large government-linked customers and agencies impose their own, much longer, payment cycles, so an SME serving them runs a DSO far above its invoice terms. Indonesia and the Philippines have slower payment cultures and longer nominal terms; Vietnamese exporters wait on letter-of-credit processing, ocean freight and customs before cash arrives; Thailand sits between. For SMEs operating across the region, receivables factoring through the major regional banks is increasingly the working-capital backbone — it converts a long DSO into immediate cash for a discount. Whatever the market, the fix is the same: compute DSO against your own stated terms, monthly, and act on the gap.
Five days of DSO on ten million is 137 thousand of cash
DSO = (AR ÷ Revenue) × Period. Days customers take to pay invoices. Standard B2B finance KPI.
Best-practice DSO = stated terms. This tool's verdict treats up to 15 days over as ordinary slippage and 30+ days over as a collection problem — editorial bands, not survey figures.
Cut DSO by 5 days on $10M revenue = ~$137K working capital freed. Highest-ROI finance activity.
Terms are what the customer pays to, not what you print. A supplier to a large government-linked buyer inherits that buyer's payment cycle whatever the invoice says.
2/10 net 30 = 2% off if paid in 10 days. Declining it costs the customer about 37% a year ((2 ÷ 98) × 365 ÷ 20) — most take it. Trade margin for cash.
Rising DSO is a leading indicator of collection problems; usually precedes bad-debt writeoffs by 1-2 quarters.
SaaS DSO is artificially low due to annual prepayment. Annual contracts collected upfront skew the metric.
Factoring: sell AR to a bank or factor at a discount to face value. Immediate cash; the discount is the cost, and the factor often takes over collection.
Dunning = reminder/collection sequence. Best practice: automated reminders at days 7, 21, 35 past due.
1-3 customers typically drive the average. Aging analysis (0-30 / 31-60 / 61-90 / 90+) reveals which.
Frequently Asked Questions
-
Industry-dependent, and the ordering is more reliable than any single number: card-paid retail/e-commerce collects in days; subscription software looks artificially low because annual contracts are prepaid; B2B services and industrial/manufacturing run to their invoice cycles; construction waits on progress certificates; government and healthcare payers are the slowest. The right benchmark is direct competitors, not an industry average — pull AR and revenue from three to five competitors' filings and compute their DSO with this tool.
-
Three common causes: (1) Customer behaviour: B2B customers routinely pay some days late; budget on the DSO you actually observe, not the terms you print. (2) Invoicing delay: every day you delay invoicing after delivery adds 1 day to DSO. Automate. (3) Large customer concentration: 1-2 major accounts paying slowly can drag the average way up. Pull an aging report (0-30, 31-60, 61-90, 90+) to identify the cluster. Usually 1-3 customers explain the bulk of the over-terms DSO.
-
Usually yes. 2/10 net 30 = 2% off if paid in 10 days, full at 30. To the customer, declining the discount is borrowing 98 for 20 days at a cost of 2 — about 37% a year ((2 ÷ 98) × 365 ÷ 20). Most take it, because borrowing at that rate to delay payment is irrational. Trade-off: you give up 2% of revenue for cash 20 days earlier. The math works if your weighted-average cost of capital (WACC) is below 37% — which it is for virtually all businesses. Discounts also reduce administrative collection burden, an underrated benefit.
-
When the factor's discount is less than the cost of alternative working-capital funding (bank line, equity dilution, supplier finance) AND you can't reduce DSO faster. Common scenarios: fast-growing exporters waiting on LC settlement; SMEs serving government-linked customers that pay on their own, longer cycle; seasonal businesses needing cash before peak revenue collects. Factoring also outsources collection — the factor chases the debtor.
-
New customers added during growth haven't been "trained" on your terms yet. They're also testing how strict you are. Fix: tighten new-customer onboarding — credit application, terms acknowledgment in writing, automated payment reminder from day 1. Don't let new-customer payment behaviour drift; once it does, retraining is very hard.
-
Together they form the Cash Conversion Cycle: CCC = DIO + DSO − DPO. Lowering DSO reduces CCC directly. If you can also raise DPO (longer to pay suppliers), the CCC improvement compounds. Practical implication: don't optimise DSO in isolation — look at CCC + DPO together. Sometimes lowering DSO by 5 days while DPO drops by 8 days actually worsens CCC. Compute all three and the cycle together before celebrating a DSO win.
-
Government and government-linked customers in ASEAN pay to their own cycle regardless of your stated terms — often a multiple of a net-30 invoice, and longest in Indonesia and the Philippines. Set your target to the cycle that customer actually runs, which your own aging report will show within a quarter. Survival strategies: factor receivables; charge a premium for GLC business (price in the working capital cost); negotiate progress payments (30% upfront, 30% mid, 40% completion) rather than back-loaded; have a non-GLC customer mix to balance cash flow. Don't treat 30-day DSO as realistic for GLC-heavy businesses — set expectations correctly.
-
They're synonyms. Some textbooks call it "receivables collection period" or "average collection period." All compute the same way: (AR ÷ Revenue) × period. "DSO" is the most common term in practice; CFOs + analysts use it interchangeably with the others.
-
No. All calculations run in your browser via JavaScript. Open DevTools → Network and confirm zero outbound requests with your data. Revenue, AR, and terms all stay on your device. Safe for confidential CFO reviews.
-
US: SEC EDGAR (10-K + 10-Q); CSC Working Capital Survey (annual industry benchmarks); REL/PwC Working Capital Survey (annual ranking). Singapore: SGX disclosures; CFO Institute Singapore + Deloitte ASEAN CFO Survey. Region: APQC working capital benchmarks (membership); S&P Capital IQ peer comparison (paid). For direct competitor analysis, just compute DSO from their disclosed balance sheet + income statement — public companies make this transparent.
Method & sources
How it computes
Days sales outstanding = accounts receivable ÷ revenue × days in the period (the receivables collection period). Days over terms = DSO − stated terms; cash locked = AR − (revenue ÷ period days × terms), floored at zero.
What this tool implements
- Period-end AR against the same period's revenue (not average AR); the period in days must match the revenue period
- Verdict bands — within 5 / 15 / 30 / 60 days over stated terms — are editorial thresholds and labelled as such
- Early-payment discount annualised as (discount ÷ (100 − discount)) × 365 ÷ days accelerated: 2/10 net 30 ≈ 37%
Sources
- Brealey RA, Myers SC, Allen F, Edmans A. Principles of Corporate Finance. 14th ed. New York: McGraw-Hill; 2022. Chapter 30, working capital management — terms of sale and collection policy.
- Fraser LM, Ormiston A. Understanding Financial Statements. 11th ed. Boston: Pearson; 2016. Chapter 5, average collection period.
What can make this go out of date
- none at runtime — all inputs are the user's own figures; the page quotes no industry benchmark
Pick up where you left off
Stored only in this browser — never sent to our servers.