Skip to main content
This guide takes you from a Nigeria-only integration to a four-country production deployment. Order of operations matters — some steps have multi-day lead times you want to start early.
1

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)
2

Upgrade your plan (day 1)

Multi-country pricing is available on Starter and above. Upgrade via Dashboard → Billing → Plans if you’re on Free.
3

Audit your code for hardcoded Nigerian assumptions (day 1–2)

Common offenders:
  • +234 hardcoded in E.164 validation. Use a proper library (libphonenumber or phonenumbers).
  • hardcoded in cost displays. Read cost.currency from the response.
  • "mtn" | "airtel" | "glo" | "9mobile" enum. Widen to a string — new carriers will appear.
  • Timezone Africa/Lagos in scheduled sends. Use the user’s timezone or UTC.
4

Test each country (day 2–3)

Use test-mode keys with real E.164 numbers for each country:
Verify:
  • sms.country matches the expected country code.
  • sms.cost.currency matches (NGN / GHS / KES / XOF).
  • Webhooks fire with data.country set.
5

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.
6

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:
7

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_attempts will show Termii winning a lot.

Common gotchas

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.
Locals sometimes enter 0712345678 instead of +254712345678. Normalize on signup — libphonenumber with a default country is the tool.
Unlike some other countries, Ghanaian MNOs reject non-international-formatted destinations from international aggregators. Always E.164.
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:
  1. Email sales@robase.dev with projected volume + use case.
  2. We add the route + pricing + sender-ID pipeline within 3 business days.
  3. Some countries require a local entity — we’ll tell you upfront if so.