English
Testing Malian sign-up flows when nobody on the team has a +223 SIM
Yes, OTP Route lets your team receive Mali (+223) SMS verification codes on a one-time OTP Gateway number and read them in the dashboard or collect them through REST polling and signed webhooks. Each code starts at $0.20 per code with the live price returned by the API, and you are only billed when a code actually arrives within the 20-minute window.
Your product is launching in Mali but no one has a local SIM. Now what?
It is a familiar bind for a QA lead. Product wants the Malian sign-up path verified before a marketing push in Bamako, the phone field already accepts +223, and every engineer's handset carries a European or North American SIM. Borrowing a colleague's personal number is fragile, does not scale to a test suite, and leaks staff data into test accounts.
A Mali verification number from the OTP Gateway solves the narrow problem: one real +223 number, used for one code, then discarded. You can drive it from a script or order it by hand in the dashboard, and the QA testing and CI/CD pages describe how teams slot it into regression runs.
Which apps can a Mali verification number receive codes from?
The live snapshot for Mali includes WhatsApp, Facebook, Telegram, TikTok, Google (Gmail & YouTube), Instagram, Snapchat, imo, Viber, Signal, Microsoft & Outlook, ChatGPT (OpenAI) and LinkedIn. Across everything on the gateway, Mali has more than 1,600 services available.
Availability is not static. Routes open and close over the course of a day, so a script should confirm a service is purchasable at run time instead of assuming yesterday's result still holds.
How does the Mali OTP API flow work in code?
Requests go to https://otproute.com/api/v1 with a Bearer key that starts or_live_. Keys are minted in the Developer console, up to 10 per account.
- Fetch ids once from
GET /api/v1/servicesandGET /api/v1/countries. Mali isml. - Read the live price with
GET /api/v1/prices?country=ml&service=<id>. - Order through
POST /api/v1/activations, for instance{"service": "whatsapp", "country": "ml"}, and keep the activation id. - Submit the returned +223 number in your app's verification form.
- Collect the code from
GET /api/v1/activations/{id}, or let a webhook tell you. Release unused numbers withPOST /api/v1/activations/{id}/cancel.
For webhooks, subscribe an endpoint (five are allowed) to activation.sms_received, activation.expired and activation.cancelled. Check X-OTPRoute-Signature by computing HMAC-SHA256 over "<t>.<raw body>" with the endpoint secret, reject stale timestamps, and make the handler idempotent on the activation id. The account limit is 300 requests per minute, and the API integration guide has worked examples.
Eight digits, no trunk prefix: storing Malian numbers
Mali uses a closed eight-digit plan with no trunk prefix, so the number dialed at home is the same eight digits that follow +223 abroad. That makes normalization pleasantly simple: the E.164 form is +223 plus eight digits, and there is no leading zero to add or strip. Validate the length explicitly, though, because a generic rule written for a ten-digit market will reject valid Malian input.
French is the usual language of verification texts from international apps, while Bambara is the most widely spoken language in everyday life. Codes therefore tend to arrive inside French or English templates; extract them with a numeric pattern rather than matching phrases.
Why test here at all? Teams launching mobile-money adjacent products in West Africa, NGOs and logistics operators running field staff accounts out of Bamako, and apps serving the large Malian diaspora in France and neighboring countries all need the +223 path to work. Pair it with checks on routes like Senegal when the rollout is regional.
What to do when the +223 code stays silent
No SMS usually means the route or the service, not your integration. Before filing a bug:
- Wait out the full 20 minutes; some senders release messages in batches.
- Find out whether the service rejects virtual numbers. Some do, and in that case the automatic refund covers you.
- Come back later or try a different service route rather than re-ordering in a tight loop.
- Cancel activations you have abandoned so the balance is restored at once.
If nothing has arrived when the window closes, or you cancel first, the full amount goes back to your wallet.
Can my team hold a Malian number long term?
OTP Route has no self-serve long-term Malian number. For ml, only the one-time OTP Gateway is available.
OTP Route's Dedicated Virtual Numbers, which renew from the wallet and support inbound and outbound SMS and browser calling, exist only in the United States and Canada, from $1.95/month. If a persistent +223 line matters to your operation, email [email protected]; anything beyond the gateway depends on local rules and is not assured.
Paying for Mali OTP routing and testing without spending
One prepaid USD wallet funds every country: pay as you go, no monthly fee, no plan selection. Top up by card or with USDT/USDC, and every top-up comes with a PDF invoice by email.
While you are still building, ask support to flip a development account into sandbox mode. You then get simulated numbers and codes and can rehearse the entire SMS verification API sequence without wallet spend. Use real numbers only for your own products and legitimate accounts, respecting each service's terms and the Acceptable Use Policy. Current rates sit on the pricing page.
Frequently asked questions
Can I verify a Malian sign-up without traveling or buying a local SIM?
Yes. Order a +223 number for testing on the OTP Gateway, enter it in your app, and read the code in the dashboard or via the API.
What is Mali's id in the OTP Route API?
Mali is ml, the value that goes into both the prices lookup and the activation request body.
Do Malian numbers have a leading zero I need to remove?
No. Mali has no trunk prefix; a valid number is +223 followed by eight digits.
How much does a Mali SMS OTP cost?
Malian codes start from $0.20 per code, with the figure for each app quoted live by the API ahead of purchase.
Will I lose money if the app never sends the code?
No. An activation with no SMS by the end of the 20-minute window, or one you cancel, is refunded to the wallet in full.
Can someone without coding skills use it?
Yes. In the dashboard, choose Mali and the service, order the number, paste it into the app, and the code appears on the activation screen.
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.