At a glance
| Input | An AR aging report, CSV |
| Output | HTML report and PDF |
| First run | Under 5 minutes |
| Requires | A Claude account with skills and code execution turned on |
| Works with | NetSuite, Sage Intacct, and most other CSV aging exports |
| Currency | One currency per run |
| Data | Read in-session. Nothing connects to your ERP or leaves Claude. |
Quickstart
- Turn on code execution in Claude. Users with Free, Pro, and Max accounts can find it under Settings → Capabilities. Team accounts have it on by default. Enterprise accounts need an owner to switch it on.
- Download the skill folder. Upload the file as it is, without unzipping it: go to Customize → Skills, click +, then “Create skill”, then “Upload a skill”.
- Toggle the skill on.
- Start a chat, attach your aging CSV, and type: “Run an AR health diagnostic on this aging report.”
- Answer three optional questions, or skip them, and your report arrives as HTML and a PDF you can download.
Inputs
One aging report saved as CSV, in whichever layout your ERP exports:
- Customer-level summary: One row per customer, with bucket columns.
- Invoice-level detail: One row per invoice, with an amount and a due or invoice date.
Three optional answers sharpen the analysis. Provide any, all, or none:
- Annual revenue: Shows what share of your sales is tied up in receivables.
- Key accounts: Tags your largest relationships so the shortlist flags them.
- Write-off age: Marks balances aged past the point you stop expecting payment.
Exports without due dates need one more answer: your standard payment terms. Skip it and the skill assumes Net 30.
The report
Each run produces an HTML report and a PDF. You get:
- Health grade: A to F, with the four sub-scores behind it.
- Vital signs: Total AR, overdue balance and overdue ratio, money at risk in 90+, weighted days past due.
- Aging distribution: Full breakdown from current through 90+.
- Risk flags: Concentration, deep-bucket balances, money past your write-off age, unapplied credits.
- Priority shortlist: Ranked accounts to work first, with key accounts tagged.
How the grade is calculated
The grade is a weighted blend of four sub-scores, each shown in the report:
| Sub-score | Weight |
|---|---|
| Overdue severity | 35% |
| Money at risk (90+) | 25% |
| Collection lag | 20% |
| Concentration in top accounts | 20% |
Troubleshooting
| Issue | Fix |
|---|---|
| The skill never runs | Check code execution is on, and that the skill is toggled on under Customize → Skills. |
| "Does not look like an aging report” | Confirm the file is an aging export, then tell Claude which columns hold customers, amounts, and buckets. |
| Collection lag | 20% |
| Grade looks wrong | Ask Claude which columns it read. A misread bucket is the usual cause. |
| No PDF produced | Have Claude install WeasyPrint. The HTML is written first and is always available. |
| Total is higher than your ERP shows | Exports that carry both an original invoice amount and a remaining balance can be read on the wrong column. Tell Claude which one holds the balance still owed. |
| Totals look doubled | The skill counts a parent account and its child accounts separately. Re-export at a single level so no balance is counted twice. |
No. The skill is free and runs on its own inside Claude.
No. The skill reads the CSV inside your Claude session. It does not connect to your ERP or send anything to Upflow.
Any system that exports an aging report as CSV. It is built for NetSuite and Sage Intacct and handles most other exports too.
The skill ages each invoice from the invoice date plus your payment terms. If you skip terms, it assumes Net 30.
Run one currency at a time. Filter your export to a single currency, then run the skill once per currency. A mixed-currency file adds the balances together and grades the total, which reads as a single book when it is three.













