Skip to main content
Metrics type: Key MetricsCategory: Ecommerce Platform
Average days from invoice issue to cash applied. Earliest warning of cash-flow trouble.

At a glance

Average days from Sales Invoice posting to cash applied (Customer Ledger Entry closed). The single most-watched cash-flow KPI in mid-market commerce. Rising DSO is the earliest warning of cash-flow trouble.

Calculation

Calculated automatically from your Microsoft Dynamics 365 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 electronics distributor on Business Central, $90M annual revenue, B2B Net-30 / Net-45 mix. Snapshot 14 Apr 26. Five things to notice:
  1. DSO at 53.5 days exceeds the alert threshold (45 days). Net-30 customers are paying ~23 days late on average. The card fires the sentiment alert. The Power BI Cash Flow content pack would not catch this directly because it tracks bank balance, not invoice-to-cash velocity.
  2. vsP is +4.3 days, just below the 5-day jump threshold. Trend is bad but not yet panic. The Controller has 1 to 2 weeks to act before it spikes through.
  3. AR concentration matters. Three Customers in the 60+ aging bucket carry $2.4M of the open AR. Resolving 2 of them would drop DSO back under 50. Pair this with AR Aging Buckets and Top B2B Accounts to identify them.
  4. Cash Sales correctly excluded. If this merchant included DTC prepaid web orders (which post to Cash Receipt Journal and clear instantly), DSO would compute artificially low because cash hits same-day. The card excludes Cash Receipts so the number reflects credit-customer behaviour only.
  5. Power BI parity: the standard “Receivables Aging Detail” Power BI report shows the same AR balance ($11.42M) and a static aging bucket. Computing DSO from Power BI requires manually pulling Credit Sales from a separate report. The card consolidates both in one tile, refreshed every 15 minutes via OData.

Sibling cards merchants should reference together

Reconciling against the vendor’s own dashboard

Where to look in Business Central: BC does not have a single “DSO” tile in the standard interface. Most Controllers compute it from two reports:
Reports > Finance > Customer > Aged Accounts Receivable (numerator) Sales by Customer report in Power BI (denominator: Credit Sales) Power BI > Cash Flow content pack > DSO calculation (third-party customisation)
A BC Functional Consultant can build a custom KPI in the Role Centre that displays DSO; most do not, which is why the metric is buried. Why our number may legitimately differ from a manual calculation: Cross-connector reconciliation: This card has no commerce-platform counterpart. Commerce platforms collect at order placement; DSO is meaningless on Shopify or BigCommerce DTC. For Stripe-routed B2B invoices (rare on BC tenants), the closest sibling is Stripe’s Average Days to Pay, but that compares invoice creation to charge capture, not posting to Customer Ledger Entry close.

Known limitations / merchant FAQs

What is a “good” DSO? Net-30 B2B target: 35 to 40 days. Net-60 target: 65 to 75. Net-90 target: 95 to 110. The healthy range is your terms + 5 to 15 days of slack. Anything beyond that signals collection or credit issues. Why is DSO rising even though Cash Collected is rising? Because revenue (denominator) is rising faster than cash (effectively), or AR balance (numerator) is rising disproportionately due to a few late-paying customers. Drill into AR Aging Buckets to see who. Should I include Cash Receipts? No. Cash Receipts via the Cash Receipt Journal clear instantly so they push DSO toward zero artificially. DSO is meant to measure credit-customer payment behaviour. Multi-currency, FX impact? Each component (AR, Credit Sales) is translated to Reporting Currency. The ratio is currency-neutral. FX shifts do not move DSO directly. What about subscription / recurring billing? Each billing cycle is treated as a credit sale. DSO captures whether subscribers pay on time. Healthy SaaS-adjacent businesses see DSO at terms + 0 to 5 days because subscriptions auto-charge. BC Cash Flow Forecast vs DSO: what is the difference? The Cash Flow Forecast (Search > “Cash Flow Forecast”) projects future cash position based on outstanding AR + AP + budget. It uses DSO implicitly to predict when AR will be collected. This card is the input; the Cash Flow Forecast is the output. Does this card include intercompany invoices? By default yes, but they typically clear quickly (intercompany payments process internally). To exclude, filter by Customer.Privacy Blocked = FALSE and exclude inter-company customer numbers. ASC 606 deferred revenue, does it bias DSO? Yes if you include it in Credit Sales. Deferred revenue not yet billed should not be in the denominator. The card uses Posted Sales Invoices (billed) only, so the bias is avoided. How does BC’s Aged AR report compare to NetSuite’s? Mathematically identical numerator. NetSuite’s Customer Aging report and BC’s Aged Accounts Receivable both sum open Customer Ledger Entry remaining amounts. The DSO formula and threshold conventions are identical. Vortex IQ’s card normalises both to the same definition so a multi-ERP merchant sees apples-to-apples DSO.

Tracked live in Vortex IQ Nerve Centre

Days Sales Outstanding (DSO) is one of hundreds of KPI pulses Vortex IQ tracks across Microsoft Dynamics 365 and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.