DSO Calculator and AR Aging Report
Days sales outstanding three ways, so a strong sales month cannot make collections look worse than they are, and an AR aging report built from your open invoice list. See which customers and which buckets are moving the number.
Calculate DSO
DSO is the number your CFO asks about and the number that moves for the wrong reasons. Calculate it the way the board pack does, then the way that is not fooled by a big sales month, then see the aging underneath it.
Your receivables
Open invoices
One row per open invoice, from your AR system.
brightwater-open-invoices-2026-09-30.csv · 22 invoices. QuickBooks Online: Reports, Open Invoices. Xero: Aged Receivables Detail. NetSuite: A/R Aging Detail.
Columns
Matched by its header. Castellan Foods Corp. · Halverson Machine Works · Delacroix Automation
Matched by its header. BW-30412 · BW-30418 · BW-30431
Matched by its header. 2026-09-02 · 2026-09-04 · 2026-09-09
Optional with terms mapped.
Matched by its header. Net 30 · Net 30 · Net 30
Matched by its header. 186400.00 · 142750.00 · 98300.00
How to age
The report says which basis it used, because an aging without one cannot be compared.
Blank uses the latest invoice date in the file, never today.
Days past due is what collections works from. Some lenders and auditors ask for days since invoice.
Sales, for DSO
Credit sales, not total revenue: a cash sale never sat in receivables. Oldest month first.
Optional. Switches on the collection effectiveness index.
Runs entirely in your browser. Nothing you enter is sent to us or stored.
Your DSO and aging
Updates as you type
Countback DSO
44.4 days
Simple DSO 47.1 days. Best possible DSO 28.3 days, so 18.7 days are delinquency.
Receivables
$1,960,000.00
Ten days off DSO releases $416,304.35
- Simple DSO
- 47.1 days
- Best possible DSO
- 28.3 days
- Average days delinquent
- 18.7 days
- Collection effectiveness index
- 82.6%
Aging by bucket
| Bucket | Invoices | Amount | Share |
|---|---|---|---|
| Current | 9 | $1,180,000.00 | 60.2% |
| 1 to 30 days | 5 | $470,000.00 | 24.0% |
| 31 to 60 days | 3 | $182,000.00 | 9.3% |
| 61 to 90 days | 2 | $71,000.00 | 3.6% |
| Over 90 days | 3 | $57,000.00 | 2.9% |
| Total | 22 | $1,960,000.00 | 100.0% |
By customer, oldest balance first
| Customer | Current | 1 to 30 days | 31 to 60 days | 61 to 90 days | Over 90 days | Total |
|---|---|---|---|---|---|---|
| Ridgeline Fabrication | $52,400.00 | $52,400.00 | ||||
| Northgate Utilities | $74,950.00 | $72,600.00 | $58,500.00 | $4,600.00 | $210,650.00 | |
| Kestrel Industrial Holdings | $211,600.00 | $138,200.00 | $349,800.00 | |||
| Castellan Foods Corp. | $349,600.00 | $349,600.00 | ||||
| Sutter Plastics | $121,900.00 | $84,300.00 | $58,700.00 | $264,900.00 | ||
| Pell Valley Hospital | $88,400.00 | $78,500.00 | $64,800.00 | $29,700.00 | $261,400.00 | |
| Delacroix Automation | $98,300.00 | $96,400.00 | $41,300.00 | $236,000.00 | ||
| Halverson Machine Works | $235,250.00 | $235,250.00 |
Collection worklist
Every overdue invoice, ranked by amount times days past due. The first ten are here; the export has all 13.
| Customer | Invoice | Due | Days late | Amount |
|---|---|---|---|---|
| Ridgeline Fabrication | BW-29340 | 2026-05-14 | 139 | $31,900.00 |
| Pell Valley Hospital | BW-29944 | 2026-08-07 | 54 | $64,800.00 |
| Kestrel Industrial Holdings | BW-30177 | 2026-09-05 | 25 | $138,200.00 |
| Delacroix Automation | BW-29712 | 2026-07-10 | 82 | $41,300.00 |
| Sutter Plastics | BW-29961 | 2026-08-14 | 47 | $58,700.00 |
| Ridgeline Fabrication | BW-29402 | 2026-06-05 | 117 | $20,500.00 |
| Northgate Utilities | BW-29978 | 2026-08-23 | 38 | $58,500.00 |
| Pell Valley Hospital | BW-29738 | 2026-07-22 | 70 | $29,700.00 |
| Delacroix Automation | BW-30189 | 2026-09-11 | 19 | $96,400.00 |
| Sutter Plastics | BW-30203 | 2026-09-18 | 12 | $84,300.00 |
What to look at
- ActRidgeline Fabrication: $52,400.00 of the $57,000.00 in the oldest bucketWhen one account is most of the oldest bucket, it is a credit decision, not a collections process problem.
- Runs entirely in your browser. Your invoice list is never uploaded and we never see a customer name or an amount.
- Aged as of 2026-09-30, on days past due.
Related reading
Why receivables age the way they do, and what it takes to keep the aging current without exporting it every week.
- Glossary
Accounts Receivable Aging
An accounts receivable aging groups open customer balances by how long they have been outstanding, usually in 30-day buckets. It drives collections, supports the allowance for credit losses, and must tie to the receivable control account in the general ledger.
- Glossary
Accrual Accounting
Accrual accounting recognizes revenue when it is earned and expenses when they are incurred, regardless of when cash moves. It is required under GAAP, and the tax rules that govern it diverge from the book rules in ways that create book-tax differences.
- Integration
QuickBooks
QuickBooks is a cloud-based accounting platform that enables businesses to manage finances, track income and expenses, and gain real-time insights into their financial performance.
- Use case
Accounts Receivable Automation
- Free tool
B2B Invoice Generator
- Free tool
Working Capital Calculator
- Free tool
13-Week Cash Flow Forecast
How DSO is calculated, and why three ways
Simple DSO
Simple DSO = Ending receivables / Credit sales for the period x Days in the period
The standard measure, and the one in most board packs. Its weakness is the denominator. It divides the receivables balance by average daily sales across the whole period, but the receivables balance is made almost entirely of the most recent month's sales. When the last month was strong, receivables are high against an average that includes weaker months, and DSO rises even though nobody paid later. When the last month was weak, DSO falls and hides a real deterioration.
A company with seasonal or growing sales can report DSO up five days in a quarter when collections improved.
Countback DSO
Countback asks how many days of your most recent sales the receivables balance represents. Start with the ending balance. Take away the last month's sales, and count that month's days. If balance is left, take away the month before. When the remaining balance is smaller than a month's sales, count the fraction of that month.
Remaining = Ending receivables
For each month, most recent first:
if Remaining >= that month's sales: Remaining -= sales; DSO += days in month
else: DSO += Remaining / that month's sales x days in month; stop
Because it measures against the sales that actually produced the balance, a strong final month does not inflate it. It is the better measure to manage collections by, and the simple measure is the better one to compare with published figures. Report both and say which is which.
Best possible DSO, and average days delinquent
Best possible DSO = Current (not yet due) receivables / Credit sales x Days
Average days delinquent = Simple DSO - Best possible DSO
Best possible DSO is what your terms alone would produce if every customer paid on the due date. The gap between it and actual DSO is the part collections can do something about. If DSO is 47 and best possible is 28, nineteen days are customers paying late. If DSO is 47 and best possible is 45, collections are fine and the terms you are giving are the problem, which is a commercial conversation, not a collections one.
Collection effectiveness index
CEI = (Opening receivables + Credit sales - Ending total receivables)
/ (Opening receivables + Credit sales - Ending current receivables) x 100
Of everything that was collectable during the period, the share you actually collected. It is not affected by sales volume, which makes it the cleanest measure of collections performance over time. Above 80 percent is generally considered effective for business-to-business terms, but the trend in your own number matters more than any benchmark.
Ageing on due date or invoice date
Days past due is what collections works from: an invoice on Net 60 terms that is 45 days old is not late. Days since invoice is what some lenders use for a borrowing base and what some auditors ask for, because it does not depend on terms the company set itself. The same invoices land in different buckets on the two bases, so an aging is only comparable to another aging taken on the same basis. The tool prints which one it used.
Why the aging and the ledger disagree
The total of an aging report should equal the receivables control account in the general ledger on the same date. When it does not, the usual causes are unapplied cash posted to the control account but not to an invoice, credit memos not applied, invoices posted directly to the ledger without going through the AR module, and timing: the aging and the trial balance taken on different days. A difference that is not explained is the start of a reconciliation, not a rounding error.
Worked example
The sample the tool loads. Invented.
Brightwater Industrial Supply sells maintenance parts to manufacturers on Net 30 terms. The controller reports DSO to the CFO each quarter, and the CFO's question this quarter is why DSO went up when the collections team says September was their best month.
Their quarter:
| Month | Credit sales | Days |
|---|---|---|
| July | $1,240,000 | 31 |
| August | $1,180,000 | 31 |
| September | $1,410,000 | 30 |
| Quarter | $3,830,000 | 92 |
Receivables at September 30: $1,960,000, of which $1,180,000 is not yet due. Receivables at July 1: $1,820,000.
The three DSO figures:
Simple DSO = 1,960,000 / 3,830,000 x 92 = 47.1 days
Countback DSO = 30 (all of September's 1,410,000)
+ 550,000 / 1,180,000 x 31 of August = 44.4 days
Best possible = 1,180,000 / 3,830,000 x 92 = 28.3 days
Average days delinquent = 47.1 - 28.3 = 18.7 days
The answer to the CFO. September was the strongest sales month of the quarter, which is exactly what inflates simple DSO: the receivables balance is mostly September's invoices, measured against an average that includes July and August. Countback, which measures the balance against the sales that produced it, is 2.6 days lower. Collections did not get worse. Sales got better.
What is still worth a conversation. Average days delinquent is 18.7 days on Net 30 terms, so a large share of DSO is customers paying late, not terms. The collection effectiveness index is 82.6 percent:
CEI = (1,820,000 + 3,830,000 - 1,960,000) / (1,820,000 + 3,830,000 - 1,180,000) = 82.6%
The aging:
| Bucket | Amount | Share |
|---|---|---|
| Current | $1,180,000 | 60.2% |
| 1 to 30 days past due | $470,000 | 24.0% |
| 31 to 60 | $182,000 | 9.3% |
| 61 to 90 | $71,000 | 3.6% |
| Over 90 | $57,000 | 2.9% |
| Total | $1,960,000 |
The over-90 bucket is small, and by customer it is almost all one account. That is a credit decision, not a collections process problem. The 1 to 30 bucket is where most of the late paying sits, and where a reminder sent on day three instead of day twenty does the most.
What faster collection is worth. At this quarter's average of $41,630 of sales a day, ten days off DSO is $416,304 of cash released, once.
What this does not do
This tool calculates from the invoice list and the sales you enter. It does not connect to your accounting system, apply cash, reconcile the aging to your ledger, or contact anyone. It cannot tell a disputed invoice from an unpaid one, or know about a payment that has arrived but not been applied. DSO here uses the figures you give it: credit sales, not total revenue, and the period you choose. It is not a credit risk assessment of any customer.
Questions
It depends on your terms more than on any benchmark. A company on Net 60 terms will have a higher DSO than one on Net 15 with the same collections discipline. Compare DSO to best possible DSO, which is what your terms alone would produce: the gap between them, average days delinquent, is the part collections controls.
Usually because sales in the last month of the period were strong. Simple DSO divides receivables by average daily sales across the period, and a strong final month raises receivables faster than the average. Countback DSO measures receivables against the sales that produced them and is not affected. If the two disagree, that is the explanation.
A way of calculating DSO that counts back through recent months of sales until the receivables balance is used up, and reports how many days that covered. It is the better measure to manage by when sales are seasonal or growing.
By due date for collections work, because an invoice that is not yet due is not late. By invoice date when a lender or an auditor asks for it. The report always says which basis it used, because the two are not comparable.
Usually unapplied cash, unapplied credit memos, invoices posted straight to the ledger without going through receivables, or the two being taken on different days. The aging total should equal the receivables control account on the same date, and a difference is worth reconciling rather than ignoring.
The share of everything that was collectable in the period that you actually collected. It ignores sales volume, which makes it a cleaner measure of collections performance over time than DSO.
No. It is read in your browser, in the page you are looking at. Nothing is sent to us and nothing is kept when you close the tab.
Yes. Enter them as negative amounts. They reduce the bucket they fall in, and they are listed on their own, because an open credit is either money you owe a customer or cash nobody has applied yet.
An aging is a
photograph. Collections is the film.
Cash applied line by line as it arrives, the aging tied to the ledger, and reminders drafted for your team to approve. Your ERP stays the system of record, and no agent emails a customer on its own.