eSMSAfrica
Mobile money & fintech · Kenya

SMS and OTP for fintechs in Kenya

Kenyan fintechs live on two flows: a one-time code that arrives within seconds at sign-up, and a payment confirmation the customer trusts. eSMS Africa handles both. Use eSMS Verify for codes, and send your own branded receipt the moment the M-Pesa Daraja confirmation callback reaches your server.

Safaricom, Airtel, Telkom Delivery reports From KES 1.08 per SMS
PESAFYOTP
Your Pesafy code is 482913. It expires in 5 minutes. Pesafy staff will never ask for this code.
95 chars · 1 segment · GSM-7
Kenya context

What makes mobile money & fintech messaging different in Kenya

  • M-Pesa sends the customer its own confirmation, but businesses that collect through a paybill or till receive the payment details through the Daraja C2B confirmation callback and can send a branded receipt that names the order or account.
  • Digital credit providers are licensed by the Central Bank of Kenya under the Digital Credit Providers Regulations, 2022, which came after years of complaints about debt-shaming by lending apps.
  • Safaricom carries most Kenyan mobile subscriptions, so the way it handles your sender ID matters. OTPs and payment alerts belong on a transactional sender ID, which has no time-of-day restriction.
  • Customers in Kenya are used to scam texts that imitate M-Pesa messages. A consistent sender ID and a fixed message format help them recognise your genuine messages.
What to send

Messages mobile money & fintech teams in Kenya send

Sign-up and login OTP

Call the Verify API when a customer registers or logs in from a new device. eSMS generates the code, sends it, limits retries and checks the answer, so you do not store codes yourself.

Branded payment receipts

When the Daraja confirmation callback arrives, look up the customer by account number and send a receipt with your brand, the M-Pesa transaction code and what the payment was for.

Repayment reminders

Remind borrowers before a loan is due with the exact amount, the paybill and the account number, and confirm each repayment as it posts. Address messages only to the borrower.

Wallet and card alerts

Notify customers of withdrawals, transfers, PIN changes and card transactions in real time, with a short support number for anything they did not authorise. Fast alerts let customers report fraud before more money leaves the account.

Failed-payment nudges

If an STK push times out or is cancelled, send a single follow-up with a link back to checkout. Do not repeat it in a loop.

Sample messages

Copy-ready templates for Kenya

Character counts and segments are calculated with the same GSM-7 and Unicode rules used for billing. Replace the example brand and values with your own.

Sign-up OTP OTP
Your Pesafy code is 482913. It expires in 5 minutes. Pesafy staff will never ask for this code.
95 chars · 1 segment · GSM-7
Payment receipt Transactional
Pesafy: KES 1,250 received for invoice INV-3381. M-Pesa ref SKD4X8P1Q2. Thank you, Akinyi.
90 chars · 1 segment · GSM-7
Repayment reminder Transactional
Pesafy: your loan balance of KES 3,400 is due on 30/11. Pay via Paybill 400200, Account 07123. Questions? Call 0700 000 111.
124 chars · 1 segment · GSM-7
Repayment received (Kiswahili) Transactional Kiswahili
Pesafy: Tumepokea malipo yako ya KES 3,400. Mkopo wako umelipwa kikamilifu. Asante kwa kuchagua Pesafy.
103 chars · 1 segment · GSM-7
Rules that apply

Compliance for mobile money & fintech SMS in Kenya

A practical summary with sources, not legal advice. Check the regulator's current text for edge cases.

  • CBK-licensed digital credit providers must not contact a borrower's referees or phone contacts to recover a debt, or use threatening or shaming language. Send collection messages only to the borrower, in a neutral tone.
  • Keep OTPs, receipts and alerts on a transactional sender ID and keep marketing (new loan limits, cashback offers) on a separate promotional ID with an opt-out, sent between 08:00 and 18:00 on Safaricom.
  • Financial services and telecommunications are mandatory-registration sectors with the ODPC. Document why you hold each phone number and do not reuse contacts collected from app permissions for marketing.
  • Never include a full card number, PIN or password in an SMS. For OTPs, state that your staff will never ask for the code.
Send it

From your system to Safaricom and Airtel in one call

  1. 1Create an account and copy a test key (esms_test_...) to try the integration without spending credit.
  2. 2Request your sender ID for Kenya. Until it is approved you can send from the eSMS default sender.
  3. 3Call the send endpoint from your app, or upload a CSV in the dashboard with merge fields like {{name}}. Delivery reports arrive by webhook.

Need one-time codes? eSMS Verify generates, sends and checks them in two calls. Full reference in the API docs.

curl -X POST https://sms.esmsafrica.io/api/messages/send \
  -H "Authorization: Bearer $ESMS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+254712345678",
    "text": "Pesafy: KES 1,250 received for invoice INV-3381. M-Pesa ref SKD4X8P1Q2. Thank you.",
    "sender_id": "PESAFY"
  }'
Live pricing

SMS pricing in Kenya

Per-SMS rates for one segment, updated live. Pay as you go with no monthly minimum; volume rates apply automatically by monthly spend.

Basic
KES1.08
per SMS· USD 0.0083
Monthly spend USD 1 - USD 1,000
Business
KES0.9
per SMS· USD 0.0069
Monthly spend USD 1,001 - USD 4,999
Enterprise
KES0.15
per SMS· USD 0.0012
Monthly spend USD 5,000+

Estimate a campaign with the SMS cost calculator or compare all countries in the Africa SMS pricing index.

FAQ

Mobile money & fintech SMS in Kenya: common questions

Does the Daraja callback include the customer's full phone number?

Not always. Safaricom's documentation for the newer C2B API shows a masked MSISDN in the confirmation payload, and older versions returned a hashed number. Match the payment to your own records using the account number (BillRefNumber) and text the number you already hold for that customer. Check the current Daraja documentation before you build.

Should OTPs go through the bulk SMS API or Verify?

You can send codes through the SMS API, but then you must generate, store, expire and rate-limit them yourself. eSMS Verify does all of that with two calls, start and check, which removes a common source of security bugs in fintech apps.

Can a digital lender send reminders to a guarantor or next of kin?

CBK's rules for digital credit providers prohibit contacting a borrower's contacts to recover a debt, and the regulator has acted against apps that did. Keep reminders to the borrower. If you are unsure whether a person counts as a permitted contact, check with CBK or your legal adviser.

Get started

Start sending mobile money & fintech SMS in Kenya today

Free account, test keys, sender ID registration handled for you, and pay-as-you-go pricing in KES or USD.