Schools are the paybill use case, full stop. Fee collection is per-child, splits across termly instalments, must survive class promotions, and needs to feed into an MOE-facing report at year-end. Anything without an account reference (till, Pochi) fails on the first payment. This guide covers private and public schools, primary and secondary, day and boarding. For higher education, see the universities hub and specific institution guides.
What a school actually needs from M-PESA
- Per-pupil account references. Admission number is the primary key.
- Term-based, instalment-friendly collection. Parents pay across weeks; the balance rolls forward.
- Sibling handling. One parent, multiple children. Each pays to its own admission number.
- Sub-ledger splits. Tuition, uniform, boarding, transport, activities. Different sub-accounts, same paybill.
- KRA and MOE reporting. Termly returns to the Ministry of Education, monthly returns to KRA if VAT-registered on ancillary services.
- Bulk reconciliation. A term ends with hundreds of thousands of shillings coming in over a few days. The finance office needs downloadable statements, not phone-app browsing.
Recommended setup: paybill, always
- Private school. Register a dedicated paybill via m-pesaforbusiness.co.ke or a Safaricom Business Rep. Approval usually needs your MOE registration certificate on top of the standard KRA + bank + permit set. See how to get a paybill (2026).
- Public school. Use eCitizen paybill 222222 with your assigned school code. No separate application needed; the school code is issued via the MOE. This routes fees through the Treasury single-account, in line with the government consolidation directive.
- University or college. Same as private school (dedicated paybill), often integrated with the student portal. See existing per-institution paybill guides for the exact numbers.
- Never use a Buy Goods till or Pochi for fee collection. The account-reference gap is fatal.
Charges you will actually pay
On paybill, the parent (sender) pays a tiered fee up to KES 108 for large tickets. The school (merchant) also pays a tiered Lipa na M-PESA fee, capped at KES 108. Full band- by-band table in M-PESA charges 2026.
For a typical KES 25,000 termly instalment: the parent pays KES 108 send fee and the school pays KES 108 merchant fee. On a full termly bill of KES 60,000, most parents split into 3 to 5 instalments, so total fees per pupil per term are roughly KES 300 to KES 500 on each side.
Setup steps
- Gather MOE registration, KRA PIN, county permit (or MOE letter), and the school's bank-account details.
- Apply for a paybill through m-pesaforbusiness.co.ke or a Safaricom Business Rep. Specify "School fees collection" as the use case.
- Sign the Lipa na M-PESA merchant agreement and provide the settlement bank account (must be in the school's registered name).
- Configure the account-reference validation rule with Safaricom: accept admission numbers matching your format (e.g. six digits starting with the year).
- Publish the paybill number and instructions in the fee statement, on the school website, and in the WhatsApp broadcast to parents.
- Test with a KES 100 dummy payment to a real admission number before circulating.
Reconciliation notes specific to schools
- Admission number, not name. Parents will mistype names. Admission numbers are shorter and easier to enforce with a validation rule. Reject payments with malformed references (Safaricom validation URL returns an error and prevents the debit).
- Sub-account tagging. Format:
ADM1234-TUIT,ADM1234-UNIF. The finance system splits by suffix. - Bulk statement download. Pull the paybill statement CSV weekly through the term, daily in the last two weeks. Import into your fee-management software (Zeraki, School Manager, Sage, custom).
- Balance SMS to parents. Weekly automated SMS with the current outstanding balance. Cuts end-of-term escalations by more than half.
- Reversals. Parents pay to the wrong admission number surprisingly often (a family with three kids). Reverse via the M-PESA Business app or *234#, then credit the correct pupil.
Common problems and how to fix them
- Parent paid but bursar cannot find the payment. Ask for the M-PESA confirmation SMS with the transaction ID. Search the statement by transaction ID (not by name). Nine times out of ten it landed but was posted to the wrong admission number.
- Parent paid to eCitizen 222222 for a private school. This is a public-school-only paybill. The money bounces or goes into an unreconciled Treasury holding account. Educate the parent on the correct private-school paybill and coordinate a refund.
- Two children, one paid twice. Reverse the duplicate, credit the sibling. Or split the payment across the two admission numbers if the amount matches.
- Bulk parent-day payments overwhelm the finance desk. Enable STK Push from the parent portal so the reconciliation is done automatically at credit time, not manually at the desk.
- End-of-term audit. Match total paybill credits to total fee-schedule invoices. Any variance is either an unallocated payment (parent used the wrong reference) or a fee-schedule error.
KRA, MOE, and eTIMS for schools
- Tuition is generally VAT-exempt for licensed education providers.
- Ancillary services (uniform sales, transport, boarding, canteen) may be VAT-able. eTIMS invoices required on those lines.
- PAYE, NSSF, SHIF, and Housing Levy apply to all teaching and non-teaching staff.
- MOE termly returns require declaration of fees collected and enrolment. The paybill statement is the primary supporting document.
- Public schools report through NEMIS and the eCitizen collection reconciles at the Treasury level.
Worked example: a 900-pupil private primary, KES 12M term
A well-run private primary in Kiambu with 900 pupils, KES 12,000 average termly tuition, plus uniform and trips lines. The paybill snapshot for one term:
| Fee line | Term amount | Tickets | Customer fee / ticket | Merchant fee / ticket | Total school-side M-PESA cost |
|---|---|---|---|---|---|
| Termly tuition (900 pupils x KES 12,000) | KES 10,800,000 | 900 | KES 108 | KES 108 | KES 97,200 (school side) |
| Uniform (300 pupils x KES 3,500) | KES 1,050,000 | 300 | KES 55 | KES 55 | KES 16,500 (school side) |
| Trips + activities (400 pupils x KES 2,000) | KES 800,000 | 400 | KES 32 | KES 32 | KES 12,800 (school side) |
| Total | KES 12,650,000 | 1,600 | KES 126,500 / term |
School-side M-PESA cost is about 1 percent of collections. If parents split the termly bill into three instalments instead of one, tickets triple and the fee line roughly triples too, so it pays to encourage a single settlement where the family cash flow allows.
More business rail guides
Curated external sources we cite. Open in a new tab.
M-Pesa Paybill Calculator
Calculator focused on Paybill transactions specifically.
mpesa.or.ke · calculator
Fuliza for Business Calculator
B2B Fuliza fees for merchants who use Fuliza for Business.
mpesa.or.ke · calculator
M-Pesa Bulk Payments Calculator
B2C bulk-disbursement fees for businesses paying many recipients.
mpesa.or.ke · calculator
See also: Universities and colleges hub · M-PESA for online businesses · Business hub.