Excel · ChatGPT

How to Build an Accounts Receivable Aging Tracker in Excel with ChatGPT

Paste your open invoice register into ChatGPT and get back a full aging report in minutes — invoice-level buckets, customer summaries, DSO, and collection priority scoring, all built with formulas you can audit.

Choose your situation — copy the prompt:
ROLE
You are an AR analyst building an accounts receivable aging tracker in Excel.

OBJECTIVE
Take my open invoice register and produce an aging report with invoice-level
detail, customer-level summaries, a DSO calculation, and collection priority
scoring.

DATA
Report date: [e.g. 11/07/2025]
Date format: DD/MM/YYYY
Credit sales for the period: $[amount] over [number] days

Open invoice register (columns: Customer, Invoice #, Invoice Date, Due Date,
Balance Outstanding):
[Paste your open invoices here — one row per invoice, no paid invoices]

AGING RULES
- Current: Due Date is on or after Report Date (not yet due)
- 1–30 days: 1 to 30 days past Due Date
- 31–60 days: 31 to 60 days past Due Date
- 61–90 days: 61 to 90 days past Due Date
- 90+ days: more than 90 days past Due Date

PRIORITY SCORING
- High: 90+ days overdue OR balance > $25,000 and 30+ days overdue
- Medium: 31–60 days overdue, 61–90 days overdue (unless already High), or
  1–30 days and balance > $15,000
- Low: Current or 1–30 days with balance ≤ $15,000

CONSTRAINTS
- Calculate Days Overdue as Report Date minus Due Date. Negative = Current.
- Do NOT age from the invoice date. Age from the due date only.
- Do NOT invent invoices, customers, or amounts.
- Flag any invoice missing a Due Date rather than guessing.

OUTPUT FORMAT
1. INVOICE DETAIL: Customer | Invoice # | Invoice Date | Due Date | Balance |
   Days Overdue | Bucket | Priority. Sorted by Days Overdue descending.
2. CUSTOMER SUMMARY: Customer | Total AR | Current | 1–30 | 31–60 | 61–90 | 90+.
3. DSO: Total AR ÷ (Credit Sales ÷ Days in Period). Show the calculation.
4. AGING SUMMARY: Total AR by bucket across all customers.
Format as tab-separated tables ready to paste into Excel.

Replace all bracketed sections with your real data, then paste the prompt into ChatGPT.

My invoice register includes invoices with partial payments already applied.

Here are the columns I have (columns: Customer, Invoice #, Due Date,
Original Amount, Amount Paid):
[Paste your invoices here]

Please calculate a Balance Outstanding column as Original Amount minus
Amount Paid, then build the aging report using Balance Outstanding — not
the original invoice amount — for every calculation and bucket assignment.

Do NOT age or size-prioritise based on the original amount. A fully paid
invoice should not appear in the aging report at all.

Aging the original invoice amount instead of the remaining balance overstates your overdue exposure.

I want to track DSO period over period, not just for the current report date.

Here are my prior DSO calculations:
[Paste: Period label, Total AR, Credit Sales, Days in Period, DSO — for each
 past period you have]

Current period data:
Report date: [date]
Total AR: $[amount]
Credit sales: $[amount] over [number] days

Please calculate DSO for the current period, then build a trend table
showing DSO for every period side by side with the period-over-period
change in days. Flag any period where DSO increased by more than [5] days.

A single DSO figure is a snapshot. A trend line is what tells you whether collections are improving or slipping.

