eSMSAfrica
Fintech & digital lenders · Uganda

SMS and OTP for fintechs in Uganda

Ugandan fintechs sit on top of MTN MoMo and Airtel Money, so the first thing a new user sees from you is usually a one-time code. eSMS Verify generates, sends and checks that code for you, and the same account sends payment receipts, failed-collection nudges and fraud alerts to both networks.

MTN, Airtel, Lycamobile, Uganda Telecom Delivery reports From UGX 35 per SMS
PESAPLUSOTP
Your PESAPLUS code is 482913. It expires in 5 minutes. PESAPLUS staff will never ask for this code.
99 chars · 1 segment · GSM-7
Uganda context

What makes fintech & digital lenders messaging different in Uganda

  • Payment service providers and e-money issuers are licensed by the Bank of Uganda under the National Payment Systems Act, 2020, which also covers the mobile money services of MTN and Airtel.
  • Many fintechs collect through mobile money prompts. When a customer ignores or misses the PIN prompt, an SMS with the amount and a retry instruction recovers more payments than silence.
  • Digital lenders are licensed as money lenders by UMRA, which issued Digital Lending Guidelines in 2024 after public complaints about predatory practices and data privacy.
  • SIM swap fraud and social engineering scams are common across East Africa, so codes should be short-lived and messages should say clearly that staff will never ask for them.
What to send

Messages fintech & digital lenders teams in Uganda send

Sign-up and login OTP

Call /v1/verify/start with the user's number and your app ID, then /v1/verify/check with the code they type. eSMS creates the code, rate-limits retries and tells you only whether it matched.

Transaction confirmations

Send a branded receipt for every wallet top-up, transfer or bill payment with the amount, fee and reference, so customers can dispute errors quickly and your support team can trace them.

Failed collection nudges

When a mobile money pull request times out, send one SMS with the amount due and a short instruction to approve the prompt or pay by merchant code, then stop.

Security and device alerts

Tell users immediately when a new device logs in, a PIN changes or a large withdrawal is requested, with a number to call if it was not them.

Loan disbursement notices

Confirm the amount disbursed, the total repayable and the due date in one message at the moment funds land, giving the borrower a written record of the terms.

Sample messages

Copy-ready templates for Uganda

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.

Login OTP OTP
Your PESAPLUS code is 482913. It expires in 5 minutes. PESAPLUS staff will never ask for this code.
99 chars · 1 segment · GSM-7
Payment receipt Transactional
PESAPLUS: You paid UGX 45,000 for YAKA meter 0412-3356. Fee UGX 500. Ref PP7781. Balance UGX 112,300.
101 chars · 1 segment · GSM-7
Failed MoMo prompt Transactional
PESAPLUS: Your MTN MoMo approval for UGX 30,000 timed out. Dial *165# and approve the pending payment, or retry in the app.
123 chars · 1 segment · GSM-7
Loan disbursement Transactional
PESAPLUS: UGX 200,000 sent to your Airtel Money. Total to repay UGX 224,000 by 30/11. Terms: pesaplus.ug/terms. Help 0800 000000.
129 chars · 1 segment · GSM-7
Rules that apply

Compliance for fintech & digital lenders SMS in Uganda

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

  • OTPs, receipts and security alerts are transactional and can be sent at any hour. Cross-selling credit or partner offers is commercial: it needs consent or a prior relationship under the UCC 2019 regulations, a STOP opt-out, and daytime timing.
  • Never send loan or debt messages to a borrower's phone contacts. The Data Protection and Privacy Act, 2019 restricts using personal data beyond the purpose it was collected for, and UMRA's 2024 Digital Lending Guidelines address data privacy concerns.
  • If you are licensed by the Bank of Uganda, keep customer notices accurate and timely and follow its consumer protection requirements for fee and term disclosure.
  • Register as a data controller with the PDPO and keep OTP and message logs only as long as you need them.
Send it

From your system to MTN 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 Uganda. 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": "+256712345678",
    "text": "PESAPLUS: You paid UGX 45,000 to merchant 552211. Ref PP7781. Balance UGX 112,300.",
    "sender_id": "PESAPLUS"
  }'
Live pricing

SMS pricing in Uganda

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

Basic
UGX35
per SMS· USD 0.0083
Monthly spend USD 1 - USD 1,000
Business
UGX30
per SMS· USD 0.0071
Monthly spend USD 1,001 - USD 4,999
Enterprise
UGX25
per SMS· USD 0.0059
Monthly spend USD 5,000+

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

FAQ

Fintech & digital lenders SMS in Uganda: common questions

Why use eSMS Verify instead of generating codes ourselves?

Verify removes code storage, expiry, retry limits and brute-force protection from your backend. You make two API calls and get a yes or no. That reduces the security surface of your app and keeps OTP messages on the transactional path to MTN and Airtel.

Can OTPs go out at night?

Yes. The UCC 19:00 to 06:00 limit in regulation 19 is about commercial communications. A code the user requested is not a commercial message, and people log in at all hours, so OTPs and security alerts are sent the moment they are triggered. Keep any marketing on a separate schedule that respects the night-time window.

Can we use one sender ID for OTP and marketing?

It is technically possible but not wise. Keep OTPs and receipts on a sender ID users recognise as security-related, and run any consented promotions separately. If a promotional campaign draws complaints, your login codes are not caught up in it.

How do we test without sending real SMS?

Use an esms_test_ key. The API behaves the same way, returns message IDs and simulated delivery reports, and nothing is charged or delivered. Switch to a live key when your flows pass QA, and keep the test key in your staging environment so developers never send real messages by accident.

Get started

Start sending fintech & digital lenders SMS in Uganda today

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