Register sender IDs per country, in parallel (day 1)
Regulator approval is the longest lead time. Submit NG + GH + KE + CI sender-ID registrations on day 1 so they can process in parallel:Typical approval times:
- NG: 5–7 business days (NCC)
- GH: 3–5 business days (NCA)
- KE: 2–4 business days (CA)
- CI: 3–5 business days (ARTCI)
Upgrade your plan (day 1)
Multi-country pricing is available on Starter and above. Upgrade via Dashboard → Billing → Plans if you’re on Free.
Audit your code for hardcoded Nigerian assumptions (day 1–2)
Common offenders:
+234hardcoded in E.164 validation. Use a proper library (libphonenumber or phonenumbers).₦hardcoded in cost displays. Readcost.currencyfrom the response."mtn" | "airtel" | "glo" | "9mobile"enum. Widen to a string — new carriers will appear.- Timezone
Africa/Lagosin scheduled sends. Use the user’s timezone or UTC.
Test each country (day 2–3)
Use test-mode keys with real E.164 numbers for each country:Verify:
sms.countrymatches the expected country code.sms.cost.currencymatches (NGN / GHS / KES / XOF).- Webhooks fire with
data.countryset.
Set up billing alerts (day 3)
Your wallet is shared across countries but costs per country differ. Configure auto top-up in the dashboard with a safe threshold — a GH campaign blowing through quota shouldn’t tank your NG transactional budget.
Roll out to users (day 5+)
Start with one country’s sender ID approved. Feature-flag the rest off. As approvals come in, flip the flag:
Monitor per-country delivery (day 7+)
After one week, check
/sms/analytics/carriers?days=7 per project and look for:- Delivery rate differences across countries (>10% gap is worth investigating).
- Unexpected carriers (e.g. roaming numbers showing up as a country you don’t target).
- Failover events — if Beem is flaky for one country,
provider_attemptswill show Termii winning a lot.
Common gotchas
Users with roaming SIMs
Users with roaming SIMs
A Nigerian user roaming in the UK still has a
+234 number — Robase will price it as NG and route via NG carriers. The carrier delivers it over international roaming. Cost is correct; latency may be higher.Kenyan numbers without the country code
Kenyan numbers without the country code
Locals sometimes enter
0712345678 instead of +254712345678. Normalize on signup — libphonenumber with a default country is the tool.Ghana: keep `+233` even for local destinations
Ghana: keep `+233` even for local destinations
Unlike some other countries, Ghanaian MNOs reject non-international-formatted destinations from international aggregators. Always E.164.
Francophone countries: accents in names
Francophone countries: accents in names
Côte d'Ivoire user names often contain é, à, ô — which force UCS-2. See Segments & encoding for the cost implications.Opening additional markets
We add countries as demand + coverage aligns. If you need Uganda, Tanzania, Senegal, or Cameroon:- Email sales@robase.dev with projected volume + use case.
- We add the route + pricing + sender-ID pipeline within 3 business days.
- Some countries require a local entity — we’ll tell you upfront if so.