No AI, no guessing, and nothing that needs configuring. Every number below is worked out from the two reports Tally already exports — arithmetic you could check by hand if you had a spare weekend.
Your ageing report measures everyone against the same yardstick — 30 days, 60 days, 90 days. But a customer who has paid you on day 74 for three years isn't late on day 62. They're early.
So we read your Bills Cleared export and, for each customer, work out how long they actually take, how consistent they are, and whether they're getting slower. Then today's delay is measured against their normal rather than a number somebody picked.
This needs at least three settled invoices per customer. Below that we say so plainly rather than inventing a norm — see the FAQ.
Each group has a different job attached. That's the point — a list of everyone who owes you money isn't a plan, it's the problem restated.
| Group | What it means | What you do |
|---|---|---|
| Likely dispute | Newer invoices paid, this one wasn't | Call them. No reminder fixes this |
| Slipping | Getting slower month on month | Call them. Find out before it's bad debt |
| Needs pressure | Erratic, or well past their own norm | Firm message |
| Forgetful | Reliable payer who missed this one | Gentle nudge. Usually enough |
| Slow but predictable | Always late by the same amount | Nothing. This is just how they pay |
| Not due yet | Still inside terms | Nothing |
| No history | Under three settled invoices | Gentle nudge, and we say we can't judge yet |
If a customer paid invoice #5 but not #3, they aren't short of cash. Something is wrong with #3 — short delivery, a quality complaint, the wrong amount, a missing e-way bill or GST document. Reminders will never recover it, and most owners have several sitting in their ledger having quietly given up on them.
The naive version of this rule fires constantly, so all four must hold at once:
On our test ledger that finds exactly one dispute in ten customers. The naive version found four. Rare enough to be worth reading is the whole design.
Three levels — gentle, firm, final — and which one a customer gets depends on how far past their own normal they are, and how many times you've already chased them for this debt. Clear the debt and it resets to gentle. There is no fourth level, because nothing useful follows a final demand.
You write the words. All three are editable in Settings, in any language — Hindi, Gujarati, Marathi, whatever you actually trade in — with placeholders for the customer, the amount, the bill list and the dates. You get a preview against a real customer before anything is sent.
Every reminder opens in your WhatsApp, from your number, with the text already typed. You press send. We never message a customer on your behalf, and there is no WhatsApp Business API to apply for.
Anyone chased in the last five days drops off the list, with the date they're due again. Work it every morning without ringing the same person daily.
Missing phone numbers collected in one pass, then one customer at a time with a counter. Leave and it remembers your place.
Promise · already paid · part payment · raised a query. Recorded on the call, settled automatically by your next upload.
Every action can be taken back exactly — including a mistapped WhatsApp that would otherwise make their next message firmer.
Upload again and we compare the two files. A bill that was open last month and isn't now was paid — so you get what came in, how much of it came from customers you actually chased, whether your DSO is moving, and which promises were kept or broken.
All of it from your own exports. No bank feed, no reconciliation, nothing to keep up to date. Customers who paid drop off the chase list on their own.
On a paid plan you get a Claude MCP connection — six read-only tools over the same analysis. "Who should I call today?", "Why is Verma flagged as a dispute?", "Draft a firm reminder for Sharma Traders." Read-only: it can never send anything or write to Tally.
No signup for the free numbers · See pricing