When a school discovers its fee income does not match its expectations, the first assumption is usually theft.
It is almost never theft. It is a proprietor who approved a fee reduction verbally in September that nobody wrote down. It is a parent who overpaid by GHS 200 in a way that got absorbed into the current bill and never appeared again. It is a payment entered against the wrong child, then deleted and re-entered, leaving no trace of either action. It is a refund handed over in cash against a note in a book that has since been lost.
Each of these is small. Across a term, across several hundred children, they add up to a number nobody can explain.
This is a guide to the three places school money leaks quietly, and how to make each one visible.
Leak one: discounts nobody can see
Almost every Ghanaian school gives fee reductions. Staff children, siblings, hardship cases, a bursary for a strong student, a negotiated arrangement with a family going through something. This is normal and often admirable.
The problem is how it gets recorded, which is usually by simply charging less.
A child whose fees are GHS 1,500 is billed GHS 1,000 because the proprietor agreed to it. The bill says GHS 1,000. Nothing anywhere says GHS 500 was forgiven, or why, or who approved it.
Three things follow from that.
You cannot report on it. When the board asks how much the school gave away in scholarships last year, the honest answer is that nobody knows. The information was never captured, only applied.
It becomes permanent by accident. A reduction agreed for one difficult term carries into the next because the lower figure is now simply what that child is billed. Nobody revisits it because nobody remembers it was a decision.
It cannot be distinguished from an error. A bursar looking at a GHS 1,000 bill in a class where everyone else is billed GHS 1,500 cannot tell whether that is an approved discount or a mistake, and will usually leave it alone rather than ask.
The fix is to record the discount rather than the reduced total. The bill shows the full GHS 1,500 charge, then a discount line of GHS 500, then a balance of GHS 1,000. The parent sees what they are actually being given, which is worth something in itself. The school can report total discounts by term, by class or by child. And an unusual figure is legible rather than mysterious.
Leak two: overpayments with nowhere to go
A parent pays GHS 2,000 against a GHS 1,800 bill. Perhaps they rounded up, perhaps they were paying ahead, perhaps they misremembered the amount.
There are three ways schools handle this, and two of them are wrong.
Absorbed into the bill. The bill is marked as paid GHS 2,000 against GHS 1,800. The ledger now says a bill was overpaid, which no report knows what to do with, and the GHS 200 is effectively invisible.
Written in a book. Somebody notes that this family is GHS 200 in credit. It survives exactly as long as the book and the person who wrote it.
Recorded as a credit. The GHS 200 becomes a record attached to the child, with an amount and a remaining balance, which is applied against their next bill automatically and can be refunded if they leave.
Only the third survives a change of bursar.
Credits need a little more structure than they first appear to. A credit gets partially consumed, so it needs a remaining balance rather than a single amount. It gets fully consumed, so it needs a status. It sometimes needs reversing when the payment that created it turns out to be wrong, so the application needs to be undoable rather than baked in.
And it needs resolving when a child leaves, which is where most schools have their worst conversations. A family withdrawing a child who is owed GHS 200 they had forgotten about will remember it precisely at the moment they are asked to settle arrears.
Leak three: corrections that erase the evidence
The third leak is not about money at all. It is about how mistakes get fixed.
A payment is entered against the wrong child. The obvious fix is to delete it and enter it correctly. Almost every system allows this, and it is the wrong behaviour for a school.
Deletion destroys the record of what happened. If a parent later disputes what they paid, there is nothing to point at. If two payments were entered and one deleted, no report will ever show it. And most importantly, a payment recorded and then deleted is the exact shape of the most common form of school finance fraud: a payment taken in cash, entered so the parent sees a receipt, then removed once nobody is looking.
The alternative is to void rather than delete. The original stays. A void record sits alongside it with a reason and the name of whoever did it. Reports exclude voided payments from income but the history remains. Refunds are their own records rather than negative payments, so that money actually leaving the school is distinguishable from a correction.
Nothing about this makes daily work harder. It makes one specific thing impossible, which is the point. We go further into this in how school records get quietly changed, and how to catch it.
The reports that make leaks visible
Once discounts, credits and voids are recorded properly, four questions become answerable in a page rather than a week.
How much did we forgive this term? Total discounts, by class and by child. Most schools are surprised by this number the first time they see it, usually because reductions accumulated one reasonable decision at a time.
Who is holding credit? Children with unapplied balances. Worth reviewing before term-end billing rather than after a parent asks.
What actually came in? Cash received, by method, with refunds netted off. Gross receipts flatter the picture; net is what the school can spend.
What was voided, and by whom? Not because you expect to find fraud, but because a void report that nobody ever looks at provides no deterrent, and one that is reviewed monthly provides a great deal.
Four rules worth adopting
Record the charge and the discount, never just the reduced total. If it is not a line, it is not reportable.
Give every discount a reason and an approver. "Staff child" and "Proprietor, September" are enough. It takes five seconds and it is what makes the annual review possible.
Never delete money. Void it, with a reason and a name.
Resolve credits when a child leaves. Refund or offset, but decide, and record which.
How SwiftSapp handles it
Discounts are recorded as their own line items against a bill rather than by lowering the total, so a bill shows the full charge and the reduction separately. A discounts view lists every student receiving one for a term, what they received and the total the school has given away, and discounts cannot be added to a term that has already closed.
Overpayments become credits held against the child with an amount and a remaining balance, tracked as open or exhausted, applied to later bills automatically, and reversible if the payment behind them is voided. Credits can be refunded to the guardian, with the refund kept as its own record rather than as a negative payment.
Payments are voided rather than deleted, keeping the original alongside the void, the reason and the person responsible. Refunds work the same way and can themselves be voided. When a student leaves, credits and discounts are resolved explicitly rather than being stranded on a closed record.
Debtors, cash received with refunds netted off, and per-class collection reports export to PDF and Excel, and every one of these actions is recorded against the person who performed it.
If your fee income does not reconcile and you have been assuming the worst, book a demo. It is usually discounts. For the collection side of the same problem, see how to automate school fee collection with mobile money and USSD.