Quick answer
Phone-number verification is the default sign-in in Saudi apps, and its real cost has three parts: sender name registration in your company name through a licensed local provider, the per-message price, and any platform subscription. In our packages OTP messages are on our account for a full year within the app price, then fall under the optional renewal from year two at 20% of the contract value. Sender registration fees are set by the regulator and the provider, so we point you to their sites.
Why a verification code is a must in any Saudi app
Saudi users expect to sign in with their phone number and a code. Three practical reasons: the phone number is the operational identity, since ordering, delivery and customer contact run through it; fewer sign-up steps mean fewer lost customers, because a six-digit code arrives in seconds while passwords are forgotten; and apps that touch money need it, since payment gateways expect a verified number. We build phone sign-in by default, with guest browsing so the code is only requested when needed. More under mobile app development.
Sender name registration and regulatory requirements
In Saudi Arabia a message from an unregistered sender name does not arrive. The sender name is what the customer sees instead of a number, usually your company name in Latin letters, registered through a licensed local SMS provider under the rules of the Communications, Space and Technology Commission. The usual stages: an account with a licensed local provider in the company name; a sender name request matching your trade name; classification of OTP as service messages, which allows sending at any hour; and approval by the mobile networks, which takes most of the time. Fees change, so check the Commission's website and the provider's written price list, and look for the per-message price, any monthly minimum, and whether the sender name stays yours if you leave.
Sending options: local SMS or WhatsApp
| Criterion | SMS via local provider | WhatsApp Business |
|---|---|---|
| Reach | Every phone in Saudi Arabia, no app needed | WhatsApp users only |
| Sender identity | Registered through the provider | Meta-verified business account |
| Billing | Per message | Per authentication message |
| Approval | Sender name approval by the networks | Template approval by Meta |
| Delivery speed | Seconds | Seconds with an internet connection |
| Best as | The primary channel for any app | A fallback when SMS fails |
We recommend SMS as the primary channel because it reaches every phone unconditionally, and WhatsApp as a second option shown when the code does not arrive, so the customer continues instead of closing the app. WhatsApp may also be cheaper at your volume, which we calculate during analysis.
What our offer covers
In the SAR 3,999 app package and the SAR 4,399 app with linked website package, OTP messages are on us in the first year, like the server, hosting, domain, certificate, store publishing, support and warranty:
| Item | First year | From year two |
|---|---|---|
| OTP messages | On our account within the package price | Within the optional renewal at 20% of the contract value per year |
| Server, hosting, domain, certificate | Included | Within the same renewal |
| Support and warranty | Included | Within the renewal per the contract |
| Sender name registration | Done with you; fees per provider | Stays in your name |
| New features or design | Per contract scope | Not covered, priced separately |
| Automatic renewal | None | None, your decision every year |
Renewal is your decision alone and never charged automatically; if you do not renew, the accounts are handed over in your name. Package details are on the pricing page, post-launch operations under hosting and automation, and for stores, where messages also cover order confirmation, see the online store package.
Mistakes that stop the code from arriving
- Sender name not yet approved. Messages drop at the network silently; we confirm approval before any live test.
- Number format. A leading zero or a missing country code sends nowhere; we normalize it before sending.
- Provider balance ran out. The most common silent failure after launch; we monitor it and set an alert.
- No resend limit. Without a cooldown one person can burn hundreds of messages a minute; we set a delay and a daily cap per number.
- The server sends the code to the app. The code is generated and compared on the server only and never sent to the app.

