SMS OTP has SIM swap fraud, DLT filter delays, and 95% delivery. WhatsApp OTP delivers to 99%+ of Indian users with a verified business account badge — users trust it more. This guide covers implementing WhatsApp OTP authentication using Meta's authentication template category.
| Factor | WhatsApp OTP | SMS OTP |
|---|---|---|
| Delivery to Indian users | 99%+ (90%+ are on WhatsApp) | 95% (carrier dependent) |
| DLT registration required | ❌ No | ✅ Yes — mandatory in India |
| SIM swap fraud risk | Lower (WhatsApp account-linked) | Higher (SIM-linked) |
| User trust | High (verified green tick) | Moderate (SMS spoofable) |
| Cost per OTP | ₹0.10-0.14 (authentication conv.) | ₹0.10-0.20 per message |
| Delay risk | Low (internet delivery) | Moderate (carrier congestion) |
| Autofill support | ✅ Android autofill supported | ✅ SMS autofill (OTP read) |
| One-tap experience | ✅ Copy code button in template | ✅ SMS autofill on Android |
Important: WhatsApp OTP requires the user to have WhatsApp installed and internet access. For users without WhatsApp, you must have SMS OTP as fallback. Always implement fallback for 100% coverage.
In WA.Expert → Templates → New Template → Category: Authentication. Authentication templates have a special format: "Your verification code is {{1}}. This code expires in 10 minutes." Meta approves these quickly (usually under 1 hour).
Generate a cryptographically random 6-digit OTP (not Math.random() — use crypto.randomInt(100000, 999999) in Node.js or secrets.randbelow(900000) + 100000 in Python). Store in Redis with 10-minute TTL: SET otp:{phone} {code} EX 600.
POST to WA.Expert API with the authentication template name and the OTP as variable {{1}}. The message includes a built-in "Copy Code" button — user taps it to copy the code.
When user submits the code, check Redis: GET otp:{phone} → compare with submitted code. If match: delete key (single-use) and proceed. If no match: increment failure counter (block after 3 failures).
If WA.Expert API returns error (phone not on WhatsApp), automatically fall back to your SMS provider (Twilio, MSG91, etc.) for the same OTP. Log fallback events for monitoring.
Meta has specific requirements for authentication templates — they use a special "authentication" category with a standardised format that includes a built-in "Copy Code" button.
Authentication templates have a separate pricing category (₹0.10-0.14 per conversation) and are approved much faster than marketing templates — often within 1-2 hours.
Authentication templates, fast approval, 99% delivery to Indian users. Get your WA.Expert API key and go live in hours.