Skip to content

This term

WhatsApp vs SMS OTP Cost

A comparison of what a one-time passcode costs in India as a WhatsApp authentication template versus a DLT-registered SMS, per verified login.

Also called: WhatsApp OTP vs SMS OTP price · OTP cost comparison India · WhatsApp authentication vs SMS cost

Often confused with

Authentication Template

A WhatsApp template category for one-time passcodes: Meta supplies the text, you supply the code, and a copy-code, one-tap or zero-tap button delivers it.

Read the Authentication Template entry

What does a month of WhatsApp OTPs cost?

  • Authentication₹0.14per message
    2,58,000 × ₹0.14 · max 5,00,000= ₹36,120.00
  • Authentication (international)₹2.4971per message
    0 × ₹2.4971 · max 1,00,000= ₹0.00

Estimated total

₹36,120.00

for 2,58,000 messages · blended ₹0.14 per message

Share of spend

  • WhatsApp OTPs delivered, Indian business100% of messages · 100% of spend
  • WhatsApp OTPs from an eligible business based abroad0% of messages · 0% of spend

WhatsApp OTPs delivered, Indian business drives 100% of the bill — at ₹0.14 a message, its volume matters most.

Undelivered WhatsApp OTPs are not billed. SMS is not priced here because rates depend on your provider: add fallback SMS × segments × your contracted DLT rate to compare cost per verified login.

Rates for India, ex-GST.

Set the OTPs delivered on WhatsApp from an Indian sender and from an eligible sender based abroad, priced on InfiQ's India card, then compare the total with what your SMS contract charges for the same volume.

Total ₹36,120.00 for 2,58,000 messages.

What is the WhatsApp vs SMS OTP cost comparison?

On WhatsApp, a one-time passcode is sent as an authentication template, with a fixed body containing the code and a copy-code or one-tap autofill button. Meta charges it per delivered message at the authentication rate for the recipient's market; for India the rate quoted on this site is ₹0.14, ex-GST. Authentication volume tiers lower Meta's rate as monthly volume grows. A business based outside India that Meta makes eligible, after more than 750,000 OTPs to listed markets in a moving 30 days, pays a higher authentication-international rate for Indian users (see /pricing). A passcode that is never delivered, because the user has no WhatsApp or stays offline past the template's time-to-live, is not billed.

By SMS, the same passcode travels as a DLT-registered message: the business is a registered principal entity, the message uses an approved header (sender ID) and a registered DLT content template, and an aggregator delivers it. The per-SMS price is set by the provider and volume, and it is charged per segment: 160 characters in GSM-7, or only 70 when the text contains any non-GSM character such as Hindi script or an emoji. Many providers bill each submitted SMS rather than each delivered one, so check the contract.

List rates alone do not settle the comparison. The useful number is cost per verified login: everything spent on passcodes, including resends and fallbacks, divided by successful verifications. Most businesses send WhatsApp first and use SMS as the fallback channel only when WhatsApp has not delivered within a set timeout, so the real bill is WhatsApp's delivered share at the authentication rate plus the fallback share at the SMS rate. Autofill and copy-code buttons can also raise completion rates, which lowers cost per login even at similar per-message prices.

Key takeaways

  • Compare OTP channels on cost per verified login, including resends and fallbacks, not on headline per-message rates.
  • A WhatsApp OTP is an authentication template billed per delivered message; the India rate quoted on this site is ₹0.14.
  • DLT SMS is billed per segment (160 GSM-7 or 70 UCS-2 characters) and often per submission, depending on the contract.
  • A high-volume business based outside India can be made eligible for a higher authentication-international rate on OTPs to +91 numbers.
  • Send WhatsApp first, wait for the delivered status and fall back to SMS only after a timeout matched to the template's TTL.

The WhatsApp vs SMS OTP cost comparison: key facts and limits

WhatsApp billing
Per delivered authentication message
WhatsApp India authentication rate (ex-GST)
₹0.14
Eligible business based abroad
Higher authentication-international rate (see /pricing)
Authentication TTL
Default 10 minutes; 30 seconds to 15 minutes
SMS segment size
160 GSM-7 or 70 UCS-2 characters (153 / 67 per part when split)
SMS prerequisites (India)
DLT entity, header and content template
SMS billing
Per segment; often per submission, by contract

Why the difference matters

Why does the WhatsApp vs SMS OTP cost comparison matter?

OTPs are high-volume, low-margin messages: an app with 300,000 logins a month pays for every resend, every fallback and every passcode that arrives too late to use. Choosing a channel on headline rates can lock in a more expensive flow. Modelling cost per verified login, with WhatsApp's charge-on-delivery and SMS's per-segment billing side by side, shows where a fallback design saves money and where it quietly pays twice.

How does the WhatsApp vs SMS OTP cost comparison work?

  1. Step 1

    Price both channels the same way

    Take the authentication rate for India (and the authentication-international rate if your business is based abroad and Meta has made it eligible) and your contracted DLT SMS rate, both ex-GST.

  2. Step 2

    Count segments and billable events

    Check how many SMS segments your OTP text uses and whether your provider bills on submission or on delivery. WhatsApp bills delivered messages only.

  3. Step 3

    Measure delivery shares

    From your logs, find the share of users whose WhatsApp OTP is delivered within your timeout and the share who need SMS.

  4. Step 4

    Set a fallback with no overlap

    Wait for the WhatsApp delivered status, then send SMS only if it has not arrived. Match the template's time-to-live (message_send_ttl_seconds, 30 seconds minimum) to the timeout so a late WhatsApp delivery cannot follow the SMS.

  5. Step 5

    Compare cost per verified login

    Divide the month's WhatsApp and SMS OTP spend by successful verifications, and track it as the metric instead of either per-message price.

