invoice-aging — Claude Code skill: track overdue invoices
Sorts unpaid invoices into aging buckets and flags clients who pay late. Handy when you need to see how much money is stuck with customers.
npx skills add openaccountant/skills --skill invoice-aging -a claude-codeWhat invoice-aging does
The skill takes your list of issued invoices — client, amount, invoice date, due date — and works out how many days each one is past due. Then it drops them into buckets: Current (0-30 days), 31-60, 61-90 and 90+. You get a table with totals per bucket and each bucket's share of the overall exposure. Clients with anything in the 90+ column get flagged, and the skill also computes the weighted average days outstanding.
There are two paths. The first leans on the transaction_search tool: the skill pulls incoming payments from each client over the past 6 months and matches them against known invoice amounts and dates to spot gaps. The second is manual — export from QuickBooks (Reports > Customers & Receivables > A/R Aging Summary), FreshBooks (Reports > Accounts Aging) or Wave (Reports > Aged Receivables), or build a sheet with Client, Invoice #, Amount, Invoice Date, Due Date, Paid Date and Paid Amount columns. The formulas for days outstanding, bucket assignment and the pivot are included.
One catch: transaction_search sees bank transactions, not invoices. So you have to supply the issued invoice list yourself, otherwise there is nothing to cross-reference against. Partial payments are handled — if $3,000 of a $5,000 invoice came in, the remaining $2,000 stays outstanding. For clients parked in the 61-90+ buckets, the skill suggests offering an early payment discount such as 2/10 Net 30.
What it helps with
- sort unpaid invoices into aging buckets
- spot clients who pay later than everyone else
- total up the money tied up in receivables
- match incoming payments against issued invoices
- handle partial payments and the remaining balance
Example prompts for the agent
- sort my unpaid invoices into aging buckets
- find clients with invoices over 90 days past due
- cross-reference the last 6 months of payments against my invoices and show the gaps
How to install invoice-aging
1Skills CLI (Vercel)
npx skills add openaccountant/skills --skill invoice-aging -a claude-code2Manually: put the files in place
~/.claude/skills/invoice-aging/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/invoice-aging/
1Skills CLI (Vercel)
npx skills add openaccountant/skills --skill invoice-aging -a codex2Manually: put the files in place
.agents/skills/invoice-aging/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openaccountant/skills --skill invoice-aging -a cursor2Manually: put the files in place
.cursor/skills/invoice-aging/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openaccountant/skills invoice-aging2Manually: put the files in place
.github/skills/invoice-aging/SKILL.md1Skills CLI (Vercel)
npx skills add openaccountant/skills --skill invoice-aging -a gemini-cli2Platform CLI
gemini skills install https://github.com/openaccountant/skills --path business/invoice-agingManually: put the files in place
.devin/skills/invoice-aging/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add openaccountant/skills --skill invoice-aging -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about invoice-aging
How do I install invoice-aging in Claude?
Run npx skills add openaccountant/skills --skill invoice-aging -a claude-code. The skill lands at ~/.claude/skills/invoice-aging/SKILL.md.
What does invoice-aging do?
It calculates days outstanding for each unpaid invoice, sorts them into Current, 31-60, 61-90 and 90+ buckets, flags chronic late payers and reports the weighted average days outstanding.
What do I need before running it?
A list of issued invoices with amounts and due dates. Without it there is nothing to cross-reference, because transaction_search only sees bank transactions.
Source text
SKILL.md · MIT
--- name: invoice-aging description: > Track unpaid invoices by age bucket and flag overdue payments. --- # Invoice Aging Report ## Overview Analyze accounts receivable by sorting outstanding invoices into aging buckets: Current (0-30 days), 31-60 days, 61-90 days, and 90+ days. Identifies clients with chronically late payments and calculates total exposure. ## Wilson Tools Used - `transaction_search` — find payment transactions matched to known clients or invoice references, identify gaps where expected payments are missing ## Workflow 1. Ask for the list of outstanding invoices (client name, invoice amount, invoice date, due date) or ask the user to describe their invoicing pattern. 2. Use `transaction_search` to find all incoming payments from each client over the past 6 months. 3. Cross-reference received payments against known invoice amounts and dates. 4. For each unpaid or partially paid invoice, calculate days outstanding from the due date. 5. Sort into aging buckets: ``` ACCOUNTS RECEIVABLE AGING — as of [Date] ═══════════════════════════════════════════════════════ Client Current 31-60 61-90 90+ Total ──────────────────────────────────────────────────────── Acme Corp $2,500 — — — $2,500 Beta LLC — $1,800 — — $1,800 Gamma Inc — — $3,200 — $3,200 Delta Co — — — $5,000 $5,000 ──────────────────────────────────────────────────────── TOTALS $2,500 $1,800 $3,200 $5,000 $12,500 % of Total 20.0% 14.4% 25.6% 40.0% 100% ═══════════════════════════════════════════════════════ ``` 6. Flag any client with invoices in the 90+ bucket. 7. Calculate weighted average days outstanding. 8. Recommend follow-up actions: send reminder (31-60), escalate (61-90), consider collections (90+). ## Without Wilson 1. Export your invoice list from your invoicing tool (QuickBooks: Reports > Customers & Receivables > A/R Aging Summary; FreshBooks: Reports > Accounts Aging; Wave: Reports > Aged Receivables). 2. If no invoicing tool, create a spreadsheet with columns: Client, Invoice #, Amount, Invoice Date, Due Date, Paid Date, Paid Amount. 3. Calculate days outstanding: `=IF(PaidDate="", TODAY()-DueDate, PaidDate-DueDate)`. 4. Assign buckets with: `=IF(DaysOutstanding<=0,"Current",IF(DaysOutstanding<=30,"Current",IF(DaysOutstanding<=60,"31-60",IF(DaysOutstanding<=90,"61-90","90+"))))`. 5. Pivot table: Rows = Client, Columns = Bucket, Values = Sum of Amount. 6. For weighted average: `=SUMPRODUCT(Amount,DaysOutstanding)/SUM(Amount)`. ## Important Notes - Wilson tracks cash transactions, not invoices directly. This skill works best when you can provide a list of issued invoices to cross-reference against bank deposits. - Partial payments should be tracked. If an invoice is $5,000 and $3,000 was received, the remaining $2,000 is still outstanding. - Consider offering early payment discounts (e.g., 2/10 Net 30) for clients consistently in the 61-90+ buckets.
© openaccountant · MIT · openaccountant/skills