OTP delivery, built for the Gulf
OTP codes that actually arrive.
OTPRelay carries the hard part of Gulf OTP - sender registration, multi-route failover, and fraud protection. Send us a code you generated and we deliver it, or let us generate and verify the whole thing. Either way, every code that lands is a user who gets in.

What we carry
Shipping OTP in the Gulf is a project. OTPRelay makes it one API call.
Before a single code reaches a phone, Gulf SMS demands a stack of work most teams never see coming. Here's the list you'd otherwise own - and what's left once OTPRelay carries it.
On your own, in the Gulf
- Register a separate sender ID for every operator in every country - dozens of approvals (KSA ~15 days, Kuwait ~4 weeks), each on its own timeline
- Re-submit every message template for operator approval - and re-do it each time a rule changes or you add a market
- Contract multiple SMS providers and route between them - no single provider reliably reaches every Gulf network
- Build failover for when a route degrades, so one bad path doesn't drop a code
- Stand up SMS-pumping (AIT) defense before fake traffic drains your budget
- Build the code lifecycle and wire it to delivery yourself - or keep your own and still solve every line above
With OTPRelay
- Send your own code - 1 call
- POST the number and the code you generated; we deliver it from our pre-cleared sender with failover and fraud protection. You verify on your side.
- Or go fully managed - 2 calls
- POST just the number; we generate and send the code, then check it - attempts, expiry, and the lifecycle handled.
Either way, sender registration, routing, failover, and fraud defense - every line on the left is ours to carry, not yours, at one flat price per delivered SMS. Live in Saudi Arabia today, with the UAE, Qatar, Kuwait, Bahrain, and Oman rolling out.
Get early accessTwo ways to integrate
Bring your own code, or let us run the whole verification.
OTPRelay is OTP delivery for the Gulf. Use just the delivery - send a code you generated and verify it yourself - or hand over the entire lifecycle. Same routes, same fraud protection, same price. You choose how much to own.
Send - your own code
1 callYou generate the OTP. POST the number and the code; we wrap it in the pre-cleared template, deliver it with route and operator failover, and return delivery status. You verify it on your side.
- You own generation, attempts & expiry
- Drops into your existing auth logic
- Delivery status via response + webhook
For teams that already verify codes and just need Gulf delivery.
Verify - fully managed
2 callsWe generate the code, send it, and check it. POST the number to send; POST the code the user typed to verify. Attempts, expiry, and the verification lifecycle are handled.
- We own the whole code lifecycle
- Zero verification code to write
- approved / expired statuses out of the box
For teams that want phone verification live without building it.
Both ride the same delivery layer - multi-route and operator failover, SMS-pumping protection, a pre-cleared sender, and one flat price per delivered SMS.
Why OTPRelay
The hard part isn't the API. It's getting codes to land in the Gulf.
Anyone can expose a send endpoint. OTPRelay handles what actually breaks in the region: sender registration, carrier filtering, route failover, and fraud - under whichever mode you use.
- Nothing to register
- No sender-ID filings, no per-country operator approvals, no waiting. We cleared the sender once - take an API key and your first code goes out today.
- Reliable at any volume
- Multiple delivery routes with automatic failover - a dropped route never means a dropped code, from a hundred a day to a million.
- Fraud protection built in
- SMS-pumping defense is on from day one, so fake traffic can't drain your budget as you scale.
- Reach across the GCC
- One integration covers every market we deliver to - add a new Gulf country without touching your code.
- Your code, or fully managed
- Bring your own OTP and use OTPRelay purely for delivery, or let us generate and verify the whole thing - same API key, switch any time.
- Delivery you can see
- Real-time status and completion analytics show exactly what's landing per operator, so you trust delivery as volume climbs.
Built for developers
One call to send. Two to verify. The hard part stays ours.
Plain REST and JSON with a single API key. Send a code you generated and we just deliver it - or let us generate, send, and check it. No SDK to install, no per-market branches, no re-architecting as you grow; routing, failover, and compliance stay on our side.
- Send a code you generated
- POST the number and your code to /v1/messages. We wrap it in the pre-cleared OTP template and deliver it with failover and fraud protection - you verify on your side.
- Or let us verify it
- POST just the number to /v1/verifications, then POST the code the user typed to /check. OTPRelay handles generation, attempts, expiry, and status.
- REST + JSON, bearer keys
- First-class test mode
- Idempotent retries
- Webhooks for every event
Send your code
Response
Coverage
Where we deliver - with the registration already handled.
Every Gulf market sets its own sender-ID rules, approval timelines, and operator steps. OTPRelay has already cleared them, so you send without registering anything. Saudi Arabia is live today, with the rest of the GCC rolling out as demand grows - wherever you send, it's the same delivery and the same pre-cleared sender.
Saudi Arabia
+966
Pre-registration required; CST-licensed provider.
United Arab Emirates
+971
Operator portal + consent; promo needs AD- prefix.
Qatar
+974
Sender-ID registration mandatory; unregistered blocked.
Kuwait
+965
Registration required for Ooredoo / Zain.
Bahrain
+973
No pre-registration; dynamic alphanumeric supported.
Oman
+968
Domestic + international pre-registration; operator NOC letters.
Reliability
Your codes get through. At one a minute or ten thousand.
A code that doesn't arrive is a customer who can't sign in. So when a route degrades, OTPRelay automatically retries over another and keeps going until the code lands - at any volume, without you watching.
- Route failover
- Within a single operator, OTPRelay scores route health continuously and re-routes degraded traffic to a healthier path.
- Operator failover
- Where a number can be reached on more than one network, OTPRelay automatically retries the same code via an alternate operator - all over SMS.
Message msg_01HZX9…
delivered- 1stc · primary routeno DLR in 8s
- 2stc · alternate routefiltered
- 3Mobily · primary routedelivered 1.4s
Use cases
Every signup, login, and payment - verified.
Wherever a code stands between your users and what matters, OTPRelay delivers it - your code or ours - and, if you want, confirms it came back.
Your verification code for Northwind Bank is: 482190
Signup verification
Confirm there's a real phone behind every new account - so you filter out fake and bot signups before you spend on KYC.
Your verification code for Acme Cloud is: 305517
Login & 2FA
Add a second factor on new-device logins and step-ups, without the friction that costs you conversions.
Your verification code for Vertex Pay is: 657301
Transaction confirmation
Verify the user controls the phone before money moves - satisfy SCA and stop account takeover.
Your verification code for Orbit Market is: 209847
Account recovery
Re-verify the real owner on password resets, so the right person gets back in - and no one else.
Example messages - your own company name appears in every code.
When signup, login, payment confirmation and account recovery all ride on the same passcode, delivery is not a commodity - it’s whether you keep the customer.
Pricing
Simple credits. One per SMS.
One credit sends one SMS - whether you deliver your own code or use managed verify, the price is the same. Buy exactly as many as you need, from 500 to 5 million. Slide to size your top-up and the price updates live in your local currency, with the whole platform included: failover, SMS-pumping protection, analytics, and webhooks. No platform fee, no per-attempt surprises.
Pricing for Saudi Arabia · SAR
Credits
10,000 credits
SAR 7,300.00
≈ SAR 0.73 per SMS
One flat per-SMS rate in every market - no tiers, no minimums, and no platform fee on top.
Get early accessAlways included
- Send your own code, or fully managed verify
- Automatic route & operator failover
- SMS-pumping protection, on by default
- Delivery & completion analytics
- Per-request webhooks & real-time status
- Pre-cleared sender - nothing to register
- Credits never expire
One credit = one delivered SMS, priced at a single flat rate in each market's local currency. SMS-pumping protection is on by default, so bots can't burn your credits. Same flat rate whether you bring your own code or let us verify. More regions are rolling out - get early access to lock in your rate.
Frequently asked questions
Get early access in your market.
We're onboarding a limited group of Gulf design partners. Join now to lock in founding pricing and priority onboarding, and be sending within an afternoon of launch - starting in Saudi Arabia. We handle delivery, retries, and fraud as you grow.
Prefer to read first? Explore the docs.