An accounts receivable aging report is a list of your unpaid customer invoices, grouped by how long each one has been outstanding. It answers three questions in one table: who owes you money, how much, and how overdue it is. Every accounting system generates one, and almost every finance team misreads at least one thing on it — usually the buckets, which can be measured from two different dates and mean different things depending on which you picked.
What an accounts receivable aging report is
The report has one row per customer (or per invoice, if you run it in detail) and one column per age band. Each cell holds the amount outstanding in that band. A total column reconciles to the accounts receivable balance on your balance sheet, which is the first check worth doing: if the aging report and the balance sheet disagree, the report is wrong, not the ledger.
It is a point-in-time document. Run it on the last day of the month and it describes that day. Run it a week later and every invoice has moved a week further right. This is why comparing two aging reports from different dates tells you more than reading one closely — the shape of the drift is the signal.
Three jobs it does, in the order most teams actually use it:
- Prioritising collections. The oldest and largest balances are where the effort goes, and the report ranks them for you.
- Forecasting cash. Money in the current bucket will probably arrive. Money past 90 days probably will not, and forecasting as though it will is how a cash-flow plan quietly becomes fiction.
- Estimating what you will not collect. Auditors expect an allowance for doubtful accounts, and the aging schedule is the standard basis for calculating it.
How the aging buckets work
The conventional bands are 30 days wide:
| Bucket | Meaning | | --- | --- | | Current | Not yet due | | 1–30 days | Just past due | | 31–60 days | Chasing required | | 61–90 days | Escalation | | 90+ days | Collection risk |
The part that trips people up: buckets can be measured from the invoice date or from the due date, and the two produce different reports from identical data.
Measuring from the invoice date tells you how long ago you billed. On 30-day terms, an invoice issued 45 days ago sits in the 31–60 bucket even though it is only 15 days late. Measuring from the due date tells you how overdue the money is — the same invoice sits in 1–30. Most accounting systems default to invoice date, most collections conversations assume due date, and nobody says which they mean.
Neither is wrong. Due-date aging is more useful for collections, because it maps to lateness rather than to elapsed time. Invoice-date aging is more useful when your terms vary by customer, because it compares like with like. What matters is that the report says which basis it used, and that you do not switch between them month to month.
Terms complicate this further. A customer on 60-day terms and a customer on 14-day terms both appear in "31–60 days" while one is comfortably within terms and the other is badly overdue. If your terms vary, a days-past-due column beside the bucket is worth more than the bucket.
How to read one
Read across, not down. A single row that runs 0 / 0 / 0 / 8,400 is a different problem from a row that runs 8,400 / 0 / 0 / 0, and a total column hides both.
Concentration matters more than the total. Ten thousand owed by one customer at 90+ days is a credit decision. The same amount spread across forty customers at 1–30 days is a process problem — probably your invoicing or your terms, not your customers.
Look for balances that stop moving. An amount that has sat in 90+ for three consecutive reports is not slow, it is disputed or uncollectible, and treating it as slow keeps it on the books earning nothing. Aging reports are good at showing this precisely because they are dated snapshots.
Small persistent balances are usually errors, not debts. A £14.80 residual that will not clear is normally a short payment, a credit note that was never applied, or a bank fee deducted in transit. These are worth clearing because they cost more in attention than in money.
Check the report against the ledger. The aging total must equal the AR control account. When it does not, the usual causes are unapplied credits, payments posted to the wrong customer, or invoices raised after the report date.
Building one when your invoices are PDFs
If you invoice out of accounting software, the report already exists — run it and skip this section.
The awkward case is the common one: invoices are issued from one system, or several, and the record of what was billed lives as PDFs in a folder and an email thread. Building an aging report then means getting four fields into a spreadsheet for every invoice — customer, invoice date, due date, and amount outstanding — and letting the sheet do the bucketing.
Everything else on an invoice is irrelevant to aging. That is worth saying because it makes the job much smaller than it looks: you are not digitising invoices, you are extracting four values.
Three ways to get there:
Type them. Fine for twenty invoices a month. The failure mode is not speed, it is that nobody does it in the weeks when it is busy, and the report is only useful if it is current.
Export from wherever they were raised. Always try this first. A CSV from a billing system beats any amount of parsing, and the same logic applies here as to invoice data extraction generally — a structured source beats reading the document.
Parse the PDFs. Where no export exists, an invoice parser reads the fields off each document and returns them as rows. For aging specifically this is a narrow job — four header fields, no line items — which is the easy half of invoice extraction, so accuracy is high and review is quick. ParseForMe returns each field with a confidence score, so you check the handful that are flagged rather than re-reading every invoice, and exports the result into the accounts receivable template, Excel or Google Sheets.
Once the four fields are in a sheet, the buckets are one formula. Subtract the due date from today's date, then band the result. The accounts receivable template already carries invoice number, customer, issue date, due date, total, amount paid and balance due as columns, which is everything the calculation needs.
If you run the payables side too, the accounts payable aging sheet is the mirror image — same buckets, money going the other way — and reading them side by side is how you see whether a cash squeeze is yours or your customers'.
What it feeds: DSO and the allowance
Two numbers come off the aging report, and both are worth more than the report itself.
Days sales outstanding measures how long it takes to get paid on average:
DSO = (Accounts receivable ÷ credit sales for the period) × days in the period
A DSO of 45 on 30-day terms means you are, on average, being paid a fortnight late. The absolute number matters less than its direction over six months, and less than how it compares to your terms. DSO rising while sales are flat means collections are slipping. DSO rising while sales grow quickly can simply mean recent invoices dominate the balance.
The allowance for doubtful accounts is where aging is used in the accounts proper. The aging-schedule method applies a different expected-loss rate to each bucket — low for current, higher for each older band — and sums the result into the allowance.
The rates are not standard figures to be looked up. They come from your own collection history: of the balances that reached 90+ days over the last few years, what proportion was eventually written off? Using someone else's percentages produces a number that is precise and meaningless. If you do not have the history yet, say so and use a simple, disclosed basis rather than borrowed rates.
This is also the point of running the report monthly rather than when someone asks for it. The allowance calculation needs a series, and collections work needs to see what moved. One aging report is a snapshot; twelve of them are a trend, and the trend is what actually tells you whether your receivables are healthy.