Before — aged from Invoice Date, Net 60 looks overdue
CustomerInvoice #TermsBalanceAged fromBucket assigned
Horizon GroupINV-1142Net 60$42,000Inv. Date 01/06 ✗Due: 31/0731–60 days ✗Should be: 1–30
Vertex LtdINV-1089Net 30$18,500Inv. Date 15/05 ✗Due: 14/0661–90 days ✗Correct: 61–90 ✓
Bluewave CoINV-1201Net 30$7,200Inv. Date 20/07Due: 19/08Current ✓
NordExINV-1055Net 30$31,000Inv. Date 10/04Due: 10/0590+ ✓
Report date: 15/08/2026 — aged from Invoice Date
↑ INV-1142 Net 60 wasn't due until 31/07 — only 15 days overdue, not 31–60
After — ChatGPT ages from Due Date, correct buckets
CustomerInvoice #Due DateBalanceDays OverdueBucketPriority
NordExINV-105510/05/2026$31,00097 days90+🔴 High
Vertex LtdINV-108914/06/2026$18,50062 days61–90🟡 Medium
Horizon GroupINV-114231/07/2026$42,00015 days1–30🟡 Medium
Bluewave CoINV-120119/08/2026$7,200CurrentCurrent🟢 Low
ChatGPT's AR summary
Total AR:    $98,700
1–30 days:   $42,000  (Horizon — large balance, Medium)
61–90 days:  $18,500
90+ days:    $31,000  ← collect immediately
DSO = $98,700 ÷ ($540,000 ÷ 180) = 32.9 days ✓
Before — partial payments ignored, AR overstated
CustomerOriginalPaidAged On ✗Bucket
Horizon Group
INV-1142 · Due 31/07
$42,000$42,000 ✗1–30 High
NordEx
INV-1055 · Due 10/05
$31,000$31,000 ✗90+ High ✗
Vertex Ltd
INV-1089 · Due 14/06
$18,500$18,500 ✗61–90 Med
Bluewave Co
INV-1201 · Due 19/08
$7,200$0$7,200 ✓Current Low
Underlined = inflated figures. Report shows $98,700 · actual exposure $34,700
↑ NordEx fully paid — still showing as 90+ days High priority
After — ChatGPT ages on balance outstanding only
CustomerInvoice #Due DateOriginalPaidBalanceBucketPriority
Horizon GroupINV-114231/07/2026$42,000$28,000$14,0001–30🟢 Low
NordExINV-105510/05/2026$31,000$31,000$0Paid — removed
Vertex LtdINV-108914/06/2026$18,500$5,000$13,50061–90🟡 Medium
Bluewave CoINV-120119/08/2026$7,200$0$7,200Current🟢 Low
ChatGPT's corrected AR
Balance = Original Amount − Amount Paid
NordEx fully paid → removed from aging report
True AR exposure: $34,700 (not $98,700)
Horizon drops from High to Low — $14k balance, 1–30 days ✓
Before — single DSO snapshot, no trend visibility
PeriodTotal ARCredit SalesDaysDSOΔ vs Prior
Feb 2026$81,400$490,000284.7 days?
Mar 2026$94,200$520,000315.6 days?
Apr 2026$88,700$480,000305.5 days?
May 2026$102,300$510,000316.2 days?
Jun 2026$98,700$540,00030??
5 months of data but no trend table, no flags — are collections improving?
↑ May DSO up 0.7 days vs Apr — flaggable or noise? Impossible to tell without a trend
After — ChatGPT builds DSO trend with flags
PeriodTotal ARDSOΔ DaysFlag
Feb 2026$81,4004.7 days
Mar 2026$94,2005.6 days+0.9
Apr 2026$88,7005.5 days−0.1
May 2026$102,3006.2 days+0.7
Jun 2026$98,700−0.7
ChatGPT's DSO trend summary
Jun DSO = $98,700 ÷ ($540,000 ÷ 30) = 5.5 days
Period range: 4.7 → 6.2 → 5.5 days
No period exceeded the +5-day flag threshold.
Collections stable — no escalation needed. ✓
Why the aging report is wrong — the 4 most common causes
Aged from invoice date
Net 60 invoices look 30 days overdue when they're still Current
Most common
Paid invoices left in
Total AR is overstated; aging buckets include settled amounts
Most common
Original amount, not balance
Partial payments ignored → overdue exposure looks worse than reality
Easy fix
No report date specified
Days overdue can't be calculated — the whole aging is meaningless
Invisible

Accounts receivable aging formulas and workflow

Build an AR aging tracker with ChatGPT — 5 steps
1

Use the due date, not the invoice date, for aging

Aging measures how late a payment is — that's days past due, not days since invoicing. An invoice dated 1 January with Net 60 terms isn't overdue until 2 March. If you only have invoice dates, tell ChatGPT your standard payment terms and it will calculate due dates.

2

Use balance outstanding, not original amount

If a $42,000 invoice has $10,000 already paid, the balance is $32,000. Aging the original $42,000 overstates your overdue exposure. Include a column for partial payments or, better, just provide the remaining balance directly.

3

Exclude fully paid invoices before pasting

A register with 500 paid invoices and 40 open ones forces ChatGPT to sort through noise. Filter to open invoices only. Paid invoices belong in your bank reconciliation, not the AR tracker.

4

Specify the report date

ChatGPT calculates days overdue as Report Date − Due Date. If you don't specify a report date, the aging is anchored to nothing. State it clearly: Report date: 11/07/2025.

5

Provide credit sales for the DSO calculation

DSO = Total AR ÷ (Credit Sales ÷ Days in Period). Without a revenue figure and period length, ChatGPT can't compute it. Give both explicitly, and use credit sales rather than total revenue if a meaningful share of sales is cash.

Common mistake: Aging invoices from the invoice date instead of the due date. A Net 60 invoice issued 45 days ago isn't overdue — it's Current. Aging from the invoice date would put it in the 31–60 bucket and trigger a false collection alert.

Frequently asked questions

What are accounts receivable aging buckets?
Aging buckets group outstanding invoices by how many days past the due date they are. Standard buckets are Current (not yet due), 1–30 days overdue, 31–60 days, 61–90 days, and 90+ days. Each bucket carries a different collection risk — the older the invoice, the harder it is to collect.
How does ChatGPT calculate the aging for each invoice?
ChatGPT subtracts the invoice due date from the report date you specify to get the days overdue. It then assigns each invoice to the appropriate aging bucket using IF or IFS logic. Invoices not yet due go into the Current bucket. The formula is written out so you can verify the logic.
Can ChatGPT calculate DSO from the AR data?
Yes. DSO (days sales outstanding) is calculated as total accounts receivable divided by the average daily credit sales for the period. You provide the revenue figure and the number of days in the period. ChatGPT computes DSO and can track it period over period for trend analysis.
How do I handle partially paid invoices in the aging tracker?
Include a Balance Outstanding column that reflects the remaining amount after partial payments. The aging calculation uses the balance outstanding, not the original invoice amount. This ensures the aging report shows what is actually owed, not what was originally billed.
Does this tracker replace an ERP accounts receivable module?
No. This is for teams that manage AR in spreadsheets or need a supplementary view outside their ERP. If your ERP produces aging reports, this template can serve as a secondary analysis tool — for example, adding collection priority scoring or customer-level summaries the ERP doesn't provide.

Related Excel workflows