> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sub-Saharan Africa channels onboarding: SMS, WhatsApp, voice

> Ordered onboarding playbook for sub-Saharan African destinations — pick the right channel per market, read each country's sender-identity registration rule from the country-rules endpoint, assemble the KYC paperwork pack, test top markets before committing, and set quiet hours, delivery thresholds, and SMS-to-voice failover.

# Sub-Saharan Africa channels onboarding: SMS, WhatsApp, voice

This guide is the ordered onboarding path for sub-Saharan African destinations — Nigeria, Kenya, Ghana, Tanzania, South Africa, and their neighbours. It complements the per-channel references ([SMS](/channels/sms), [WhatsApp](/channels/whatsapp), [voice](/channels/voice)) — those document the API shapes; this guide is the ordered playbook you follow the first time.

If you also operate across the Mediterranean rim, note that the [MENA channels onboarding](/guides/mena-channels-onboarding) guide covers North Africa only (Egypt, Morocco, Algeria, Tunisia, Libya) — its sender and channel rules do not apply south of the Sahara. This page is the sub-Saharan counterpart.

## Pick the right channel per market

Do not activate every channel at once. Pick per market:

| Market | First channel | Strong second | Notes |
| - | - | - | - |
| Nigeria (NG) | **SMS** | Voice (OTP calls) | Largest SSA mobile base. Alphanumeric sender-id needs NCC pre-registration — budget that before your first bulk send. |
| Kenya (KE) | **SMS** | WhatsApp | Safaricom-dominated market; sender-id registration is operator-specific, so the same registration does not carry across operators. |
| Ghana (GH), Tanzania (TZ) | **SMS** | Voice | Pre-registration required for alphanumeric sender-id; USSD is an optional complement for feature-phone audiences. |
| South Africa (ZA) | **SMS on dedicated numbers** | WhatsApp | Alphanumeric sender-id is not supported on most operators — send from a dedicated long code or short code instead. |
| Feature-phone-heavy segments of any market | **SMS** + optional **USSD** | — | SMS is universal across handsets; layer USSD menus where your audience skews to feature phones. |
| Where Meta Business reach checks pass | **WhatsApp** | SMS | Add WhatsApp once SMS is stable; template approval varies by market. |

If you are unsure, start with SMS. It delivers on every handset class in the region; add WhatsApp and voice as second channels once the first is stable.

## 1. Read the registration rule per market before you pick

Every sub-Saharan market in the seeded ruleset gates sender identity differently, and the per-country rule is live-readable. One endpoint answers the "what does this destination require" question — `GET /api/v1/compliance/country-rules` — the same read-only reference backing Orbit's send-time posture:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/country-rules?channel=sms&country=NG" \
  -H "X-API-Key: dv_live_sk_..."
