invoice-ledger
Purpose
Summarize accounts receivable from exported invoice CSVs without moving finance data into SaaS tools.
Runbook
- Provide a CSV with invoice id, client, due date, amount, and either status or paid date.
- Run
scripts/age.pyto bucket open invoices into current, 1-30, 31-60, and 61+ day overdue ranges. - Use the output to prioritize follow-up, not to overwrite the source ledger.
- Keep reports local because invoice data may contain sensitive customer information.
Stop conditions
- Abort if the CSV columns do not map cleanly to due date and amount.
- Abort before contacting customers based on stale or duplicate invoice exports.
- Abort if the active variant cannot keep the finance data local.
Output format
- Aging buckets by amount
- Open invoice list with overdue days
- Collected vs open totals
Example invocations
python3 skills/invoice-ledger/scripts/age.py invoices.csv --markdowncat invoices.csv | python3 skills/invoice-ledger/scripts/age.py - --today 2026-04-01