The DSO Evolution report shows how your Days Sales Outstanding has moved over a date range you choose. Use it to see whether the time between invoicing and payment is shortening or stretching.
The file has two sheets. DSO Daily holds one row per date, charted over time. DSO Monthly reduces the same series to one row per calendar month with a three month rolling average. Both carry the receivables and the sales behind every reading, so any figure can be checked against your own reporting.
Where to find it
In Kolleno, go to Reports → Aging Analytics → DSO Evolution.
Pick a From and a To date, then generate the report. It downloads as an Excel file.
Not sure where reports live? See Viewing Reports from the Kolleno Navigation. You can also download or schedule this report, see Using Reports in Kolleno and Send and Schedule Reports for Multiple Users.
What DSO measures
Days Sales Outstanding is roughly how many days of sales are sitting unpaid. A DSO of 45 means your open book is worth about 45 days of invoicing.
Lower is better. A falling line means you are collecting faster. A rising line means cash is taking longer to arrive, either because collections have slowed or because payment terms have stretched.
How Kolleno calculates it
Each reading uses a rolling 90 day window ending on the reading date:
DSO = Adjusted AR ÷ Credit Sales × 90
Adjusted AR is the open receivable balance less any unapplied credit notes, as it stood on that date.
Credit Sales is everything invoiced in the 90 days up to that date, excluding invoices marked as disputed.
Readings are taken once a day, overnight, and stored. The report reads those stored readings rather than recalculating, so the figures stay stable and match what you saw on the day.
Every amount is shown in your company base currency. DSO itself is a ratio of two amounts in the same currency, so it is the same number whichever display currency you use.
Each reading looks back 90 days, so consecutive readings cover mostly the same invoices. A change in how fast you collect takes about three months to show up in full.
What is in the file
DSO Daily
One row for every date in the range, and a chart of the reading over time.
Column | What it means |
Date | Every date in the range, so a day with no reading stays a visible gap rather than closing the series up. |
DSO (days) | The reading for that date. |
Adjusted AR | Open receivables less unapplied credit notes, as they stood on the reading date. |
Credit Sales | Amount invoiced during the window, excluding disputes. |
Days in Period | The length of the window, in days. Credit Sales covers it and the ratio is scaled by it. |
Currency | Your company base currency. Every amount on the row is in it. |
DSO Monthly
One row per calendar month, for management accounts and board packs.
Column | What it means |
Month | Calendar month, as YYYY-MM. |
Reading Date | The day the month's figures were taken from: the latest date in that month carrying a usable reading. |
DSO (days) | The reading on that date. A single day, not an average. |
Month Average (days) | Mean of that month's daily readings. |
3-Month Average (days) | Mean of the month end readings for this month and the previous two. Use this to smooth out a month distorted by one large invoice or a late sync. |
Adjusted AR, Credit Sales, Days in Period, Currency | The inputs behind the reading, as on the daily sheet. |
Each sheet carries the same column notes to the right of the table, so the file explains itself if you send it on.
Blank cells and gaps in the line
A blank DSO cell is deliberate. It appears when:
Nothing was invoiced in the 90 day window, so there is no ratio to report. This is shown as blank rather than 0, because 0 would read as "collected instantly".
The reading is not credible. When a window has almost no sales in it, a single invoice can push the ratio into thousands of days. Kolleno leaves those blank rather than showing a figure it cannot stand behind.
No reading was recorded for that date.
In the charts a blank leaves a break in the line rather than a drop to zero, so a gap stays visible. The Adjusted AR and Credit Sales columns are still filled in wherever a reading was taken, so you can see what produced the blank.
A reading above 999 days is real but too large to render usefully, so it shows as 999+. The inputs on the same row give you the exact ratio if you need it.
Choosing a date range
A single request can cover up to 24 months. For a longer history, pull two reports and join them.
History starts when Kolleno started recording. A reading depends on the receivable balance as it stood on the day, and balances do not carry history, so past dates cannot be reconstructed after the fact. Dates before Kolleno began taking daily readings for your company come back blank. The series fills out from there.
Why the dashboard figure can differ
The DSO card on your dashboard and this report answer slightly different questions, so they will not always agree:
The dashboard card is calculated live over the date range selected on the dashboard, and only over the customers you have access to.
The report uses the stored nightly readings, each over a fixed 90 day window, across the whole company.
Both are correct. Use the report for trend and for anything you need to reproduce later, and the dashboard card for a quick read on the current position.



