> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Days Sales Outstanding (DSO), Microsoft Dynamics 365

> Average days from invoice issue to cash applied. Earliest warning of cash-flow trouble. How to read it, why it matters, and how to act on it.

**Metrics type:** [Key Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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.

|                    |                                                                                                                                                                                                                                                                                      |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **What it counts** | Standard formula: `DSO = (AR Balance ÷ Total Credit Sales) × Number of Days`. Card uses 90-day rolling window. AR Balance = sum of open Customer Ledger Entry `Remaining Amount` for posted Sales Invoices. Credit Sales = posted Sales Invoices in window (excludes Cash Receipts). |
| **Tax treatment**  | Includes VAT in both numerator (AR) and denominator (Credit Sales). Net result equals tax-exclusive calculation.                                                                                                                                                                     |
| **AR balance**     | `Customer Ledger Entry` filtered to `Document Type = 'Invoice'`, `Open = TRUE`, `Remaining Amount`.                                                                                                                                                                                  |
| **Credit sales**   | Posted Sales Invoices only (`Document Type = 'Invoice'`). Cash Receipts via Cash Receipt Journal excluded.                                                                                                                                                                           |
| **DTC prepaid**    | Excluded from numerator and denominator.                                                                                                                                                                                                                                             |
| **Currency**       | Multi-Company: AR and Credit Sales translated to Reporting Currency at Currency Exchange Rate.                                                                                                                                                                                       |
| **Company 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 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.

| Component                                                         | Value                                  |
| ----------------------------------------------------------------- | -------------------------------------- |
| Open AR (excludes Cash Receipts)                                  | \$11,420,000                           |
| 90-day Credit Sales (Invoiced Revenue from posted Sales Invoices) | \$19,200,000                           |
| Days in window                                                    | 90                                     |
| **DSO (this card)**                                               | **(11.42M / 19.20M) × 90 = 53.5 days** |

|     | This period | Prior 30D | vsP       |
| --- | ----------- | --------- | --------- |
| DSO | 53.5        | 49.2      | +4.3 days |

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](/nerve-centre/kpi-cards/microsoft-dynamics/a-r-aging-detail) and [Top B2B Accounts](/nerve-centre/kpi-cards/microsoft-dynamics/msd-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

| Card                                                                                                  | Why pair it with DSO                                  |
| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [Invoice Aging Summary](/nerve-centre/kpi-cards/microsoft-dynamics/invoice-aging-summary)             | The bucket detail behind DSO.                         |
| [AR Aging Buckets](/nerve-centre/kpi-cards/microsoft-dynamics/a-r-aging-detail)                       | Per-customer detail.                                  |
| [Cash Collected](/nerve-centre/kpi-cards/microsoft-dynamics/cash-collected)                           | Receipts side. Strong cash-collected days reduce DSO. |
| [Overdue Invoice Value](/nerve-centre/kpi-cards/microsoft-dynamics/overdue-invoice-value)             | Pressure target. Overdue % of AR drives DSO.          |
| [Cash Application Rate](/nerve-centre/kpi-cards/microsoft-dynamics/cash-application-rate)             | Operations efficiency.                                |
| [Customer Credit Utilisation](/nerve-centre/kpi-cards/microsoft-dynamics/customer-credit-utilisation) | Predictive risk view.                                 |
| [Top B2B Accounts](/nerve-centre/kpi-cards/microsoft-dynamics/msd-top-b2b-accounts)                   | Concentration.                                        |

## 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:**

| 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 Receipts 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. |
| **Multi-Company scope**  | Either                   | Card defaults to all connected Companies.                                                 |
| **OData freshness**      | Card up to 15 min behind | Customer Ledger Entries appear via OData within 15 minutes of posting.                    |

**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](/nerve-centre/kpi-cards/microsoft-dynamics/a-r-aging-detail) 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
