Skip to content
mimiao
7 min read

Tracking Student Payments and Debts in a Language School Without Spreadsheets

Track payments, prepaid lesson balances and student debts without spreadsheets — invoices, a one-click debtors view and why an append-only ledger matters.

The question “who owes what” feels simple while the school is small. Ten students, and you hold it all in your head. Forty, and you’re no longer sure whether Olia topped up for that rescheduled lesson or not. A hundred, and you dread opening the spreadsheet before a reconciliation, because you never know what broke in it today.

Money is not the part of a school where “roughly right” is good enough. Undercount, and that’s revenue you simply didn’t collect. Mix things up, and it’s an awkward conversation with a parent who is certain they paid. So let’s lay out what healthy payment and debt tracking actually looks like — without spreadsheets, without the stress, and without “let me check and call you back.”

First, let’s agree on the words

It’s easy to tangle the terminology of school finances, so let’s pin down three things.

An invoice is a record that says “this student should pay this much for that.” Issue an invoice for 8 lessons and an obligation now exists. Until it’s paid, it’s a potential debt.

A lesson balance is prepayment, expressed in lessons. A student paid for 8 sessions and has attended 3 — five remain on the balance. For a language school, this is the most natural unit of all, because lessons are what you actually run, not abstract sums.

Debt is when lessons have already been delivered but the money for them hasn’t arrived. A student attended 10 sessions but only paid for 8 — they’re two lessons “in the red.” Debt is always counted per student, never per group: in a group of six kids, five can be in credit and one in debt, and that’s completely normal.

If those three concepts are all crammed into a single “payment” column, that’s where most of the confusion comes from.

Prepaid balances: count lessons, not money

The most common mistake is tracking in currency where it’s far more natural to track in lessons.

Picture this: a student bought a package of 8 sessions. Then one lesson got rescheduled, one was cancelled with a day’s notice, and one was cancelled an hour before (and you have a rule that late cancellations are charged). If you keep everything in currency, at month-end you’re sitting with a calculator reconstructing how many sessions actually “burned.”

When tracking happens in lessons, it’s all simpler: a session is delivered, minus one from the balance; the late-cancellation rule fires, also minus one; a clean reschedule leaves the balance untouched. At any moment the student sees “5 lessons left,” and you see who needs a top-up reminder before they ever go negative.

That’s the real advantage of balances: they work ahead of time. Debt is already the consequence. A balance is the warning.

Invoices you never have to print

An invoice for a language school shouldn’t be an official stamped document. Its only job is to make it clear what the parents are paying for and let them pay in two taps.

A healthy flow looks like this: you issue an invoice (say, for the next 8 sessions), the student or parents get a link via Telegram or email, open it, see the amount and what it’s for — and pay by card through a familiar payment provider. The money lands, the balance tops up automatically, the invoice is marked paid. Nobody reconciled anything by hand.

It’s also worth accounting for cash and bank transfers separately. Those payments need to land in the system too — an admin simply marks “received in cash” and the balance updates the same way. Otherwise part of your money lives in the system and part lives in a notebook, and you’re back to reconciling two sources.

A debtors view in one click

Here’s a practical test of how mature your tracking is: how long does it take to answer “who owes us right now?”

In a spreadsheet, that’s 15 minutes of filters, scrolling, and doubting whether every row is current. In a proper system, it’s a single screen: every student with a negative balance, the amount owed, how many days it’s been outstanding, the last contact. Sort by amount, and in ten minutes you’ve called or messaged your top 10 debtors — instead of spending that time figuring out who to message in the first place.

This is exactly how it’s built in Mimiao, for example: a dedicated debtors list that assembles itself, with no manual rollup. Not because it’s magic — but because when balances and payments live in one system, that list is just a query over the data, not manual labour.

This screen changes how the school behaves. When debtors aren’t buried in the depths of a spreadsheet but right in front of you, you start working through them systematically: not “oh, I think someone owes us,” but a calm ten-minute weekly routine.

Why an append-only ledger matters

Now the most important part — and the least obvious. Ask yourself: what happens to a financial record when someone makes a mistake?

In a spreadsheet, the answer is simple and frightening: the record gets overwritten. “Paid 2000” becomes “paid 1500,” and the previous value no longer exists. Google Sheets version history doesn’t save you here: that’s a backup of the file, not an answer to “who changed this specific payment, when, and why.”

A healthy financial system works differently — on the principle of a ledger that is only ever appended to (append-only). That means records are never edited or deleted. Got an amount wrong? You don’t erase the old line — you add a correcting entry. The result is that the full history is always visible: here’s the payment, here’s the correction, here’s who made it and when.

Why does a school need this, not just a bank? For three very down-to-earth reasons:

  • Disputes with parents. “But we paid!” — and in a second you show the full transaction history for that student instead of straining to remember.
  • Protection from accidents and abuse. Nobody can quietly “adjust” a debt after the fact in a way that erases the trail. The trail always stays.
  • Calm reconciliations. The totals always match the transaction history, because they’re derived from it rather than living separately.

That leads to one simple requirement for any finance module: no money record can be quietly overwritten or erased. You can only add a new entry that explains the change. If a tool lets you edit payments “in place” with no trace, that’s not bookkeeping — it’s a draft.

Where to start right now

Even if you’re still in a spreadsheet, a few principles can go in today:

  1. Split the three columns — invoices (obligations), balances (prepayment in lessons), and debts (the red). Don’t merge them into one “payment.”
  2. Switch to tracking in lessons wherever you sell packages. Keep currency for one-off services.
  3. Build a weekly habit of looking at debtors — even if it’s a manual filter for now, make it regular.
  4. Never erase old amounts. Fix a mistake with a new annotated line, not a replacement — that’s your manual stand-in for an append-only ledger.

And when the school grows to the point where holding those four points by hand gets hard, that’s the signal that payments, balances, and debtors should live in one place and count themselves.

If you’d like to see what this looks like in practice, take a look at the finance features page — it shows how invoices, balances, and debtors come together on one calm screen.

← All posts