```

Read the `registration` value per target country and plan from it:

| Country | Registration value | Registration type | What it means for onboarding |
| - | - | - | - |
| Nigeria (NG) | `required` | pre-registration | NCC registration required. The sender-id must clear with the regulator before traffic flows. |
| Kenya (KE) | `required` | operator-specific | Registration is per operator — a Safaricom approval does not carry to Airtel. Re-check per operator mix. |
| Ghana (GH) | `required` | pre-registration | Pre-register the alphanumeric sender-id before first send. |
| Tanzania (TZ) | `required` | pre-registration | Pre-register the alphanumeric sender-id before first send. |
| South Africa (ZA) | mandatory | — | Alphanumeric sender-id is not supported on most operators. Provision dedicated numbers (long codes) and send from those instead. |

The [Sender-ID pre-registration choosing matrix](/guides/sender-id-country-matrix) walks through how to read this endpoint at choose-time rather than send-time — run that habit here too. Registration is granted by the carrier or regulator, not by Orbit; a market listed here is not necessarily enabled on your account until you opt in.

## 2. KYC paperwork pack per country

Sender registration across the region is organization-document-driven. Assemble the pack once per country; the checklist lives in [Organization KYC onboarding](/guides/organization-kyc-onboarding), and per-market duties surface under **Compliance → Country requirements** ([Country requirements](/compliance/country-requirements)). What carriers commonly ask for:

* **All markets** — certificate of incorporation, director sign-off letter naming the brand, a live website or brand page matching the sender-id, and a point-of-contact with a local-reachable email.
* **Nigeria** — add the NCC registration filing against the brand name; Nigerian carriers will not advance a sender-id without it.
* **Kenya** — prepare one document set per operator, because the application runs regulator-side per operator, not once per country.
* **Ghana, Tanzania** — pre-registration filing with the national regulator; a local business presence statement speeds review.
* **South Africa** — since the gate is number-level rather than sender-id-level, the paperwork shifts to number provisioning: proof of business address and use-case for dedicated long-code assignment.

Sender identity rules are ownership rules — you own the organization documents and registrations; Orbit stores what you connect. KYC holds surface on the send path as `KYC_HOLD` (403) until the checklist completes.

## 3. Test-first readiness: pick top three, send once per market, then commit

Before you commit a launch plan, run a three-market probe:

1. Pick your top three candidate markets — usually NG, KE, and one of GH/TZ/ZA.
2. For each, call `GET /api/v1/compliance/country-rules` and note the `registration` value and any special requirement.
3. Fire one live send per market through [Send and receive messages](/guides/send-receive-messages) after the registration the country demands is in place — never before.
4. Read the terminal delivery status off the delivery webhook (or `GET /messages/{id}`), then confirm what a recipient handset actually shows as sender.
5. Commit to the markets that delivered in the shape you expected; queue the remaining registrations in the background while you launch the first market.

Step 4 matters more in this region than anywhere else: a sender-id registered in one market can still render as a numeric sender on specific operators, and the only way to catch that is a live send.

## 4. Where the 10DLC and sender-id matrix guides fit

Two guides elsewhere on this site carry adjacent sender-path detail that is relevant here:

* The [Sender-ID pre-registration matrix](/guides/sender-id-country-matrix) is the generic read-at-choose-time habit over `GET /api/v1/compliance/country-rules` — the same endpoint you used above.
* The [10DLC registration](/guides/10dlc-registration) guide is the US-specific sender regime — it governs US 10-digit long codes only. For sub-Saharan markets you register alphanumeric sender-ids or dedicated international numbers instead; 10DLC does not apply on SSA routes and you can skip it entirely unless you also send into the US.

## 5. Production checklist

Before you scale past the probe phase, put these into place:

* **Quiet hours per zone** — SSA spans UTC through UTC+3 (West Africa UTC/UTC+1, East Africa UTC+3). If you set a sending window, set it per market in recipient-local time using [Campaign limits and quiet hours](/guides/campaign-limits-quiet-hours). These controls are tenant-owned and fail open — nothing blocks your traffic until you opt in.
* **Delivery-rate threshold per market** — decide the minimum acceptable delivery rate per country (for example, alert below 90% on NG) and watch it per market, not as a region aggregate; operator mix within Kenya alone can drag an aggregate number.
* **Failover chain** — for time-critical traffic (OTP, fraud alerts), wire SMS-to-voice fallback so a delayed SMS escalates to an outbound call; see [Fallback chains](/guides/fallback-chains). Voice is a legal OOB channel in most SSA markets — confirm per country under [Country capabilities](/numbers/country-capabilities).
* **Frequency caps** — in markets with low SMS tolerance, set a per-contact cap under [Frequency caps](/guides/frequency-caps); the cap is tenant-side and defaults off.
* **Consent and opt-out** — route STOP and opt-out handling through your tenant-side consent controls where local law requires it; Orbit applies the rules you opt into, in the markets you opt into.

## 6. Troubleshooting accordions

<AccordionGroup>
  <Accordion title="Send rejected with SENDER_NOT_REGISTERED on NG / KE / GH / TZ">
    These markets gate alphanumeric sender-id at the registration step. Complete the country's registration first, then re-send. Nigeria additionally requires the NCC filing; Kenya requires one registration per operator. Details live in [Country requirements](/compliance/country-requirements).
  </Accordion>

  <Accordion title="South Africa rejects an alphanumeric sender-id entirely">
    Expected — most ZA operators do not support alphanumeric senders at all. Provision a dedicated long code under **Numbers → Buy** and send from it instead; the [country-capabilities summary](/numbers/country-capabilities) shows what number types are in stock.
  </Accordion>

  <Accordion title="Registered sender shows as a numeric sender on some Kenyan operators">
    Registration in Kenya is operator-specific. A registration cleared with one operator does not flow to the others — complete the pending operator registrations, then re-test with a live send per operator.
  </Accordion>

  <Accordion title="KYC_HOLD (403) blocks the first send to Nigeria">
    The organization KYC checklist is incomplete for the destination. Finish [Organization KYC onboarding](/guides/organization-kyc-onboarding) — include the NCC filing reference — and re-send.
  </Accordion>

  <Accordion title="WhatsApp works in one market but stalls in another">
    Meta Business reach and template approval move at different speeds across the region. Keep SMS as the primary channel until WhatsApp template approval clears per market — see the [WhatsApp template walkthrough](/guides/whatsapp/templates-create-approve).
  </Accordion>
</AccordionGroup>

## See also

* [MENA channels onboarding](/guides/mena-channels-onboarding) — North Africa and the Gulf, the region north of this page's coverage.
* [APAC channels onboarding](/guides/asia-channels-onboarding), [LATAM channels onboarding](/guides/latam-channels-onboarding), [Europe channels onboarding](/guides/europe-channels-onboarding) — the same playbook shape in other regions.
* [Country capabilities](/numbers/country-capabilities) — per-market channel, voice, and number-type coverage.
* [Country requirements](/compliance/country-requirements) — the per-market legal duty reference.
* [Sender-ID pre-registration matrix](/guides/sender-id-country-matrix) — the generic choose-time read over the country-rules endpoint.
* [Send and receive messages](/guides/send-receive-messages) — the cross-channel send pattern.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.