SMS Rates
Public international rate card — supported countries and indicative TZS pricing, no authentication required.
Public reference data powering pricing pages: the countries SendAfrica delivers to and the indicative price per SMS in Tanzanian Shillings. No login, no API key — safe to call straight from the browser.
#Full rate card
/v1/ratesPublic{
"success": true,
"data": [
{ "name": "Nigeria", "iso2": "NG", "dial_code": "+234", "rate_tzs": 21 },
{ "name": "Egypt", "iso2": "EG", "dial_code": "+20", "rate_tzs": 26 },
{ "name": "Tanzania", "iso2": "TZ", "dial_code": "+255", "rate_tzs": 35 },
{ "name": "South Africa", "iso2": "ZA", "dial_code": "+27", "rate_tzs": 52 }
],
"timestamp": "2026-07-23T06:29:00Z"
}| Field | Type | Meaning |
|---|---|---|
name | string | Country name as published |
iso2 | string | ISO 3166-1 alpha-2 code |
dial_code | string | E.164 calling code with + |
rate_tzs | number | Indicative price per SMS in TZS |
#Single country lookup
/v1/rates/{country}Public{country} matches ISO2 code or name, case-insensitively — GET /v1/rates/KE and GET /v1/rates/kenya return the same thing. Unknown countries return 404 country_not_supported.
#Fetch and render
async function loadRates() {
const res = await fetch("https://api.sendafrica.online/v1/rates");
const { data: countries } = await res.json();
return countries
.map(c => `${c.name} (${c.dial_code}) — TZS ${c.rate_tzs}/SMS`)
.join("\n");
}Cache it
The list is small (~27 rows) and changes rarely — fetch once on page load and cache client-side (sessionStorage) rather than re-fetching per render. Always treat the live endpoint as the source of truth over any snapshot table.
#Snapshot of popular corridors
| Country | ISO2 | Dial code | Rate (TZS) |
|---|---|---|---|
| Nigeria | NG | +234 | 21 |
| Egypt | EG | +20 | 26 |
| Tanzania | TZ | +255 | 35 |
| South Africa | ZA | +27 | 52 |
| Zambia | ZM | +260 | 84 |
| Uganda | UG | +256 | 130 |
| Ghana | GH | +233 | 186 |
| Rwanda | RW | +250 | 210 |
| Kenya | KE | +254 | 306 |
| Ethiopia | ET | +251 | 310 |
Credits vs TZS
For non-Tanzania destinations, credits charged per part = ceil(rate_tzs / 35) rounded up (e.g. Namibia's TZS 112 → 4 credits = TZS 140 effectively). Use this formula rather than straight division when comparing.