Unpaid invoices, riskiest first
| Invoice | Amount | Due | Chance of paying late | Likely paid | Suggested next step | What happened |
|---|
Cash expected from these invoices
Bars: expected amount per week. Whiskers: 80% range from 2,000 simulated payment schedules. Dots: what was actually paid.
How the numbers are made
- Cashcast reads your invoice history: client, issue date, due date, amount, paid date.
- For every invoice it computes what you knew on the day you sent it: how that client paid before, how many of their invoices were still open, the amount compared with their usual.
- TabPFN, an open tabular foundation model, learns from your paid invoices in one pass (no training loop) and returns a full distribution of days to payment for each open one.
- Code turns that distribution into a late-payment chance, a payment date range that accounts for how long the invoice has already been open, and a weekly cash forecast.
Does it work? A backtest on 2013
Do the ranges fit the client?
Is "60% chance" really 60%?
Replay check (the numbers shown above)
Use it on your own invoices
Local mode is on. Your file is read by the Python process on this computer and is not sent anywhere else.
No file at hand? or download it to see the format.
This page is static, so it cannot read your file. Run Cashcast on your laptop instead; it needs Python 3.10 or newer and works on a CPU.
git clone https://github.com/StarKnightt/cashcast
cd cashcast
pip install -r requirements.txt
python -m cashcast.serve # opens http://localhost:8765
Your CSV needs one row per invoice with the columns client, invoice_id, issued, due, amount, paid. Leave paid empty for invoices that are still open. Download a sample CSV.