School Fee Reminder
Automated fee-reminder calls that capture a promise and drop a UPI/EMI link — and stop the moment a parent pays.
Last updated 2026-07-12
Screenshots




About School Fee Reminder
School Fee Reminder
Recover late coaching & school fees on autopilot — a polite before/on/after reminder cadence that captures a promise-to-pay, drops a UPI/EMI link, and halts the moment the parent pays.
Built on the Telenow App Platform as a pure declarative app: the data model, the agent tools, the SIS + Razorpay webhooks, the reminder + payment-halt workflows, the vernacular agent, and the fee playbook all run on-platform. No external server.
The problem (and the number)
For most coaching institutes and schools, ~40% of fee installments are paid late, and at any given time 15–35% of annual revenue is locked up in outstanding dues. Chasing it is awkward, manual, and easy to let slide — so a receptionist makes a few calls, feels rude, and stops. The result is a widening Days-Sales-Outstanding (DSO) and a cash-flow hole that has nothing to do with enrolment.
The fix isn't harder pressure — it's a consistent, polite cadence: reach the parent in their own language, remind them without judgment, get a concrete promise-to-pay (or split it into an EMI when money is tight), and make paying a single tap via a UPI/EMI link — then stop the instant they pay. School Fee Reminder runs that cadence for you.
How it works
SIS / ERP ──(installment created webhook)──► fee_installment object (status: due)
│ │
│ fires object.fee_installment.created
▼ ▼
dedupe on phone ┌── fee_wa_nudge → gentle WhatsApp reminder + UPI/EMI link
└── fee_reminder → delay ~3 days
→ outbound-call {{settings.fee_agent_id}}
→ dials {{trigger.data.phone}}
→ passes student, amount, balance, overdue_days
│
▼
Fee Reminder Agent (Sarvam, vernacular)
find_installment → polite reminder → answer from playbook
→ capture_promise + mark_promised (pause cadence)
→ mark_paid (paid on the link)
Razorpay ──(payment captured webhook)──► payment object
│ │
│ fires object.payment.created
▼ ▼
verify x-razorpay-signature payment_halt workflow
└─ update-object fee_installment (match phone → status: paid)
Everything the agent does on the call updates the same fee_installment / promise rows you see on the dashboard — and the dashboard's Call now button dials through the same agent and tools.
Agent tools (used mid-call — all declarative)
| Tool | Does | Handler |
|---|---|---|
find_installment | Look up the parent's current installment by phone | object.query fee_installment |
capture_promise | Record a promise-to-pay (date + amount, incl. EMI parts) | object.create promise |
mark_promised | Parent commits to a date — pause the cadence | object.update fee_installment (match phone → status promised) |
mark_paid | Parent paid on the link during the call — stop reminders | object.update fee_installment (match phone → status paid) |
The bundled Fee Reminder Agent is a multi-context flow: a deterministic find_installment tool node (looks the parent up in this app's data) → a conversation node that reminds, captures the promise, and negotiates EMI. STT/TTS default to Sarvam (anushka) so parents are spoken to in their own language.
Dashboard pages
- School Fee Reminder (dashboard) — KPI tiles (outstanding dues ₹, dues recovered ₹ + recovery rate, DSO / avg overdue days, promises to pay, in reminder cadence), a cadence-status mix bar (due → promised → paid), the most-overdue installments, and upcoming promises. Also powers the platform
dashboard_widgetslot in a compact form. - Installments — filter by status, search, and Call now to trigger a reminder call for any installment (passes the student's context variables to the agent).
- Promises — every captured promise-to-pay, sorted by date, flagged when a promise is overdue, with a one-tap Follow up call.
- Setup — a configuration checklist, a one-click Create fee reminder agent button, and the post-install wiring steps.
Knowledge base
fee-playbook ships four real scripts the agent answers from: the polite dunning cadence (before / on / after due date), EMI / part-payment negotiation, explaining the UPI/EMI payment link, and handling fee disputes → route to accounts.
Install & post-install wiring
- Install School Fee Reminder into your org.
- Open Setup → Create fee reminder agent (builds the bundled Sarvam agent, auto-wired to the tools + playbook).
- Copy the new agent's ID into the app's Fee reminder agent ID setting (
fee_agent_id) sofee_remindercan dial. - (Optional) Set WhatsApp channel ID (
wa_channel) to auto-send the gentle reminder + UPI/EMI link, and Accounts desk phone (accounts_phone) for dispute transfers. - Point your systems at the inbound hooks —
sis_webhook(installments in, deduped on parent phone) andrazorpay_paid(verified withx-razorpay-signature, halts the cadence on payment). Overdue installments now flow in and auto-dial.
Settings
| Key | Type | Notes |
|---|---|---|
fee_agent_id | text (required) | The agent the workflow + "Call now" dial. |
wa_channel | text | WhatsApp channel for the reminder + UPI/EMI link. |
accounts_phone | text | Number the agent transfers to for fee disputes. |
Bulk dialing your backlog
The real-time path (webhook → workflow → call) covers new installments. To sweep an existing backlog of overdue fees, use the app-key campaign API:
POST /api/app-campaigns
{ "agentId": "<fee agent id>",
"targetQuery": { "status": "due" }, // over the `fee_installment` object
"result": { ... write-back ... } }
Monetization
School Fee Reminder is billed on outcomes, not seats: a small percentage of the dues it actually recovers (installments that move to paid after a School Fee Reminder call or link). No recovery, no fee — the merchant always nets positive, and the dashboard's dues recovered + recovery rate tiles make the ROI obvious.
Ready-made agents it ships
A polite, non-judgmental fee-collections agent that calls parents in their own language, gives a gentle reminder of the overdue installment, captures a promise-to-pay, negotiates an EMI/part-payment when money is tight, explains the UPI/EMI payment link, and routes fee disputes to the accounts desk.
What your agents can do with it
Look up the parent's current fee installment by phone number — read back the student name, amount due, balance and how many days it is overdue before speaking.
Record a promise-to-pay when the parent commits to a date and an amount (or an EMI part-payment). Use this whenever they agree to pay 'by' some date.
Mark the parent's fee installment as PROMISED once they commit to a pay-by date. Pair this with capture_promise so the reminder cadence pauses until the promised date.
Mark the parent's fee installment as PAID after they confirm the payment went through (e.g. they paid on the UPI link during the call). Stops all further reminders.
Data it manages
Permissions it requests
Apps run inside your workspace under least-privilege scopes you can see up front. This app asks for:
objects:studentobjects:fee_installmentobjects:promiseobjects:paymentagents:readcalls:initiatecalls:readai:llmwhatsapp:sendcampaigns:readuser:profileWhat's new in v1.1.0
Changelog
1.1.0 — 2026-07-12
- Renamed to School Fee Reminder (business-friendly) with a marketplace icon.
- Added real UI screenshots (dashboard + key pages).
- The auto-reminder call now carries the accounts-desk number so the agent can hand off disputes.
- Verified end-to-end loop closure: trigger → workflow → call → agent tools → write-back → dashboard.
1.0.0
- Initial release.
- Data model:
student(name, parent, phone, course, status),fee_installment(student, phone, amount, due date, overdue days, balance, status) withoverdue/promised/paidsaved views,promise(phone, student, promised date, amount), andpayment(phone, student, amount, paid_at). - Agent tools (declarative):
find_installment,capture_promise,mark_promised,mark_paid. - Bundled agent: Fee Reminder Agent — a Sarvam vernacular multi-context flow (deterministic
find_installmentlookup → polite reminder → capture promise / negotiate EMI) auto-wired to the tools and the fee playbook. - Knowledge base:
fee-playbook— polite before/on/after dunning cadence, EMI / part-payment negotiation, explaining the UPI/EMI link, and routing disputes to accounts. - Automation:
sis_webhookinbound hook (upserts installments, deduped on phone) andrazorpay_paidinbound hook (HMAC-verified viax-razorpay-signature);fee_reminderworkflow (delay ~3 days → outbound reminder call);fee_wa_nudgeworkflow (gentle WhatsApp reminder + UPI/EMI link);payment_haltworkflow (payment → mark the installment paid, stopping the cadence). - Dashboard UI: KPI tiles (outstanding dues, dues recovered + recovery rate, DSO / avg overdue, promises, in-cadence), a cadence-status mix bar, most-overdue installments, and upcoming promises; also renders into the
dashboard_widgetslot in compact form. - Installments page: status filters, search, and per-installment Call now (passes student context variables to the agent).
- Promises page: every captured promise-to-pay, sorted by date, with overdue-promise flags and a one-tap follow-up call.
- Setup page: configuration checklist + one-click Create fee reminder agent and post-install wiring steps.
- Self-seed: a fresh install auto-loads six realistic students + installments (across due / promised / paid) and two promises-to-pay (removable) so the dashboard is populated on first open.
Publisher
Marketplace publisher · app reviewed by Telenow before listing.
Your data, your keys
Secrets, carrier credentials and API keys stored AES-GCM encrypted; TLS in transit; HMAC-signed webhooks.
Strict per-organization data isolation with role-based access for every member.
Every mutating action is logged and filterable, with CSV export for your records.
In-app DLT / regulatory flows, TCPA calling windows, and org-wide Do-Not-Call enforcement.
Install School Fee Reminder
Sign up free and get ₹300.00 in credit — no card required. Connect your number, pick a template, and go live in minutes.
