Skip to content
Finance metrics

AR aging buckets explained: 30/60/90 and what to do with them

AR aging buckets explained: why 30/60/90, how to compute weighted average days overdue, and how to set a bad debt reserve from the bucket mix.

ERPray teamUpdated 6 min read
Short answer

AR aging buckets group open receivables by how long each invoice is past its due date — current, 1–30, 31–60, 61–90 and 90+ days. Weight each bucket's balance by its midpoint days to get weighted average days overdue: a $2,000,000 ledger with $760,000 overdue averages 38.1 days late.

Key takeaways

  • Buckets exist to convert one number (total AR) into a risk distribution. The mix is the message, not the total.
  • Weighted average days overdue compresses the whole distribution into one figure — but state whether the denominator is total AR or overdue AR, because the same ledger reads 14.5 or 38.1 days.
  • Bucket loss rates give a defensible reserve: a $2,000,000 ledger with a normal mix produces $57,800, or 2.89% of AR.
  • In that ledger the two oldest buckets are 7.7% of the balance and 65.9% of the reserve. That is where the collector's day should go.
  • Aging by invoice date instead of due date shifts every balance a full term to the right and makes current invoices look overdue.

Total accounts receivable is a single number that hides everything worth knowing. Two companies can both report $2,000,000 of AR: one where 90% is not yet due, and one where a third of it is more than 60 days late. The aging report exists to tell those two apart, and the buckets are how it does it.

AR aging bucket
A band of days used to group open receivables by how long each invoice has been outstanding past its due date. The conventional bands are current (not yet due), 1–30, 31–60, 61–90 and 90+ days past due, and each band carries a different probability of being collected.

Why 30, 60 and 90 days?

The bands are conventional rather than statistical. Thirty-day steps line up with monthly close, with net-30 terms, and with the natural rhythm of a customer's own payment run — an invoice that misses one AP cycle typically slips a whole month, not four days. They also map onto escalation stages: reminder, statement, credit hold, third party.

That convention breaks in two situations. If your terms are net 45 or net 60, a 30-day grid straddles the boundary between "not yet due" and "late" inside a single bucket. And if your escalation ladder fires at 7, 14 and 30 days, a first bucket 30 days wide hides the accounts you were about to escalate. In both cases, design buckets around your ladder — 1–15, 16–30, 31–60, 61–90, 90+ works well — and keep them stable so the trend stays readable.

A real aging distribution

Here is a $2,000,000 ledger for a distributor on net-30 terms, monthly credit sales of $1,300,000, aged by days past due date.

BucketBalance% of ARRead it as
Current (not yet due)$1,240,00062.0%Working as designed
1–30 days past due$420,00021.0%Mostly AP-cycle slippage
31–60 days past due$186,0009.3%Something is wrong: dispute, query or cash
61–90 days past due$94,0004.7%Escalate or reserve
90+ days past due$60,0003.0%Assume you will fight for it
Total$2,000,000100%
Overdue balance is $2,000,000 − $1,240,000 = $760,000, which is 38.0% of the ledger.

Before reading anything into the mix, check it against terms. With $1,300,000 of monthly credit sales, DSO here is ($2,000,000 ÷ $1,300,000) × 30 = 46.2 days on net-30 terms, so customers are running about 16 days beyond terms. The bucket mix now tells you where those 16 days live — and the answer is the 1–30 bucket, not the tail. Recover the DSO figure first; it frames everything below.

Weighted average days overdue

The mix is five numbers. Sometimes you need one. Weighted average days overdue collapses the distribution by assigning each bucket a representative day count — its midpoint — and weighting by balance.

Midpoints used: current = 0, 1–30 = 15, 31–60 = 45, 61–90 = 75, 90+ = 120

Weighted days =    420,000 × 15 =  6,300,000
                +  186,000 × 45 =  8,370,000
                +   94,000 × 75 =  7,050,000
                +   60,000 × 120 = 7,200,000
                = 28,920,000 dollar-days
Current contributes nothing, because it is not overdue at all

Now pick a denominator, and this is where teams talk past each other.

Across the whole ledger:  28,920,000 ÷ 2,000,000 = 14.5 days
Across overdue balances:  28,920,000 ÷   760,000 = 38.1 days
Same ledger. Same arithmetic. Two answers, 23.6 days apart.

Both are legitimate. The whole-ledger figure (14.5 days) answers how late is our receivables book on average, and it moves whenever sales volume moves. The overdue-only figure (38.1 days) answers when something is late, how late is it, and it isolates collection difficulty from sales volume. Use the overdue-only version to judge the collections function, publish the definition next to the number, and never switch mid-year.

Free calculator
AR aging calculator

Paste invoice amounts and days overdue. Returns the bucket mix, percentage split, weighted average days overdue on both denominators, and a suggested reserve.

Turning buckets into a bad debt reserve

The aging method for reserves applies an expected loss rate to each bucket. Loss rates should come from your own history — take the invoices that entered each bucket two or three years ago and measure what fraction was eventually written off. Failing that, start with rates like these and correct them annually.

BucketBalanceLoss rateReserveShare of reserve
Current$1,240,0000.5%$6,20010.7%
1–30$420,0001.0%$4,2007.3%
31–60$186,0005.0%$9,30016.1%
61–90$94,00015.0%$14,10024.4%
90+$60,00040.0%$24,00041.5%
Total$2,000,0002.89%$57,800100%
$57,800 ÷ $2,000,000 = 2.89% of AR. Rates are illustrative — derive yours from your own write-off history.

