GenerateMyInvoice

Accounts Receivable Aging: How to Track Who Owes You What

An aging report sorts unpaid invoices by how late they are. Ten minutes a week with one is the cheapest cash-flow habit there is.

Aging report bar chart grouping unpaid invoices into 30, 60 and 90 day buckets

Accounts receivable (AR) is money customers owe you for invoices you've sent. An aging report groups those unpaid invoices by how long they've been outstanding, so you can see at a glance what's current, what's slipping and what's at risk.

What an aging report looks like

Customer Current 1–30 days late 31–60 61–90 90+ Total
Harbor & Pine Co. $2,400 $2,400
Greenline Builders $1,150 $860 $2,010
Riverside Dental $640 $640
Kline Media $1,900 $1,900
Oak & Iron Ltd $450 $450
Total $3,550 $860 $640 $1,900 $450 $7,400
% of total 48% 12% 9% 26% 6% 100%

"Current" means not yet due. Some reports age from the invoice date instead of the due date; either works if you're consistent. Aging from the due date is more useful for chasing.

How to read it

  • Most of your AR should be current. If more than a quarter is over 30 days late, collections need attention.
  • Look at customers, not just buckets. One customer appearing in several columns is a pattern.
  • The older a debt, the less likely you'll collect it. Invoices over 90 days late have a much lower chance of being paid in full, which is why acting at 30 days matters.
  • Watch the trend. Is the late share growing month to month?

Build one in a spreadsheet

If you don't use accounting software, a simple invoice log is enough. Columns:

Invoice no. | Customer | Invoice date | Due date | Amount | Paid date | Amount paid | Balance

Then add a column for days overdue:

=IF(Balance=0, "", MAX(0, TODAY() - DueDate))

and a bucket column:

=IF(Balance=0,"Paid",IF(DaysOverdue=0,"Current",IF(DaysOverdue<=30,"1-30",IF(DaysOverdue<=60,"31-60",IF(DaysOverdue<=90,"61-90","90+")))))

A pivot table by customer and bucket gives you the report above.

Turning the report into action

A weekly routine:

Bucket Action
Current, due this week Optional friendly heads-up
1–30 days Reminder emails; see templates
31–60 days Phone call, pause further work, statement
61–90 days Final notice, late fees if agreed
90+ days Collections, small claims or write-off decision

Useful numbers

Days sales outstanding (DSO) estimates how long, on average, it takes to get paid:

DSO = (Accounts receivable ÷ Credit sales in the period) × Days in the period

If you have $7,400 outstanding and invoiced $12,000 over the last 30 days: (7,400 ÷ 12,000) × 30 = 18.5 days. Compare it with your payment terms. A DSO well above your terms means customers are paying late.

Beyond collections

An aging report also tells you:

  • Which customers to require deposits from next time
  • Whether to shorten terms for certain clients
  • What to provide for as bad debts at year end
  • Whether invoice financing would help, and which invoices lenders would accept (they generally avoid anything over 90 days)

Log each invoice as you create it, and your aging report practically builds itself.

Open the invoice generator

Send statements too

A monthly statement of account shows each customer their own aging. It's a neutral way to prompt payment without chasing invoice by invoice.

Hafiz

Hafiz runs GenerateMyInvoice and writes its guides on invoicing, payment terms and getting paid on time.

This guide is general information. For decisions about tax or legal action, check with an accountant or lawyer where you work.