Most Kenyan schools now collect the majority of their fees through M-Pesa. The cleanest setup is a Paybill number with the student's admission number as the account reference — it tells you exactly who paid — backed by a Till for small walk-in payments and STK Push for payments your bursar initiates. The hard part is never collecting the money; it's matching the M-Pesa statement to each student's fee account without spending every Friday evening in a spreadsheet.
The three ways parents pay your school with M-Pesa
Safaricom offers schools three distinct M-Pesa products, and they are not interchangeable. Choose the wrong one and you will spend the whole term reconciling payments you cannot easily match to a student. Choose all three in the right roles and fee collection becomes almost self-running.
| Product | Who pays the fee | Identifies the student? | Best for |
|---|---|---|---|
| Paybill (6–7 digit) | The parent pays a small M-Pesa fee | Yes — via the account number field | Fee collection with a student reference |
| Buy Goods Till (5–7 digit) | The school pays ~0.5%, capped at KES 200 | No — there is no account number field | Walk-in, over-the-counter payments |
| STK Push (M-Pesa Express) | Depends on your shortcode and agreement | Yes — your system passes the reference | Payments your bursar initiates from the fee portal |
M-Pesa products available to Kenyan schools and where each one fits. Fee structures are Safaricom's published 2026 tariffs and can change.
Paybill: the workhorse for school fees
A Paybill number is a 6–7 digit business number. When a parent sends money, they enter your Paybill and then an account number — and that account number is your student's admission number. Because the reference is structured, the payment can be matched to a student's ledger automatically. The parent pays a small M-Pesa fee (for example KES 10 on KES 1,000 and KES 62 on KES 20,000), and your school receives the full amount. Schools serving a regulated role can apply to Safaricom for zero-rating so parents pay no fee at all.
Buy Goods Till: fast, but hard to reconcile
A Till number is built for point-of-sale. The customer pays nothing — your school absorbs about 0.5% of each transaction, capped at KES 200, with payments under KES 200 free. The problem for schools is that a Till has no account number field. The parent's name and phone number appear on the statement, but not which student the payment is for, which sibling it covers, or which term's fees it clears. Use a Till for genuine walk-in payments — a parent buying a uniform or paying a transport top-up at the front desk — not for tuition.
STK Push: when your bursar initiates the payment
With STK Push (M-Pesa Express), your fee portal calls Safaricom's Daraja API and a payment prompt pops up on the parent's phone. They enter their PIN and you receive a confirmation callback the moment it completes. Because your system generates the request, it already knows which student and which invoice it relates to — the reconciliation problem disappears. It is the smoothest experience for parents and the easiest to record, and it's what parents increasingly expect after paying for electricity, water and goods the same way.
Why reconciliation, not collection, is the real problem
Most Kenyan schools already collect fees by M-Pesa. The problem starts on the 1st of the month when the bursar opens the M-Pesa statement: a long list of names, phone numbers and amounts, with narrations like 'fees' or nothing at all. Matching each entry to the correct student — across siblings in different classes, partial payments, and second-term arrears — is manual, error-prone work that consumes days of every term. The longer it takes to spot a missing payment, the later the reminder goes out, and the more parents learn that delaying costs them nothing.
KES 10
M-Pesa fee on KES 1,000
Parent pays; school receives full amount
0.5%
Buy Goods merchant fee
Capped at KES 200 per transaction
KES 200
Free band on Tills
Payments below this cost the school nothing
How to reconcile M-Pesa payments without the spreadsheet marathon
EduPilotPro records every M-Pesa payment against the right student's fee account. Your bursar enters the M-Pesa transaction — or works down the day's statement entries — and the system stores it under the mobile wallet payment type alongside cash and bank deposits, posts it to the student's ledger, issues the receipt, and moves the student's fee balance. Oldest unpaid fees are cleared first, so a part payment meant for second term cannot silently sit against an older, unrelated balance.
- Record each M-Pesa transaction against the student's fee account — the same audit trail as cash or bank
- Auto-generated receipt and updated fee statement the moment the payment is posted
- Clear payment status per student — paid, part-paid, overdue — visible to the bursar at a glance
- SMS reminders to parents whose fees are still outstanding, on a schedule your school sets
£84,200
Collected
£12,400
Pending
£3,100
Overdue
Set your school up for smooth M-Pesa collection
- Open a Paybill number and use the student's admission number as the account reference. Keep it for tuition.
- Keep your Till for genuine walk-in payments, and know its ~0.5% merchant fee is part of the cost of those transactions.
- Publish a one-page 'How to pay fees' sheet: Paybill number, account number = admission number, and a clear note that the parent must enter the correct student number.
- Train the bursar to post every M-Pesa payment the same day, so the fee ledger and the bank statement never drift apart.
- Turn on reminders so overdue fees prompt the parent automatically instead of being chased by phone.
Pro Tip
The single biggest lever is the 'How to pay fees' sheet. Parents who are unsure which reference to enter default to whatever looks right — and that is how a payment lands on the wrong student or the wrong term. When the sheet says 'admission number = account number', the correct reference becomes the path of least resistance.
Honest about integrations
EduPilotPro currently records M-Pesa payments the same way a bursar records cash or a bank deposit — you post the transaction from your M-Pesa statement and it updates the student's fee account. We don't claim a live Daraja webhook that auto-imports every payment. The record-keeping, reconciliation and reminders are automated; entering the statement entry is still part of your bursar's daily routine.
The Bottom Line
Kenyan parents are already paying everything else with M-Pesa — your school should make paying fees just as easy. Pick the Paybill + student reference route for tuition, keep a Till for walk-ins, use STK Push where your bursar initiates the payment, and make sure every M-Pesa entry lands on the right student's ledger the same day. The schools that win on fee collection are not the ones with richer parents; they are the ones whose parents find paying trivially easy and whose bursars never have to guess who paid.