Testing +27 Verification Flows: A Checklist for South African Launches

Calling code +27OTP Gateway from $0.20 per codeDedicated numbers: US & Canada onlyAPI id: za
Quick answer

With the OTP Route OTP Gateway you can receive South Africa (+27) verification codes on a temporary number, from $0.20 per code, and collect each one in the dashboard or through the API by polling or a signed webhook. Order with country id za; the activation lasts 20 minutes and you pay only if an SMS actually arrives.

Before the first +27 order: a short readiness list

Tick these off and your first South African activation should go through without surprises:

  1. Wallet topped up. One prepaid USD wallet funds everything; load it by card or with USDT/USDC. No subscription is involved.
  2. Key issued. Generate a Bearer key in the Developer console (it begins or_live_). Keep separate keys for CI and for staging, up to 10 in total.
  3. Webhook registered. Add an HTTPS endpoint and store its signing secret. You can register up to five.
  4. Number normalizer tested. Feed it 082 123 4567-style input and confirm it produces +2782... with the leading 0 removed.
  5. Service id confirmed. Pull the catalog from GET /api/v1/services rather than guessing ids.
  6. Sandbox optional. Support can switch a development account to sandbox so simulated numbers and codes flow through your code before any real spend.

The CI testing guide shows how to wire these pieces into a pipeline.

How should South African numbers be stored and normalized?

South Africa uses the trunk prefix 0. A mobile number written locally has ten digits, such as 082 123 4567, and mobile ranges typically begin with 06, 07 or 08 in that national form. In international format the 0 disappears: the same line becomes +27 82 123 4567, or +27821234567 once spaces are stripped, which is nine digits after the country code.

The classic bug is a stored value like +270821234567, produced when a form glues the country code onto the local number without dropping the 0. Normalize on input, store only E.164, and render the spaced local format purely for display. If you send outbound SMS yourself, the same rule keeps delivery reports and user lookups consistent.

Which services can send codes to a South Africa verification number?

Popular routes for za right now include WhatsApp, Facebook, Instagram, TikTok, Google (Gmail & YouTube), Uber, Telegram, Microsoft & Outlook, LinkedIn, Netflix, Amazon, X (Twitter), ChatGPT (OpenAI) and Discord. Across the whole catalog the country supports more than 1,700 services, and because inventory moves through the day, the API is the place to read current availability.

Why do teams pick this market? Johannesburg and Cape Town are established tech and finance hubs, and many companies use South Africa as the base for a wider Southern African rollout. The country has several official languages, including English, isiZulu, isiXhosa and Afrikaans, yet most verification messages arrive in English, so localization QA tends to focus on the surrounding screens rather than the SMS text itself.

Steps: calling the South Africa OTP API from your test harness

Requests go to https://otproute.com/api/v1 with your Bearer key, up to 300 per minute.

  1. GET /api/v1/prices?country=za&service=<id> returns the live price for the pairing you want.
  2. POST /api/v1/activations with {"service": "<id>", "country": "za"} reserves a +27 number and returns an activation id.
  3. Your test enters the number in the app and triggers the SMS.
  4. The activation.sms_received event reaches your webhook. Before trusting it, rebuild the HMAC-SHA256 of <t>.<raw body> with the endpoint secret, compare it with v1 in X-OTPRoute-Signature, and drop requests whose timestamp is too old.
  5. Prefer polling? Read GET /api/v1/activations/{id} on a gentle interval instead.
  6. Abandoned runs should call POST /api/v1/activations/{id}/cancel, and GET /api/v1/balance lets a job stop early when funds run low.

More on routing choices sits in country routing for OTP.

Steps for operations staff using the dashboard

No code required: open the OTP Gateway, pick South Africa and the service, check the displayed price, confirm, and paste the +27 number into the app. The SMS shows up on the activation page as it arrives, and the 20-minute window plus automatic refund work exactly as they do over the API.

Troubleshooting stalled South African codes

First, the money side: if no SMS arrives within 20 minutes, or you cancel, the full amount returns to the wallet automatically. Then diagnose:

  • Patience first. Delivery speed depends on the service and the route, so let the activation run its course.
  • Acceptance policy. Some services decline virtual numbers; a refund in that case is expected behaviour, not a fault.
  • Different time or route. Try again later, or use a neighbouring route such as Namibia or Botswana when the test case permits.
  • No hammering. Cancelling and re-ordering in a tight loop rarely helps and eats into your rate limit.

Use numbers only to test your own product or run your own business accounts, respect each service's terms, and keep in mind that OTP Route's Acceptable Use Policy applies.

Long-term South African lines and the billing model

There is no self-serve long-term +27 number. Dedicated Numbers, from $1.95/month, are offered only in the United States and Canada; teams that need a permanent South African line can email [email protected], and whether one is possible depends on local rules. Billing is pay as you go from the prepaid wallet, with a PDF invoice emailed for every top-up. See pricing for the full picture.

Frequently asked questions

Can I test my app's South African sign-up flow without a local SIM?

Yes. Order a +27 number through the OTP Gateway and read the code in the dashboard or via API. It costs from $0.20 per code, and only when the code arrives.

Do I keep the leading 0 when converting a South African number to E.164?

No. Drop the trunk 0 and prefix +27, so 082 123 4567 becomes +27821234567.

What is the API country id for South Africa?

It is za, which goes in the price query and in the JSON body when you create a +27 activation.

Which language do South African verification texts use?

Mostly English, even though the country has several official languages. The wording is decided by the sending service.

Is there a refund if the code is never delivered?

Yes. The activation is open for 20 minutes, and if nothing arrives or you cancel, the full amount goes back to your wallet automatically.

Can I buy a South African number to keep for months?

Not self-serve. Dedicated Numbers are a US and Canada product; for South Africa, email support to ask, with no promise of availability.

How many services can I verify with a +27 number on OTP Route?

More than 1,700 at the latest snapshot. Check the live catalog through the API, since availability changes through the day.

Service names are trademarks of their respective owners. OTP Route is not affiliated with them. Use numbers lawfully, follow each service's terms and our Acceptable Use Policy.

Route your first OTP in minutes

Create a free account, top up your USD wallet and order a number from the dashboard or the API. No monthly fee.