OTP & User Verification via WhatsApp
Send instant one-time passwords to Iraq, Syria, and all MENA countries. No templates. No Meta approval. Just create an instance and start verifying users in minutes.
SMS OTP is broken in Iraq & Syria. WhatsApp just works.
SMS delivery rates in Iraq and Syria are notoriously unreliable — messages get delayed, blocked by carriers, or simply never arrive. WhatsApp penetration in the region exceeds 90%, making it the most reliable channel for OTP delivery. With Nabda OTP, your verification codes land in seconds, not minutes.
Instant Delivery
OTPs delivered via WhatsApp in under 3 seconds on average, even on slow mobile connections.
No Templates Needed
Send any plain text message. No approval process, no waiting, no Meta business verification required.
Iraq & Syria First
Purpose-built for +964 and +963 numbers. Full support for E.164 format across all MENA countries.
Secure by Design
Instance-scoped Bearer tokens. Generate OTPs server-side. Each instance has a dedicated number.
Delivery Webhooks
Real-time callbacks for sent, delivered, and failed events. Know exactly when your OTP arrives.
Flat Pricing
One flat monthly fee per instance. No per-message costs. Send unlimited OTPs without surprises.
Go live in 4 simple steps
Create a Nabda OTP Account
Sign up at dash.nabdaotp.com. Free to start, no credit card required.
Create an Instance & Scan QR
Each instance gives you a dedicated WhatsApp number. Scan the QR code once to connect your WhatsApp — done.
Get Your Instance Token
Call the select-instance endpoint to receive a Bearer token scoped to your instance. Store it securely on your backend.
Send OTP with a Single API Call
POST to /api/v1/messages/send with the phone number and your message. That's it.
Send your first OTP in under 10 lines
Everything runs server-side. Generate the OTP, send it via Nabda, store the hash — verify on submission.
// 1. Generate OTP on your server (never the client)
function generateOTP() {
return Math.floor(100000 + Math.random() * 900000).toString();
}
// 2. Send via Nabda OTP API
const otp = generateOTP();
const response = await fetch("https://api.nabdaotp.com/api/v1/messages/send", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${instanceToken}`
},
body: JSON.stringify({
phone: "+9647701234567", // Iraq (+964) or Syria (+963)
message: `Your verification code is ${otp}. Valid for 5 minutes. – YourApp`
})
});
// 3. Store hashed OTP in your DB and verify on submission
if (response.ok) {
await storeOTP(userId, otp, Date.now() + 5 * 60000);
}Built for every verification scenario
Start verifying users via WhatsApp today
Create your first Nabda OTP instance in minutes. No contracts, no per-message fees, no Meta approval needed.