Khata Reminders
Khata Reminders lists every customer who still owes money (udhaar/khata) and lets you send a polite, pre-written WhatsApp message asking them to clear it — in one click, with no typing required.
Overview
The list is built from the same outstanding-balance data used in Customer Reports, showing each customer's name, phone, total amount due, how many unpaid bills make up that total, and the date of their oldest unpaid bill.
A single editable message template (with placeholders for the customer's name, the amount, the bill count and the oldest bill's date) is used for every reminder, so the tone stays consistent without retyping it customer by customer.
Sending a reminder opens WhatsApp Web/App via a wa.me link with the message pre-filled against that customer's phone number — you still click Send inside WhatsApp yourself, nothing is sent automatically in the background.
Before You Start
- Customers must have a phone number on file for the WhatsApp button to open a chat pre-addressed to them (without a phone it opens WhatsApp with the message ready to paste into any chat).
- A customer only appears here if they have at least one unpaid or partially paid bill contributing to their outstanding balance.
Step-by-Step Guide
1 Review who owes money today
- Open Khata Reminders — the two summary tiles at the top show Total due across all customers and Customers with dues (a headcount).
- Use the search box to narrow the table to a specific customer by name or phone.
- Click Refresh to re-pull the latest balances (e.g. right after recording a payment elsewhere in the app).
2 Customise the reminder message
- Edit the text in the Reminder message box — it supports four placeholders:
{name},{amount},{bills}and{since}. - The template you type applies to every customer's reminder from that point on for the current session; each customer's own values are substituted in automatically when you click Remind or Copy.
3 Send or copy a reminder
- Click the green Remind button on a customer's row to open WhatsApp with the message pre-filled and addressed to their phone number; press send inside WhatsApp to actually deliver it.
- Click the copy icon instead to copy the finished message text to your clipboard — useful for sending over SMS or a different messaging app.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Total due | Sum of the outstanding (unpaid) balance across every customer currently shown in the list. |
Customers with dues | Count of distinct customers who have any outstanding balance greater than zero. |
Reminder message box | Editable template with placeholders {name}, {amount}, {bills}, {since}; substituted per-customer when you send or copy. |
Search box | Filters the table by customer name or phone as you type. |
Due Amount column | That customer's current total outstanding balance, formatted in the shop's currency. |
Bills column | Number of unpaid/partially-paid invoices contributing to the Due Amount. |
Oldest Bill column | Date of the customer's longest-outstanding unpaid invoice — useful for prioritising who to chase first. |
Remind button | Opens WhatsApp (wa.me) with the filled-in reminder message, addressed to the customer's phone if one is on file. |
Copy button | Copies the filled-in reminder message text to the clipboard without opening WhatsApp. |
Tips & Best Practices
- Sort your workday by oldest bill first — customers who have owed money the longest are usually the ones worth reminding before new dues pile up.
- Keep the message template polite and short; the default template already follows a respectful "Namaste … kindly clear it" tone that works well for Indian retail customers.
- Use Refresh right after recording a payment against a customer so they drop off the list (or their amount updates) before you send any more reminders that day.
Troubleshooting & FAQ
A customer I know owes money is not in this list.
The Remind button did not open a specific chat.
Can I schedule reminders to send automatically?
I changed the message template — did it save?
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/KhataRemindersPage.jsx
Backend endpoints used:
GET /customer-reports/outstanding?search=&limit=200
Related tables (db-core repositories):
CustomerSaleSaleItem
Feature flag key: customers
Reuses the exact same "outstanding balance" report endpoint as Customer Reports rather than a dedicated table — this page is purely a WhatsApp-reminder front-end over that data. Message text is built client-side with simple String.replaceAll placeholder substitution and opened via window.open('https://wa.me/<phone>?text=...'); the phone number is stripped of all non-digit characters before being placed in the wa.me URL.