Average days from invoice issue to cash applied. Rising DSO is the earliest warning of cash-flow trouble.
At a glance
Average days from Invoice issue to cash applied. The single most-watched cash-flow KPI in mid-market commerce. Rising DSO is the earliest warning of cash-flow trouble.
| What it counts | Standard formula: DSO = (AR Balance ÷ Total Credit Sales) × Number of Days. Card uses 90-day rolling window. NetSuite’s variant follows the same convention. |
| Tax treatment | Includes tax in both numerator (AR) and denominator (Credit Sales). Net result is the same as a tax-exclusive calculation. |
| AR balance | Open Invoice Amount Due, gross of Credit Memos. |
| Credit sales | Invoiced Revenue (Cash Sales excluded; only credit transactions count, otherwise DSO is artificially low). |
| Cash Sales / DTC prepaid | Excluded from both numerator and denominator. |
| Currency | OneWorld: reporting currency. |
| Subsidiary scope | Respects dashboard filter. |
| Time window | 30D vsP (rolling DSO computed on 90-day denominator) |
| Alert trigger | >45 days OR up >5 vsP, sentiment dso |
| Roles | owner, finance |
Calculation
Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US wholesale apparel distributor on NetSuite. Snapshot 14 Apr 26.| Component | Value |
|---|---|
| Open AR (excludes Cash Sales) | $11,920,000 |
| 90-day Credit Sales (Invoiced Revenue) | $19,800,000 |
| Days in window | 90 |
| DSO (this card) | (11.92M ÷ 19.80M) × 90 = 54.2 days |
| This period | Prior 30D | vsP | |
|---|---|---|---|
| DSO | 54.2 | 49.8 | +4.4 days |
- DSO at 54.2 days exceeds the alert threshold (45 days). Net-30 customers are paying ~24 days late on average. The card fires the sentiment alert.
- vsP is +4.4 days, just below the 5-day jump threshold. Trend is bad but not yet at panic. The Controller has 1-2 weeks to act before it spikes through.
- The breakdown helps diagnose. Three accounts in the 60+ aging bucket are pulling DSO up disproportionately. Resolving 2 of them would drop DSO back under 50.
- Net-30 textbook DSO is 35-40 days for healthy B2B (terms + 5-10 days slack). 54.2 days means the average is now Net-30 + 24 days late. Compare to last year’s average; if 12 months ago it was 42, the trend is structural.
- Cash Sales correctly excluded. If this merchant included DTC prepaid web orders (which clear instantly), DSO would compute artificially low because cash hits same-day. The card excludes them so the number reflects credit-customer behaviour only.
Sibling cards merchants should reference together
| Card | Why pair it with DSO |
|---|---|
| Invoice Aging Summary | The bucket detail behind DSO. |
| AR Aging Buckets | Per-customer detail. |
| Cash Collected | Receipts side. Strong cash-collected days reduce DSO. |
| Overdue Invoices Value | Pressure target. Overdue % of AR drives DSO. |
| Cash Application Rate | Operations efficiency. |
| Customer Credit Utilisation | Predictive risk view. |
| Top B2B Accounts | Concentration. |
Reconciling against the vendor’s own dashboard
Where to look in NetSuite: NetSuite does not have a standard DSO report. Most accounts build a saved search with the formula. The closest native equivalent is:
Reports → Receivables → Days Sales Outstanding (custom KPI tile in some workspace setups)
Saved search: (SUM AR) / (SUM Credit Sales × 90) × 90
Why our number may legitimately differ from a manual calculation:
| Reason | Direction | Why |
|---|---|---|
| Window selection | Either | Some Controllers use 90-day rolling, some use trailing 12-month. Card defaults to 90-day. |
| Cash Sales inclusion | Card excludes | Including Cash Sales artificially deflates DSO because they clear instantly. |
| Tax inclusion | Either | Some calculations use net-of-tax in both; others use gross. Card uses gross consistently. |
| Subsidiary scope | Either | Card defaults to all subs. |