Aging Report Explained: How SaaS Finance Teams Use AR Aging
Published on April 13, 2026 · Jules, Founder of NoNoiseMetrics · 8min read
Updated on April 15, 2026
An aging report is a snapshot of all outstanding invoices organized by how long they have been unpaid. It groups receivables into buckets, typically 0–30 days, 31–60 days, 61–90 days, and 90+ days, so you can see at a glance which customers are current, which are late, and which are becoming a collection problem. For SaaS companies with enterprise customers, the aging report is the primary tool for managing accounts receivable and protecting cash flow. This guide explains the structure, how to read it, what actions to take at each bucket, and how it fits into the SaaS billing cycle.
Aging Report (also called AR Aging Schedule) = a categorized list of outstanding customer invoices sorted by the number of days they have been unpaid. Used to prioritize collection efforts and identify bad debt risk.
Aging Report Explained: How SaaS Finance Teams Use AR Aging
Why the Aging Report Matters
Accounts receivable turnover ratio tells you the overall speed of collection. The aging report tells you what is actually happening at the invoice level. You can have a healthy average DSO and still have three large customers 90 days overdue, the aggregate masks the problem. The aging report surfaces it.
For SaaS companies running invoice-based billing (enterprise, agency, government accounts), the aging report is typically a weekly review item. For self-serve SaaS with card-on-file billing, it is less critical but still useful for tracking failed payment recovery.
See accounts receivable turnover ratio and accounts receivable explained for the foundational concepts behind what the aging report is measuring.
Standard Aging Report Structure
A standard aging report lists every open invoice with columns for each time bucket:
| Customer | Invoice # | Invoice Date | Invoice Amount | Current (0–30) | 31–60 Days | 61–90 Days | 90+ Days |
|---|---|---|---|---|---|---|---|
| Acme Corp | INV-1042 | Mar 1 | €8,000 | , | , | €8,000 | , |
| Beta SaaS | INV-1051 | Apr 1 | €3,500 | €3,500 | , | , | , |
| Gamma Ltd | INV-0998 | Dec 15 | €12,000 | , | , | , | €12,000 |
| Delta Inc | INV-1039 | Mar 15 | €5,000 | , | €5,000 | , | , |
| Totals | €28,500 | €3,500 | €5,000 | €8,000 | €12,000 |
Reading the table:
- Beta SaaS is current, no action needed
- Delta Inc is 31–60 days, send a reminder
- Acme Corp is 61–90 days, escalate to account manager
- Gamma Ltd is 90+ days, consider formal collection or bad debt write-off
The Four Standard Buckets Explained
0–30 Days (Current)
Invoices within the stated payment terms. If your standard terms are net-30, everything in this bucket is on time. No collection action needed. Monitor to ensure payment arrives before moving to the next bucket.
SaaS context: For monthly recurring invoices, the 0–30 bucket should contain the current month’s invoices. If it does not, you have invoicing delays.
31–60 Days (First Late)
Invoices between 1 and 30 days past due (assuming net-30 terms). At this stage, many late payments are administrative, the customer lost the invoice, it is stuck in an approval queue, or the billing contact changed.
Action: Send a polite reminder email. Reference the invoice number and amount. Provide a direct payment link. Most first-late invoices resolve within this stage with minimal friction.
61–90 Days (Moderately Overdue)
Invoices 31–60 days past due. This is where you need direct personal outreach, not automated reminders. A call or personal email from a founder or account manager resolves most invoices in this bucket.
Action: Personal outreach. Ask whether there is an issue with the invoice (dispute, wrong billing contact, PO number required). Identify the blocker and remove it. Consider offering a payment plan for genuine cash flow issues.
90+ Days (Seriously Overdue)
Invoices more than 60 days past due. At this stage, you have a collection problem. Options:
- Escalate to senior relationship owner (founder, VP Sales)
- Engage a collections agency (for larger balances)
- Initiate formal demand letter
- Write off as bad debt if uncollectable
SaaS-specific consideration: Before writing off, suspend access. Many SaaS companies continue providing service during collection efforts out of relationship preservation. Suspending access creates immediate urgency without requiring legal action.
Worked Example: Monthly Aging Report
Company profile: B2B SaaS, €120,000 ARR from 12 enterprise customers, net-30 invoice terms, running the aging report on April 30.
| Customer | Outstanding | 0–30 | 31–60 | 61–90 | 90+ |
|---|---|---|---|---|---|
| Alpha Tech | €10,000 | €10,000 | , | , | , |
| Beta Corp | €10,000 | €10,000 | , | , | , |
| Gamma Inc | €10,000 | , | €10,000 | , | , |
| Delta Ltd | €10,000 | , | €10,000 | , | , |
| Epsilon SA | €10,000 | , | , | €10,000 | , |
| Zeta GmbH | €10,000 | , | , | , | €10,000 |
| 6 current customers | €60,000 | €60,000 | , | , | , |
| Total | €120,000 | €80,000 | €20,000 | €10,000 | €10,000 |
Analysis:
- 67% current, acceptable
- Gamma and Delta (31–60 days): send automated reminders immediately
- Epsilon (61–90 days): personal call this week
- Zeta (90+): escalate, consider suspension of service
Bad debt risk assessment:
The €10,000 in 90+ days bucket carries meaningful collection risk. If historical write-off rate is 5% of total AR, the allowance should be €6,000. The €10,000 in 90+ days alone exceeds this, flag it for potential write-off at Q2 close.
SaaS-Specific Considerations
Failed Stripe Payments
For card-on-file SaaS, “aging” is measured differently. Stripe marks failed subscription invoices as past due and retries automatically (Smart Retries). Your aging equivalent is the invoice status:
- Pending retry = equivalent to 0–7 days
- Failed once = equivalent to 8–15 days
- Marked uncollectable = equivalent to 90+ days (write off)
Monitor your Stripe dashboard for invoices in “past due” status. These represent revenue you have recognized (MRR) but not yet collected in cash. If they persist, your MRR is overstated relative to actual cash.
Annual Prepaid Customers
Annual prepaid customers create no AR, they paid upfront. But if they fail to renew, the renewal cycle creates a new AR event. Track renewal invoices in your aging report just like any other enterprise invoice.
Churned Customers with Outstanding Invoices
When a customer churns, any outstanding invoices remain collectable. Do not write off AR simply because a customer canceled. Continue collection efforts, you delivered the service, you are owed the money.
Aging Report vs AR Turnover Ratio
| Aging Report | AR Turnover Ratio | |
|---|---|---|
| What it shows | Invoice-level breakdown by age | Aggregate collection speed |
| Frequency | Weekly or monthly | Monthly or quarterly |
| Use case | Prioritize collection actions | Benchmark collection efficiency |
| Action-oriented | Yes, triggers specific follow-ups | No, summary metric only |
| Spotting outliers | Yes, shows individual problem accounts | No, hides in average |
Use the aging report for operations. Use the AR turnover ratio for reporting and benchmarking.
For the broader AR management context, see the order to cash process for SaaS and quote to cash process for SaaS.
Track from Stripe. NoNoiseMetrics flags overdue invoices and calculates your effective DSO automatically. Try free
A Simple Aging Report Template
For SaaS companies building their first aging schedule, this structure works as a spreadsheet:
ACCOUNTS RECEIVABLE AGING REPORT
As of: [Date]
Customer Name | Invoice # | Invoice Date | Due Date | Total | 0-30 | 31-60 | 61-90 | 90+
-------------|-----------|--------------|----------|-------|------|-------|-------|----
[Customer] | INV-XXXX | MM/DD/YY | MM/DD/YY | €X,XXX| €X,XXX | — | — | —
TOTALS | | | | €XX,XXX | €XX,XXX | €XX,XXX | €XX,XXX | €XX,XXX
% of total | | | | 100% | XX% | XX% | XX% | XX%
Color code: 0–30 = green, 31–60 = yellow, 61–90 = orange, 90+ = red.
Healthy target distribution: 70%+ in current, less than 10% in 90+ days.
Action Triggers by Bucket
| Bucket | Action | Owner | Timeline |
|---|---|---|---|
| 0–30 (current) | Monitor | Finance | None |
| 31–60 (first late) | Email reminder with payment link | Finance / Billing | Within 3 days of bucket entry |
| 61–90 (moderately late) | Personal call or email from account owner | Account manager / Founder | Within 1 week |
| 90+ (seriously overdue) | Escalation, potential suspension, collections referral | Founder / Legal | Immediately |
FAQ
What is an aging report?
An aging report is a list of all outstanding customer invoices sorted into buckets by how many days they have been unpaid, typically 0–30, 31–60, 61–90, and 90+ days. It is the primary tool for managing accounts receivable and identifying which customers are late.
How do you calculate the aging buckets?
For each invoice, subtract the invoice due date from today’s date. The result is the number of days past due. Place the invoice in the appropriate bucket. Invoices not yet past due go in the 0–30 (current) bucket.
Why does the aging report matter for SaaS?
For enterprise SaaS with invoice-based billing, the aging report is the daily/weekly visibility tool for cash flow risk. It identifies collection problems before they become bad debt, surfaces specific customers who need follow-up, and quantifies the risk in your AR balance.
What is the difference between an aging report and AR turnover?
The aging report is operational, it shows individual invoice status and triggers specific actions. AR turnover is a summary metric, it shows aggregate collection efficiency as a ratio. Use both together: AR turnover to benchmark, aging report to act.
What mistakes do finance teams make with aging reports?
The biggest mistake is running the report monthly instead of weekly. Collection problems compound quickly, an invoice that enters the 61–90 bucket and does not get personal outreach within a week is much more likely to become 90+ day bad debt. Weekly reviews and clear action triggers by bucket are essential.
When should you write off an invoice as bad debt?
When you have exhausted reasonable collection efforts and the probability of collection is very low. For SaaS, a reasonable threshold is 120+ days past due with no payment plan or dispute resolution in progress. Write-off does not mean you stop trying to collect, it means you recognize the accounting reality and record the expense.
How does the aging report connect to the allowance for doubtful accounts?
The aging report informs your bad debt reserve. Older buckets carry higher collection risk, so the allowance percentage increases with age. A typical approach: apply 5% reserve to 31–60 days, 15% to 61–90 days, 25% to 90+ days, 50% to 120+ days.
Can you use Stripe’s invoice system as an aging report?
Stripe’s invoice dashboard shows invoice status (paid, past due, voided), but it does not automatically bucket by days outstanding. For a proper aging report, export Stripe invoice data or use an accounting system integration that creates the bucket view.
Related Reading
- Accounts Receivable Turnover Ratio, the aggregate metric the aging report feeds into
- Order to Cash Process for SaaS, the full cycle the aging report helps optimize
- Quote to Cash Process for SaaS, from pricing to cash collection
External resources:
SaaS Dashboard Generator
Build a live receivables and cash flow dashboard from your Stripe data. See which invoices are aging, what your effective DSO is, and where cash is at risk, automatically.