Kenyan schools use bulk SMS for the messages parents cannot miss: fee balances with the M-Pesa paybill and account number, opening and closing dates, half-term and academic days, and notices that report forms are ready. SMS reaches every parent on Safaricom, Airtel and Telkom, including those on basic phones, and a personalised fee message sent from the bursar's spreadsheet saves days of phone calls at the start of each term.
Last reviewed: 27 October 2026
This guide is written for head teachers, bursars and school administrators in primary, secondary and private schools. It covers what to send over a term, sample messages in English and simple Kiswahili, the data protection rules that apply to schools, and how to send personalised fee balances from a spreadsheet or your school management system.
What a Kenyan school sends over one term
The Kenyan school year runs in three terms, and the same messages come up every term. Planning them once saves the scramble on closing day.
- Before opening: opening date and reporting time, fee structure reminder, list of requirements, boarding reporting arrangements.
- Weeks 1 to 3: personalised fee balances with the paybill and account number, then a receipt every time a payment arrives.
- Mid-term: half-term dates, academic or prize-giving days, parents' meetings, trips that need consent forms.
- End of term: closing date and pick-up time, report forms ready for collection or online, balance carried forward, next term's opening date.
- Any time: unplanned closures, transport changes, weather or security notices. These are the messages where speed matters most.
National exam results are a special case. KNEC no longer sends KCSE results by SMS: for the 2025 KCSE, candidates checked results only on the KNEC results portal, as reported by Capital FM and AllAfrica in January 2026. Schools can still help by texting parents when results are released and pointing them to the portal and the school's own results day.
Fee balances and M-Pesa paybill messages
Most Kenyan schools collect fees through an M-Pesa paybill or a bank paybill, with the student's admission number as the account number. A fee reminder works only if it carries the three facts a parent needs at the M-Pesa menu: the paybill number, the account number and the amount. Leave out any of those and the parent calls the bursar instead.
Good practice for fee messages:
- Personalise every message. "Fee balance for Brian (Adm 4471) is..." is far clearer than "Kindly clear outstanding fees". Personalised messages come from a spreadsheet with merge fields, covered below.
- Use the admission number as the account reference in the message itself, so payments match the right student and the bursar does not have to reconcile by name.
- Confirm every payment. A short receipt SMS with the amount received, the admission number and the new balance ends most fee disputes. If you collect on your own paybill, you can trigger the receipt from the M-Pesa confirmation callback; our Daraja C2B receipt tutorial shows how.
- Keep the tone factual. Never threaten to send a child home in an SMS, and never send a balance to anyone other than the parent or guardian on record.
Sample messages for Kenyan schools
All of these name the school, fit in one 160-character segment and give a contact number. Kilele Hills is a fictional school; use your own name and numbers.
| Purpose | Message |
|---|---|
| Opening date | Kilele Hills School: Term 1 opens Mon 4 Jan 2027. Boarders report 8am to 1pm. Fees and list of requirements on the portal. Queries 0700000000 |
| Fee balance | Kilele Hills School: Dear Mrs Achieng, fee balance for Brian (Adm 4471) is KES 12,400. Pay via M-Pesa Paybill 5xxxxx, Account 4471. Queries 0700000000 |
| Payment receipt | Kilele Hills School: Received KES 6,000 for Faith (Adm 4502) on 12/01. New balance KES 0. Thank you. |
| Half-term | Kilele Hills School: Half-term break Thu 18 Feb to Mon 22 Feb. Learners resume Mon 22 Feb by 5pm. Transport details sent separately. |
| Academic day | Kilele Hills School: Academic Day Sat 6 Mar, 9am. Meet your child's teachers and collect the mid-term report. Lunch provided. |
| Closing and reports | Kilele Hills School: Term 1 closes Fri 2 Apr, pick-up from 11am. Report forms available on the parent portal from 3 Apr. |
| Emergency notice | Kilele Hills School: Due to heavy rain the school bus will not run today. Day scholars may stay home. Updates by SMS at 10am. |
| Kiswahili notice | Shule ya Kilele Hills: Mzazi, shule itafunguliwa Jumatatu 4/1/2027. Wanafunzi wafike kati ya saa mbili asubuhi na saa saba mchana. Maswali 0700000000 |
Kiswahili fits the standard GSM alphabet, so a Kiswahili notice still holds 160 characters per segment. Many schools send the English and Kiswahili versions as two separate messages rather than one long bilingual message, which would cost two or three segments for every parent.
The rules that apply to school SMS
ODPC registration is mandatory for schools
The Data Protection Act, 2019 requires data controllers and processors to register with the Office of the Data Protection Commissioner (ODPC). Small organisations can be exempt, but the ODPC's registration guidance lists education among the sectors that must register regardless of turnover or number of employees. A parent contact list, admission numbers and fee balances are personal data, so a school that sends SMS should have its registration in place and its privacy notice up to date.
Children's data needs extra care
Section 33 of the Act says a child's personal data may only be processed with the consent of a parent or guardian and in a way that protects the child's best interests. In practice:
- Send messages to the parent or guardian on record, not to learners' own phones.
- Collect the SMS contact on the admission form, with one line explaining that the school will use it for fees, dates, reports and emergencies.
- Keep sensitive details out of SMS. Phones are shared in many households, so health matters, discipline cases and exam scores belong in a call or a meeting, not a text.
- Never pass parent numbers to uniform suppliers, tuition centres or insurers without explicit consent.
Transactional and promotional sender IDs on Safaricom
Safaricom's 2020 notice to bulk SMS providers split sender IDs into promotional and transactional types. Transactional messages, which include billing reminders and service notices, have no time restriction and need no opt-out instruction. Promotional messages must carry opt-out instructions and can only be sent between 08:00 and 18:00. Fee balances, opening dates and closure notices are transactional. A message advertising next year's admissions to people who are not yet parents is promotional, needs consent and belongs on a separate sender ID. Our guide to promotional vs transactional sender IDs on Safaricom explains the difference in detail.
Sending personalised fee balances from a spreadsheet
You do not need a developer to send personalised messages. Most school management systems and bursar spreadsheets can export one row per student with the parent's phone number, the student's name, the admission number and the balance.
- Export the list to CSV or Excel. Phone numbers can be in 07... or +254 format.
- Upload it in the eSMS dashboard at sms.esmsafrica.io and map the columns to merge fields such as name, student, adm and amount.
- Write the message once with the merge fields, preview a few rows and check the character count.
- Schedule the send for a weekday morning, when parents are most likely to act on it.
- Check delivery reports afterwards and update numbers that failed before the next send.
If your school system has developers behind it, the same send is a single API call. Each recipient gets their own values, and delivery reports come back by webhook:
curl -X POST https://sms.esmsafrica.io/api/messages/send-bulk \
-H "Authorization: Bearer esms_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"sender_id": "KILELEHILL",
"text": "Kilele Hills School: Dear {{name}}, fee balance for {{student}} (Adm {{adm}}) is KES {{amount}}. Pay via M-Pesa Paybill 5xxxxx, Account {{adm}}. Queries 0700000000",
"recipients": [
{"to": "+254712000001", "name": "Mrs Achieng", "vars": {"student": "Brian", "adm": "4471", "amount": "12,400"}},
{"to": "+254722000002", "name": "Mr Kiprono", "vars": {"student": "Faith", "adm": "4502", "amount": "6,000"}}
]
}'
Use a test key (esms_test_...) first: it simulates the send without charge, so you can check merge fields before any parent receives a message. The HTTP API docs cover scheduling and webhooks, and the SMS API for Kenya page has more examples.
Two features help in schools in particular. Campaign approvals and team roles let a class teacher draft a message while the head teacher or bursar approves it before sending. The opt-out list blocks any number a parent has asked you to stop, across every campaign, so a former parent does not keep receiving fee reminders.
What it costs
SMS to Kenyan networks is pay as you go, from KES 1.08 (about $0.0083) per message on the basic tier, with no monthly minimum and no setup fee. Larger schools sending every week may qualify for the business tier at KES 0.9. Each 160-character segment is billed separately, so tight messages matter when you send to a thousand parents. Top up by card or M-Pesa. To have messages arrive as your school's name instead of a generic sender, register a sender ID; the fees and steps are on the Kenya sender ID page.
School SMS checklist
- Confirm your ODPC registration covers the school's data processing.
- Collect parent phone numbers and SMS consent on the admission form.
- Register a transactional sender ID in the school's name.
- Write the term's messages in advance: opening, fees, half-term, academic day, closing.
- Include the paybill, the admission number as account and the amount in every fee message.
- Send a receipt for every payment.
- Keep health, discipline and exam scores out of SMS.
- Use approvals so only authorised staff can send to all parents.
- Clean failed numbers after every send and update contacts each January.
Frequently asked questions
Can a school send fee reminders without asking parents first?
Fee balances and school notices are part of the service a parent signed up for at admission, so they are transactional messages, not marketing. Record the parent's number and SMS preference on the admission form anyway, and honour any request to stop non-essential messages.
Can we send KCSE or KPSEA results to parents by SMS?
KNEC no longer sends KCSE results by SMS and directs candidates to its results portal. A school can text parents that results are out and invite them to a results meeting. Avoid sending individual scores by SMS, since phones are often shared.
Should messages be in English or Kiswahili?
Use the language your parents read most comfortably. Many schools send English by default and Kiswahili for notices that every family must understand, such as closures. Kiswahili fits the standard SMS alphabet, so the cost per segment is the same.
Can parents reply to our messages?
Not to an alphanumeric sender ID such as the school's name. If you want replies, for example to confirm attendance at a meeting, add a two-way short code; replies arrive in your dashboard and by webhook.
Sources
- ODPC - Guidance Note on Registration of Data Controllers and Data Processors (PDF)
- Kenya Law - Data Protection Act, 2019
- AllAfrica / Capital FM - How to access your 2025 KCSE results as SMS service scrapped (January 2026)
- KICTANet - Safaricom notice on promotional and transactional sender IDs (2020)
- eSMS Africa - HTTP API documentation
See more school message flows on our school and university SMS page for Kenya, compare with how Ugandan schools send fee reminders and read the weekly church SMS plan for another term-based schedule. Check pricing, then create a free eSMS Africa account and send a test message to your own phone.


