The cost of a bulk SMS campaign is recipients multiplied by segments per message multiplied by the rate per segment for that country. A segment is 160 characters in GSM-7 or 70 characters in Unicode, and longer messages split into parts of 153 or 67 characters. Most budget surprises come from a single emoji or curly apostrophe switching a message to Unicode, so check encoding before you check the rate.
Last reviewed: 27 October 2026. Rates in this article are live prices from our pricing system, shown as they are today.
The formula
cost = recipients x segments per message x rate per segment (destination country, route, tier)
Three of the four inputs are under your control: who you send to, how long the message is and which characters it uses. The rate depends on the destination country, the route and your volume tier. Add any fixed costs, such as sender ID registration, once.
Step 1: count the segments
SMS uses the GSM 03.38 character set, specified in 3GPP TS 23.038. If every character in a message is in the GSM-7 alphabet, the message is encoded at 7 bits per character; otherwise the whole message is sent in UCS-2 (Unicode) at 16 bits per character. Long messages carry a small header in each part, which is why the per-part limits are lower than the single-message limits.
| Encoding | 1 segment | 2 segments | 3 segments | 4 segments |
|---|---|---|---|---|
| GSM-7 | up to 160 characters | 161 to 306 | 307 to 459 | 460 to 612 |
| Unicode (UCS-2) | up to 70 characters | 71 to 134 | 135 to 201 | 202 to 268 |
Two details catch people out:
- Extension characters count twice in GSM-7. These are
^ { } \ [ ~ ] |and the euro sign. A message with three square brackets uses six characters of the 160. - One non-GSM character converts the whole message. Emoji, curly quotes and apostrophes pasted from word processors, and accented letters such as ê, ô, ç (lower case), â and î are not in GSM-7. Some accented letters are: é, è, à, ù, ì, ò, ä, ö, ü and ñ.
Kiswahili, Kinyarwanda, Yoruba written without tone marks and English fit GSM-7, but languages that use extra letters, such as the hooked letters of Hausa, do not. Amharic, Arabic and Tifinagh do not, so plan for 70-character segments there.
Worked examples: the same message, different costs
Example A: one segment
Nile Bakery: your order 4471 is ready for pickup at Kira Rd until 18:00 today. Show code 2290 at the counter. Thank you for shopping with us!
141 characters, all GSM-7: 1 segment.
Example B: add one sentence
Nile Bakery: your order 4471 is ready for pickup at Kira Rd until 18:00 today. Show code 2290 at the counter. Thank you for shopping with us! New: weekend cakes from Saturday, order online.
189 characters, GSM-7: 2 segments. The extra line doubles the cost of every message.
Example C: add an emoji instead
Take Example A and add a single cake emoji at the end. The message is now Unicode and 144 characters long (the space plus the emoji, which counts as two units in UCS-2), which needs 3 segments. One emoji has tripled the cost.
Example D: the curly apostrophe
"Nile Bakery: we're open until 18:00 today." costs one GSM-7 segment with a straight apostrophe. If the apostrophe was typed in a word processor and became a curly one, the message switches to Unicode. At 42 characters it still fits in one Unicode segment, but the same switch in a 150-character message would make it 3 segments.
Example E: French with and without circumflexes
A 102-character French message for a Kigali shop that contains "prête" is Unicode and costs 2 segments. Written as "prete", it is GSM-7 and costs 1. Accents such as é and è are safe; ê is not. Decide whether full accents are worth the extra segment for your audience; for official notices they may be.
The eSMS dashboard composer shows the encoding and segment count as you type, and our article on GSM-7 vs Unicode explains the encoding in more depth.
Step 2: pick the right rate
Rates differ by destination country and by route. The pricing page shows three views for each country:
| View | What it is | Kenya example (basic tier) |
|---|---|---|
| Local | Local-route rate in the destination country's currency | KES 1.08 |
| USD | The same local-route rate in US dollars | $0.0083 |
| International | International-route rate in USD, for cross-border traffic that keeps your sender ID end to end | $0.308 |
Local and USD are the same price shown in two currencies; use whichever matches your budget. The international route is a different product priced separately, used for cross-border traffic. Most businesses sending to customers in their own country use the local route.
Each country also has volume tiers. In Uganda, for example, the basic tier is UGX 35, the business tier UGX 30 and the enterprise tier UGX 25 per segment. Compare all 54 countries on the SMS pricing table.
Step 3: build the budget
A school in Uganda
800 parents, 12 messages a term (fees, receipts, dates, results), all one segment:
800 x 12 x 1 = 9,600 segments x {{rate}} (Uganda basic: UGX 35)
If half the messages ran to two segments, the same term would need 14,400 segments, 50% more.
A retailer in Kenya
5,000 opted-in customers, four campaigns a month. Written like Example B, each is 2 segments: 40,000 segments a month. Trimmed to 160 characters, it is 20,000. The edit halves the bill at KES 1.08 per segment and also makes the offer easier to read.
A fintech in Nigeria
50,000 verifications a month. Suppose your own logs show that one in ten users asks for a resend: budget 55,000 OTP messages, each one segment, at NGN 9.1 or the business-tier NGN 7.5 as volume grows. Shorter code expiry with a clear resend timer usually reduces resends; measure yours before and after.
A French-language campaign in Rwanda
3,000 recipients. Example E with "prête" costs 6,000 segments; without the circumflex, 3,000, at RWF 21 each.
Fixed and one-off costs
- Sender ID registration. USD 100 one-time per country in most markets, including Tanzania, Rwanda, Zambia and Nigeria. Kenya charges per network (for example KES 8,700 for Safaricom only, one-off), and Uganda charges UGX 250,000 per month for MTN and UGX 250,000 one-off for Airtel. See Kenya and Uganda for the full tables.
- Two-way numbers and short codes. Priced separately; see two-way SMS.
- No monthly fee. The SMS API is pay as you go from USD 20, with no setup fee or monthly minimum.
Ten ways to lower the bill without losing reach
- Keep every routine template under 160 GSM-7 characters.
- Replace curly quotes and apostrophes with straight ones; paste templates through a plain-text editor.
- Drop emoji from bulk messages.
- Use short links instead of long URLs.
- Abbreviate consistently: "Ref", "Bal", "acc".
- Clean your list: remove duplicates and numbers that fail repeatedly according to delivery reports.
- Segment the audience instead of sending to everyone.
- Use merge fields carefully: a long customer name can push a message into a second segment, so cap field lengths.
- Move up a volume tier when your monthly traffic justifies it.
- Use the local route for domestic traffic unless you specifically need the international route.
Our article on reducing SMS costs in Africa covers list hygiene and routing in more detail.
Budget checklist
- Recipient count per country after removing duplicates and opt-outs.
- Segment count per template checked in the composer.
- Encoding confirmed GSM-7 unless the language needs Unicode.
- Rate taken from the live pricing page for the right country, route and tier.
- One-off sender ID fees included for each new country.
- A margin for resends and growth.
Frequently asked questions
Is a 161-character message charged as two SMS?
Yes. In GSM-7, anything over 160 characters is split into parts of up to 153 characters, and each part is billed as a segment. A 161-character message is 2 segments.
Do spaces and line breaks count?
Yes. Spaces, punctuation and line breaks are characters. A line break counts as one GSM-7 character.
Why did my message cost three segments when it was only 140 characters?
It almost certainly contained a non-GSM character, such as an emoji or a curly quote, which made it Unicode. Unicode allows 70 characters in one segment and 67 per part after that, so 140 characters needs 3.
Are OTPs priced differently from bulk SMS?
OTPs are priced per segment at the same country rates. A well-written OTP fits in one segment.
Sources
- 3GPP - TS 23.038, Alphabets and language-specific information (GSM 03.38)
- eSMS Africa - HTTP API documentation
- eSMS Africa - Sender ID registration fees
Check live rates on the pricing page or compare countries on the SMS pricing table. For sector-specific templates that fit in one segment, browse our use cases by country and industry, and read sender ID registration compared. Create a free account to test your templates with a free test key.


