Skip to main content

SMS Pricing

SMS is priced per message segment delivered, with rates set per destination country to reflect real carrier costs. You are never billed for messages that fail or are rejected by a carrier. All prices below are list prices in USD; volume discounts from the Pricing Overview apply on top automatically.

Per-Country Rate Card​

CountryCodePrice / Segment (USD)Notes
πŸ‡³πŸ‡¬ NigeriaNG$0.0098Transactional and promotional same rate
πŸ‡°πŸ‡ͺ KenyaKE$0.0120Premium route available
πŸ‡ΏπŸ‡¦ South AfricaZA$0.0140β€”
πŸ‡ͺπŸ‡Ή EthiopiaET$0.0080Lowest-cost route on AfriRoute
πŸ‡¬πŸ‡­ GhanaGH$0.0110β€”
πŸ‡ΉπŸ‡Ώ TanzaniaTZ$0.0105β€”
πŸ‡ΊπŸ‡¬ UgandaUG$0.0100β€”
πŸ‡·πŸ‡Ό RwandaRW$0.0095β€”

For countries not listed, see the full coverage list or request a quote from [email protected].

How Segments Are Counted​

A single SMS holds 160 GSM-7 characters. Longer messages are split into segments and billed per segment. Using any non-GSM character (most emoji, Amharic, Arabic, accented letters) switches the entire message to Unicode (UCS-2), which holds only 70 characters per segment.

Encoding1 segment2 segments3 segments
GSM-7160 chars306 chars459 chars
Unicode70 chars134 chars201 chars
tip

Keep transactional messages under 160 GSM-7 characters to stay at one segment. A single stray emoji can triple your per-message cost by forcing Unicode.

Cost Calculation​

def sms_cost(message: str, rate_per_segment: float, recipients: int = 1) -> float:
unicode_needed = any(ord(c) > 127 for c in message)
per_segment = 70 if unicode_needed else 160
multi_segment = 67 if unicode_needed else 153 # concatenation headers
n = len(message)
if n <= per_segment:
segments = 1
else:
segments = -(-n // multi_segment) # ceil division
return round(segments * rate_per_segment * recipients, 4)

# 200-char GSM-7 message to 5,000 Kenyan numbers
print(sms_cost("A" * 200, 0.0120, 5000)) # 144.0 (2 segments each)

Worked Examples​

ScenarioCalculationCost (USD)
1 OTP to Nigeria (1 seg)1 Γ— $0.0098$0.0098
10,000 promo SMS to Kenya (1 seg)10,000 Γ— $0.0120$120.00
10,000 promo SMS to Kenya (Growth tier βˆ’8%)$120.00 Γ— 0.92$110.40
5,000 two-segment alerts to Ethiopia5,000 Γ— 2 Γ— $0.0080$80.00
1,000 Unicode (Amharic) 90-char to Ethiopia1,000 Γ— 2 Γ— $0.0080$16.00

Inbound SMS​

Replies to a dedicated long code or shortcode (for two-way support and opt-in keywords) are billed separately:

TypePrice / inbound message (USD)
Long code$0.0050
Shared shortcode$0.0080
Dedicated shortcode$0.0080 + monthly rental

Checking Cost Programmatically​

Every send response includes the billed segment count and cost:

{
"status": "success",
"message_id": "msg_7K8L9M0N",
"to": "+254712345678",
"segments": 2,
"cost": 0.024,
"currency": "USD"
}

Need a custom rate for high volume? [email protected]

Last Updated: May 2026