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.

Your code or fully managedLive in one callFraud protection built inNothing to register
An SMS from OTPRelay delivering a verification code

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

1
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.
2
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 access

Two 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 call

You 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.

bash
POST /v1/messages{ "to": "+966512345678", "code": "418207" }
  • 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 calls

We 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.

bash
POST /v1/verifications      → sends a generated codePOST /v1/verifications/check  → { "code": "418207" }
  • 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.

1
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.
2
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

POST /v1/messages
curl https://api.otprelay.io/v1/messages \  -H "Authorization: Bearer sk_live_••••" \  -H "Content-Type: application/json" \  -d '{ "to": "+966512345678", "code": "418207" }'

Response

201 Created
{  "id": "msg_01HZX9Q2K3M7B8N4P5R6S7T8U9",  "object": "message",  "status": "sent",  "to": "+966512345678",  "sender": "OTPRelay",  "created_at": "2026-06-16T10:00:00Z"}

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.

We pre-register~15 days

United Arab Emirates

+971

Operator portal + consent; promo needs AD- prefix.

Portal handled~2 weeks

Qatar

+974

Sender-ID registration mandatory; unregistered blocked.

We pre-register~2 weeks

Kuwait

+965

Registration required for Ooredoo / Zain.

We pre-register~4 weeks

Bahrain

+973

No pre-registration; dynamic alphanumeric supported.

No registration~immediate

Oman

+968

Domestic + international pre-registration; operator NOC letters.

We pre-register~14-18 days

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
  1. 1stc · primary route
    no DLR in 8s
  2. 2stc · alternate route
    filtered
  3. 3Mobily · primary route
    delivered 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.

OTPRelay · SMS

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.

OTPRelay · SMS

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.

OTPRelay · SMS

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.

OTPRelay · SMS

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.

Fintech & walletsMarketplacesSaaS & developer toolsCrypto & exchangesEcommerceGaming

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

5005M

One flat per-SMS rate in every market - no tiers, no minimums, and no platform fee on top.

Get early access

Always 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.