The WhatsApp vs SMS OTP cost comparison in code

const GRAPH = "https://graph.facebook.com/v26.0";
async function sendWhatsAppOtp(to, code) {
const res = await fetch(`${GRAPH}/${process.env.PHONE_NUMBER_ID}/messages`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
messaging_product: "whatsapp",
to,
type: "template",
template: {
name: "login_otp", // an approved authentication template
language: { code: "en" },
components: [
{ type: "body", parameters: [{ type: "text", text: code }] },
{ type: "button", sub_type: "url", index: "0",
parameters: [{ type: "text", text: code }] }, // copy-code button
],
},
}),
});
if (!res.ok) throw new Error(`WhatsApp send failed: ${res.status}`);
const data = await res.json();
return data.messages[0].id; // wamid, matched against status webhooks
}
// Wait as long as the template's TTL so WhatsApp cannot deliver after the SMS.
export async function sendOtp(to, code, { waitMs = 30_000 } = {}) {
try {
const wamid = await sendWhatsAppOtp(to, code);
// waitForStatus resolves true on "delivered", false on "failed" or timeout.
if (await waitForStatus(wamid, "delivered", waitMs)) {
return { channel: "whatsapp", charged: "authentication, per delivered message" };
}
} catch {
// Not sent or not deliverable: undelivered WhatsApp messages are not billed.
}
await sendDltSms(to, code); // your provider: registered header + DLT content template
return { channel: "sms", charged: "per SMS segment, per your provider's terms" };
}

waitForStatus and sendDltSms stand for your own webhook store and SMS provider client.

Example: A Pune lending app's login flow

A Pune fintech app sends 300,000 OTPs a month. It switches to WhatsApp first: 86% of passcodes are delivered on WhatsApp within 30 seconds and are charged at the authentication rate; the remaining 14% (users without WhatsApp, or offline) fall back to a DLT SMS. Because undelivered WhatsApp OTPs are not billed and the template's 30-second time-to-live stops late deliveries, nobody is charged twice. The team also moves its Hindi OTP text to a shorter English template, which takes the SMS fallback from two segments to one.

Common mix-ups

Common mistakes with the WhatsApp vs SMS OTP cost comparison

  • Paying twice for one login

    If SMS fires while the WhatsApp OTP is still in flight, both can be delivered and charged. Wait for the delivered status and set the template TTL to match the fallback timer.

  • Comparing headline rates

    A cheaper per-message price can lose if it needs more resends or delivers later. Compare cost per verified login across the whole flow.

  • Forgetting the international rate

    A business based outside India that passes Meta's volume threshold pays the higher authentication-international rate for Indian users, after 30 days' notice. Price it into the comparison before the start date.

  • Unicode SMS doubling the cost

    One Hindi character or emoji switches SMS to UCS-2 and 70-character segments. Keep fallback OTP text short or in GSM-7.

WhatsApp vs SMS OTP Cost FAQs

Is a WhatsApp OTP cheaper than an SMS OTP in India?+
Whether a WhatsApp OTP is cheaper depends on your SMS contract and on how many passcodes need a fallback. The India authentication rate quoted here is ₹0.14 per delivered message, while SMS rates vary by provider and segment count, so compare cost per verified login.
Am I charged for a WhatsApp OTP that never arrives?+
No, Meta bills a WhatsApp OTP only when it is delivered. A passcode to someone without WhatsApp, or one dropped when its time-to-live expires, is not charged.
Do I still need SMS if I use WhatsApp OTPs?+
Most businesses still need SMS as a fallback for users WhatsApp cannot reach. Some users do not have WhatsApp or are offline, so a fallback keeps every user able to log in; the goal is to send SMS only when WhatsApp has not delivered.
Does the authentication-international rate apply to Indian businesses?+
No, an Indian business pays the standard India authentication rate for OTPs to Indian numbers. The higher authentication-international rate applies only when a business based outside India, and made eligible by Meta for its volume, sends authentication templates to +91 users.

Rules of thumb

Best practices for the WhatsApp vs SMS OTP cost comparison

  • Track WhatsApp delivery within your timeout as the key ratio; it decides how much SMS you pay for.
  • Use copy-code or one-tap autofill buttons to raise completion on WhatsApp.
  • Keep the SMS fallback text in GSM-7 so it fits one segment.
  • Rate-limit resend buttons; every resend is another billable message.

See InfiQ pricing

* Per-message rates for India, ex-GST: marketing, utility and authentication effective 1 July 2026; service messages ₹0.145 since 1 October 2026 (they were ₹0 until 30 September 2026). Volume commitments earn discounts — final rate is confirmed on your account; applicable GST extra. Rates for other countries differ (see the international rate table on /pricing).

Try it on the official WhatsApp Business API

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.