| Criterion | OTP SMS | OTP WhatsApp |
|---|---|---|
| Indicative cost | From 0.48 MAD / SMS | From 0.65 MAD / message |
| Measured delivery (August 2026) | 91.8% confirmed delivered (local routes to IAM/Orange/Inwi) | Delivery and read receipt for every message (if the customer has WhatsApp) |
| Reach | 100% of Moroccan numbers (smartphone not required) | Only numbers with WhatsApp active |
| Network dependency | Carrier mobile network (works even on 2G) | Requires an active data connection |
| Perceived open rate | High, read almost immediately | Very high among active users, variable if notifications are muted |
| Message customisation | Plain text, customisable Sender ID | Rich templates (buttons, brand logo) |
| Fallback available | — | Yes, automatic switch to SMS |
Why WhatsApp OTP costs less — and where the catch is
The "0.65 MAD versus 0.792 MAD" math checks out, but it's only half the story. WhatsApp OTP assumes your customer has the app installed, active, with notifications on, and a working data connection at the moment you send. For a young, urban customer segment, that holds true almost every time. For a broader customer base — rural areas, unstable data connections, users who still default to calls and plain SMS — real WhatsApp OTP coverage can drop noticeably, and every failed delivery loses you a user mid-signup or mid-payment. SMS, by contrast, depends on no app and no active data connection, and works even on 2G with a basic handset. It costs more per message, but it's the only option that reaches 100% of the Moroccan mobile subscriber base without exception.
The real question isn't "which one," it's "in what order"
For the vast majority of Moroccan use cases — sign-up, login, order validation — best practice isn't picking one channel over the other, it's combining them intelligently: try the number on WhatsApp when it has an active WhatsApp account, and fall back to SMS if the message isn't confirmed delivered within a short window, so you never block a user who doesn't have WhatsApp active at that exact moment. That's what EnvoiSMS.ma's verification gives you: if Meta refuses the WhatsApp send, the code goes out by SMS, and a Verify app configured with automatic cascade falls back to SMS after the channel timeout (30 seconds by default) — a one-time setup choice on the API side, not something you rebuild on every send.
Case by case: which channel to favor for your business
Fintech and online banking — SMS usually remains the reference for critical authentication, particularly to stay aligned with Bank Al-Maghrib compliance expectations and the habits of a customer base broad in age and geography. An SMS-first fallback (with WhatsApp as a complement, not the other way around) is generally the safer default. E-commerce and COD order validation — Here, WhatsApp-first makes sense: your e-commerce audience skews connected, and the lower cost adds up when you're validating thousands of orders a month. Automatic SMS fallback protects orders from less-connected customers. Healthcare and appointment reminders — SMS remains more reliable for reaching a broad patient base without assuming WhatsApp usage, especially for an older audience. Mobile apps and consumer SaaS — If your audience is already 100% mobile and connected (often the case for an app), WhatsApp OTP as the first channel is an excellent cost/experience choice, with SMS as the safety net.