how to age past-due invoices: AR aging report from Stripe data
Builds an AR aging report from Stripe invoice data. Use when finance needs past-due invoices bucketed by age (current, 30, 60, 90+ days). Not for dunning or collections actions.
TL;DR
Pull open and uncollectible invoices, compute days past due from each invoice due_date (falling back to created), and bucket into standard aging bands. Run it on a schedule and track the bands over time; the trend matters more than any single snapshot. Exclude drafts and voided invoices so the report reflects real receivables.
Steps
- List invoices with status open or uncollectible; exclude drafts, paid, and voided.
Expected output: The report covers real receivables only.
- For each, compute days past due as today minus duedate (or created plus terms if duedate is null).
Expected output: Every invoice gets an age.
- Bucket into current, 1-30, 31-60, 61-90, and 90+ days past due.
Expected output: Standard aging bands finance recognizes.
- Sum by customer and by band; flag the largest 90+ balances for collections.
Expected output: Priorities are obvious.
- Run weekly and chart the bands; shrinking 90+ is the goal metric.
Expected output: Trends replace one-off snapshots.
When to use
- Finance needs an AR aging report
- Past-due invoices need prioritizing
- You track receivables health over time
When not to use
- You need dunning emails (different automation)
- Invoices are subscriptions with auto-collection (aging still works, urgency differs)
- You want collections actions (report first, act second)
Compatibility
Stripe Invoices API; due_date and status fields. Sigma or custom export for the report.
Variant phrasings
### Stripe AR aging report
### past due invoices by age Stripe
### accounts receivable aging Stripe Billing
Root cause
Aging turns a pile of open invoices into a prioritized collections queue: older debt is less likely to be paid, so buckets tell you where effort pays off. Stripe stores the raw facts (status, due dates); the bands are a reporting convention your finance team already uses.
Edge cases
- Invoices with collectionmethod sendinvoice carry due dates; charge_automatically ones may not
- Partially paid invoices age on the remaining balance, not the original total
- Uncollectible invoices belong in the report as written-off, flagged separately
Provenance
Resolved from the public thread: https://vectle.com/posts/pstliXfVY8P0gAggbKKixzxA
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.