Two observations. The 61–90 and 90+ buckets together are $154,000 — 7.7% of the ledger — but they carry $38,100 of reserve, which is 65.9% of the total. That ratio is the argument for where a collector's Tuesday should go.

Second, compare against the flat percentage-of-sales method: 0.4% of $15,600,000 of annual credit sales gives $62,400, close to the $57,800 the aging method produced. They often land near each other in a stable year, which is why people default to the simpler one. The difference shows up when the mix deteriorates: shift $100,000 from current into 90+ and the aging reserve rises by $39,500 while the sales-based reserve does not move at all. The bad debt reserve calculator runs both methods side by side.

Working the report by value, not by date

The default aging report sorts oldest first. It feels rigorous and it is a bad use of your best collector. Sorting by age puts a $1,200 invoice that is 95 days old ahead of a $214,000 invoice that is 22 days overdue. Sort by amount, either overall or within each bucket.

AccountOverdue balanceDays overdueBucket
Customer A$214,000221–30
Customer B$96,0004131–60
Customer C$88,000121–30
Customer D$52,0006861–90
Customer E$41,00010490+
Top five$491,00064.6% of all overdue value
Five accounts out of several hundred hold nearly two-thirds of the overdue money.

Five calls cover $491,000 of the $760,000 overdue. Note that the largest single exposure sits in the youngest overdue bucket, which an age-sorted report would show on page four. Work value first, then age, then set a de minimis threshold — below perhaps $500, an automated reminder ladder is cheaper than a human, and the rest of the DSO lever list applies.

Five things that make an aging report lie

  • Aged by invoice date instead of due date. On net-30 terms this shifts every balance a full term to the right: an invoice 15 days overdue appears in the 31–60 bucket, and invoices that are not due at all appear in 1–30. Check which basis your report uses before you interpret a single number. Most ERPs offer both, and the default is not always the one you want.
  • Unapplied cash. A $40,000 receipt sitting unmatched leaves a $40,000 invoice ageing in 31–60 while the money is already in your bank. Unapplied cash over five days old belongs on a daily report, not in the month-end clean-up.
  • Unapplied credit memos. These net against the current bucket and quietly reduce the overdue percentage. If the aging total reconciles to the GL but the current bucket looks too big, look for credits with no invoice attached.
  • Disputes mixed in with slow payers. A queried invoice is not ageing, it is waiting. Flag disputes and report them as a separate line, because chasing them harder does nothing and the fix lives in billing.
  • Partial payments and invoice-level versus balance-level aging. A $100,000 invoice with $90,000 paid should age $10,000, not $100,000. Some reports age the whole invoice at its original date. That single behaviour can double your apparent tail.

What to watch weekly

The aging report is a monthly artefact, but three numbers derived from it are worth watching weekly, because they move before DSO does: overdue value by bucket, count of disputed invoices with their total value, and unapplied cash older than five days. Add collection effectiveness index monthly — it grades the collections team without punishing them for a sales spike, which the aging mix cannot do on its own.

Getting the buckets right in your ERP

Standard aging reports are usually the fastest thing to get and the hardest thing to trust: fixed buckets, aging basis buried in a preference, credit memos handled inconsistently, and multi-subsidiary consolidation that silently changes the answer. Rebuilding it properly means a saved search per bucket or a formula field per band, and it breaks the first time somebody adds a payment term. Running the AR aging report in NetSuite walks the specifics.

Ask "show our AR aged by due date in 15-day buckets, excluding disputed invoices, with the top 10 overdue customers by value" and you get the answer computed live from your own account, with the query shown underneath so you can verify the aging basis instead of hoping. Read-only by default.

Frequently asked questions

What are the standard AR aging buckets?

Current (not yet due), 1–30, 31–60, 61–90 and 90+ days past due. The 30-day steps match monthly close cycles, net-30 terms and customer AP runs. If your terms are net 45 or 60, or your escalation ladder fires earlier, narrower first buckets such as 1–15 and 16–30 are more useful.

How do you calculate weighted average days overdue?

Multiply each bucket's balance by a representative day count — usually the bucket midpoint, so 15, 45 and 75 — sum the results to get dollar-days, then divide by either total AR or overdue AR only. State which denominator you used: on a $2,000,000 ledger the same dollar-days give 14.5 days or 38.1 days.

Should AR be aged by invoice date or due date?

Due date, in almost every case. Aging by invoice date shifts every balance by the length of your payment terms, so on net 30 an invoice 15 days late appears in the 31–60 bucket and invoices not yet due appear as overdue. Aging by invoice date is only useful for measuring billing-to-cash cycle time.

What loss rates should I apply to each aging bucket?

Derive them from your own write-off history: take invoices that entered each bucket two or three years ago and measure what fraction was never collected. Rates rising steeply with age — a fraction of a percent on current, tens of percent on 90+ — are typical. Review the rates annually and whenever your customer mix changes.

Why does my aging report not tie to the general ledger?

The usual culprits are unapplied cash and unapplied credit memos, which sit in one report and not the other, plus foreign-currency revaluation, intercompany balances included in one view, and cut-off differences where the aging is run as-of a different date than the trial balance. Reconcile those four before assuming a system fault.

Is a high percentage of current AR always good?

Usually, but not always. A very high current percentage can also mean terms were extended to win orders, or that a large invoice was raised just before period end. Read the current percentage next to DSO and days beyond terms; a growing current bucket with a growing DSO means terms crept, not that collections improved.

Your ERP already knows. Start asking.

ERPray computes answers like these live from your own ERP account and shows the exact query behind every number. Early access is open for NetSuite teams — free plan at launch.