You send to all four through the same
POST /v1/sms endpoint. There’s no country routing step — we derive it.
Country auto-detection
We parse the E.164 dial code onto and tag the message with the detected country:
Pricing per country
Your plan has a per-country rate map. When a country isn’t in the map, we fall back to the plan’s default NGN rate.
The
cost field on the response reflects the destination country’s currency:
cost_currency on the row tells you honestly what the per-segment rate would be in the local market.
Sender IDs are per-country
A sender ID approved for NG isn’t automatically approved for GH. Register once per country you target:Provider routing by country
Different countries have different best-of-breed upstream providers. We maintain aprovider_routes table that determines the failover chain per country:
provider_attempts on GET /v1/sms/:id:
Planning capacity across markets
Analytics is per-project but aggregated across countries. UseGET /v1/sms/analytics/carriers?days=30 for a breakdown — each row is one carrier (e.g. mtn_ng, safaricom_ke), so you can see where your volume goes.
For finer-grained slicing (cost by country over time, delivery rates by country), export from the dashboard — CSV downloads include the country column.
Opening a new market
We’re adding countries as Beem + Termii coverage grows. If you need a country not listed here:- Email sales@robase.dev with your volume estimate + use case.
- We’ll add a provider route + seeded plan rate within 3 business days.
- For some countries the regulator requires a local entity — we’ll let you know if so.