EMI Tracker
EMI Tracker records a customer's instalment payment plan for a purchase — total amount, down payment, monthly EMI, tenure and the financing bank — and tracks how many instalments have been paid, with a one-tap WhatsApp reminder as the next instalment date approaches.
Overview
Each EMI plan stores the customer, product, Total Amount, Down Payment, Monthly EMI amount, Tenure (months), a Start Date, a recurring EMI Date (day of month), the financing Bank/Finance Company and its Ref/Loan Number, and how many Installments Paid so far.
A visual progress bar and "paid/total" counter on each row shows how far through the plan a customer is, with a green checkmark once fully paid.
Plans move through ACTIVE, COMPLETED, DEFAULTED or CANCELLED status.
When editing an existing plan, a live Pending Balance is shown — Total Amount minus Down Payment minus (Installments Paid × Monthly EMI) — so you can see at a glance what the customer still owes.
Before You Start
- No plan-tier restriction beyond the route's general "billing" feature gate.
- Only Customer Name and Product are required to save a plan — financial figures, bank details and dates can be filled in as they are confirmed.
- A customer phone number and an EMI Date (day of month) are both required for the WhatsApp instalment reminder button to appear.
Step-by-Step Guide
1 Add a new EMI plan
- Click Add EMI Plan.
- Enter Customer Name * (required) and Phone.
- Enter Product * (required) — e.g. "iPhone 15, Samsung S24…".
- Enter Total Amount and Down Payment.
- Enter Monthly EMI, Tenure (months) and EMI Date (the day of the month, 1–31, the instalment is due).
- Set Start Date and Installments Paid (defaults to 0).
- Enter Bank/Finance Co. and Ref/Loan No. if financed through a third party.
- Set Status (defaults to Active) and add any Notes, then click Add EMI Plan.
2 Update instalment progress
- Open an existing plan via the edit icon.
- Increase Installments Paid each time the customer pays their monthly EMI.
- While editing, watch the Pending Balance line — it recalculates live from Total Amount, Down Payment and Installments Paid × Monthly EMI as you type.
- Once Installments Paid reaches Tenure (months), update Status to Completed.
3 Send a WhatsApp instalment reminder
- The WhatsApp icon appears on ACTIVE plans with a customer phone and EMI Date where fewer than 5 days remain until (or have already passed) that day of the current month, and not all instalments are yet paid.
- Click it to open WhatsApp Web/App with a pre-filled reminder message stating the EMI amount, product, due day of the month, and how many instalments have been paid out of the total.
4 Search, filter and manage plans
- Use the search box to filter by customer name, product name or bank/loan reference number.
- Use the status chips (All, Active, Completed, Defaulted, Cancelled) to narrow the table.
- Click the trash icon and confirm to permanently delete a plan.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Add EMI Plan | Opens the blank EMI plan form. |
Active EMI plans banner | Shown at the top of the page whenever at least one plan is Active, with the running count. |
Customer Name * / Phone | Required customer name and optional contact phone (needed for reminders). |
Product * | Required product name the instalment plan is financing. |
Total Amount | Full price of the item being paid off via instalments. |
Down Payment | Amount paid upfront, subtracted from Total Amount when computing Pending Balance. |
Monthly EMI | The instalment amount due each month. |
Tenure (months) | Total number of monthly instalments in the plan. |
EMI Date (day) | Day of the month (1–31) the instalment is due; drives the WhatsApp reminder timing. |
Start Date | The date the plan began. |
Installments Paid | Running count of instalments paid so far; drives the progress bar and Pending Balance. |
Bank / Finance Co. | The financing bank or finance company, e.g. HDFC, Bajaj Finance. |
Ref / Loan No. | The bank/finance company's reference or loan number for this plan. |
Pending balance (edit form) | Live-calculated as Total Amount − Down Payment − (Installments Paid × Monthly EMI); only shown while editing an existing plan and only when greater than zero. |
Status | Active, Completed, Defaulted, or Cancelled. |
Notes | Free-text notes on the plan. |
Progress bar + N/N counter | Visualises Installments Paid against Tenure (months) on each row, with a green checkmark once fully paid. |
Search box | Filters by customer name, product name or bank reference/loan number. |
Status filter chips | All, Active, Completed, Defaulted, Cancelled. |
WhatsApp icon | Sends a pre-filled instalment reminder via wa.me; only shown for Active plans with a phone, an EMI Date, and unpaid instalments remaining within 5 days of (or past) the due day this month. |
Edit / Delete icons | Edit opens the form pre-filled; Delete permanently removes the record after a confirmation prompt. |
Tips & Best Practices
- Update Installments Paid the same day a customer pays, not in a weekly batch — the WhatsApp reminder logic and Pending Balance are only as accurate as this number.
- Always record the Bank/Finance Co. and Ref/Loan No. for third-party-financed plans — it is the fastest way to answer a bank's query about a specific customer's loan later.
- Move a plan to Defaulted rather than leaving it Active indefinitely once payments genuinely stop — it keeps the Active-plan count and reminder logic meaningful for the plans still actually being paid.
Troubleshooting & FAQ
The WhatsApp reminder icon isn't showing for a plan I expect it on.
The reminder icon keeps appearing every day even though the due date already passed this month.
Pending Balance isn't showing while I edit a plan.
The progress bar shows 0/0 or looks wrong.
🧑💻 Developer Notes
Source component(s):
frontend-app/pos-app-electronics/src/pages/electronics/EMITrackerPage.jsxfrontend-app/packages/pos-react-lib/src/pages/electronics/EMITrackerPage.jsx
Backend endpoints used:
GET /electronics/emiPOST /electronics/emiPUT /electronics/emi/:idDELETE /electronics/emi/:id
Related tables (db-core repositories):
ElectronicsEMI
Redux slices:
None — local component state only
Feature flag key: billing
The "due soon" check (dueSoon()) is a simple `emiDate - today <= 5` comparison against the day-of-month with no month-rollover awareness — it does not distinguish between "5 days until due this month" and "overdue by 20 days earlier this month", so the WhatsApp reminder icon effectively stays visible for any active, unpaid plan from the moment its due day passes until the calendar rolls into the next month. There is no automated payment-received flow — Installments Paid, and therefore Pending Balance and the progress bar, must be updated manually by staff each time a customer pays.