Deliverability

WhatsApp OTP vs SMS OTP: cost per verified user, with a calculator

WhatsApp OTP pricing in 2026: Meta charges $0.0008 to $0.0550 per delivered authentication message, by country. Rates vs SMS and a cost-per-user calculator.

By Published Updated 9 min readHow we research and fact-check

On this page

A WhatsApp one-time passcode is billed as an authentication template message: Meta charges per delivered message at a rate set by the recipient's country, from under a tenth of a cent to about five cents. SMS usually costs more per message in the same country. But users without WhatsApp still need SMS, so compare cost per verified user, not message prices.

All prices below are list prices in USD, fetched on 25 September 2026. Your contract, volume tier and currency can change them. WhatsApp is named here descriptively. MobileValidate is not affiliated with WhatsApp or Meta.

WhatsApp OTP pricing by country (2026)

A WhatsApp OTP costs the authentication rate of the recipient's country: on Meta's USD rate card effective 1 October 2026, from $0.0008 per delivered message in Colombia to $0.0550 in Germany. That card was still the current one on Meta's pricing page in an archived copy of 19 October 2026 (Meta, 2026). Ten large markets:

MarketAuthentication, per message (USD)Per 10,000 codes (USD)Authentication-international (USD)
Colombia0.00088n/a
India0.0014140.0304
North America (US, Canada)0.003434n/a
Nigeria0.0067670.0750
Brazil0.006868n/a
Mexico0.008585n/a
Pakistan0.01501500.0750
United Kingdom0.0220220n/a
Indonesia0.02502500.1360
Germany0.0550550n/a

These are list rates for the first volume tier; higher monthly volumes can unlock lower authentication rates, and "n/a" means the market has no authentication-international rate. Only delivered messages are charged. Every market on both 2026 cards is in our rate-card dataset, and the WhatsApp Business API pricing guide covers marketing, utility and service rates. The rest of this post compares these rates with SMS and turns them into a cost per verified user.

A calculator showing a per-message price, a table comparing app and SMS prices by country, an October 1 date card and cost per verified user bars.A calculator showing a per-message price, a table comparing app and SMS prices by country, an October 1 date card and cost per verified user bars.
Compare cost per verified user, including SMS fallback, before and after the rate change.

How does WhatsApp charge for OTP messages?

Per delivered message. Since 1 July 2025, Meta charges on a per-message basis on the WhatsApp Business Platform. It replaced the older conversation-based model. You are "only charged when a template message is delivered", and rates depend on the template's category and "the recipient WhatsApp phone number's country calling code" (Meta, 2026).

Passcodes go out as authentication templates, one of three template categories next to marketing and utility. Three details matter for OTP budgets:

  • Volume tiers. Since 1 July 2025, utility and authentication messages get lower rates at higher monthly volumes, per market.
  • Delivery-based billing. A message that isn't delivered isn't charged. That includes numbers with no WhatsApp account.
  • Rate changes are scheduled. Meta updates rate cards up to four times a year (1 January, 1 April, 1 July and 1 October) with at least one month's notice.

When we fetched the pricing page on 25 September 2026, the current rate cards were marked "effective July 1, 2026".

For the SMS fallback, the free OTP message template generator writes a code-first message and shows whether it fits in one segment.

What does a WhatsApp authentication message cost by country?

Here are the authentication rates from Meta's USD rate card effective 1 July 2026, next to a public SMS list price for the same country (Meta rate card, 2026; Plivo SMS pricing, 2026):

MarketWhatsApp authentication (USD)Authentication-international (USD)Public SMS list price, outbound (USD)
India0.00140.03040.0800 (international route)
Brazil0.0068n/afrom 0.0484
United Kingdom0.0220n/afrom 0.0372
Germany0.0550n/afrom 0.0950
Indonesia0.02500.1360from 0.3333
North America (US, Canada)0.0034n/a0.0077 (US long code, plus carrier surcharges)

Read the SMS column with care. It is one messaging platform's public pay-as-you-go price per SMS, fetched on 25 September 2026. "From" means the cheapest network: prices differ by the recipient's mobile network, and in Brazil, Indonesia and Germany the most expensive network listed costs roughly 30% to 110% more than the cheapest one. For India, the listed route is the international one, used by senders outside India; the domestic route isn't offered on that page. For the US, carrier surcharges come on top. Long messages are billed per segment (the free SMS character counter shows how many your text needs). Negotiated SMS rates can be much lower, and other platforms price differently. Use your own invoice.

Even with those caveats, the pattern is clear. In most markets on the list, the WhatsApp authentication rate is a fraction of the public SMS price. The gap is widest where SMS is expensive and WhatsApp is widespread.

What changes on 1 October 2026?

Meta published the rate card effective 1 October 2026 on its pricing page. For authentication, the main changes are (Meta, 2026):

  • Higher utility and authentication rates in Kazakhstan, Kuwait, Morocco, Oman and Ukraine, and on the October card also in Pakistan ($0.0100 → $0.015), Peru ($0.020 → $0.030) and South Africa ($0.0076 → $0.0095) (USD authentication rates, Meta rate cards effective 1 July and 1 October 2026).
  • Lower rates in Bangladesh, Iraq, Nepal and Sri Lanka. Sri Lanka's authentication rate becomes $0.0020.
  • Nine markets become standalone on the rate card instead of sitting in a "Rest of" region: Bangladesh, Iraq, Kazakhstan, Kuwait, Morocco, Nepal, Oman, Sri Lanka and Ukraine.
  • Nine new authentication-international rates in those same nine markets, for example $0.1440 for Sri Lanka and $0.1600 for Kazakhstan.

Rates in India, Brazil, the UK, Germany, Indonesia and North America are unchanged on the October card. Service messages (free-form replies inside the 24-hour window) also get a rate from 1 October 2026, equal to the utility and authentication rate per market; that doesn't change OTP costs, which use authentication templates.

What changes for India and Brazil billing in 2027?

The currency you are billed in, not the rate. Meta's pricing-updates page says businesses whose Sold-To country is India must move all their WhatsApp Business Accounts to INR billing by 31 December 2026; from 1 January 2027, Meta stops delivering messages from their non-INR accounts. Brazil follows the same pattern with BRL: migrate by 30 June 2027, and delivery from non-BRL accounts stops on 1 July 2027 (Meta, 2026). If your OTP traffic runs through an Indian or Brazilian entity, put the migration on your calendar: a blocked account means every code falls back to SMS.

When does the authentication-international rate apply?

Only to large senders based outside the recipient's country. Meta's rules (Meta, 2026):

  • A business becomes eligible if it sends more than 750,000 messages outside customer service windows in a moving 30-day period, across all its WhatsApp Business Accounts, to users in markets that have an authentication-international rate.
  • Once eligible, it gets 30 days' notice before the higher rate applies, and eligibility is permanent.
  • The rate applies only when the business's primary business location is in another country than the recipient's. An Indian business sending codes to Indian users pays the normal rate.
  • Nine markets have the rate today (Indonesia since 1 June 2024, India since 1 July 2024, and Egypt, Malaysia, Nigeria, Pakistan, Saudi Arabia, South Africa and the UAE since 1 February 2025). Nine more are added on 1 October 2026.

If you are a global app with heavy traffic to India or Indonesia, model both rates. The international rate for India ($0.0304) is more than 20 times the domestic one.

How do you calculate cost per verified user?

Message price is only half of it. Not every user has WhatsApp, and some WhatsApp codes need an SMS fallback. Use this formula per country:

Cost per verified user = c + s × (W + p × S) + (1 − s) × S

SymbolMeaningWhere to get it
sShare of your users with a WhatsApp accountYour own data, or a pre-check on each number
WWhatsApp authentication rate for the countryMeta rate card (your volume tier)
SYour SMS price per OTP (all segments)Your SMS invoice
pShare of WhatsApp sends that need an SMS fallbackYour logs: codes not delivered or not entered in time
cPre-check cost per number, if you run oneOur pricing page; unknowns and cached repeats are free

Worked examples, excluding c, with illustrative assumptions (s = 0.9 in India, Brazil and Indonesia, 0.7 in the UK; p = 0.05 everywhere) and the list prices from the table above:

ScenarioWSCost per verified userPer 1,000 usersSMS-only per 1,000Difference
India, domestic sender0.00140.0800$0.0129$12.86$80.00−84%
India, auth-international0.03040.0800$0.0390$38.96$80.00−51%
Brazil0.00680.0484$0.0131$13.14$48.40−73%
United Kingdom0.02200.0372$0.0279$27.86$37.20−25%
Indonesia, domestic sender0.02500.3333$0.0708$70.83$333.30−79%
Indonesia, auth-international0.13600.3333$0.1707$170.73$333.30−49%

The assumptions for s and p are placeholders, not measurements. Replace them with your own numbers. Two effects dominate. A lower s pushes the result toward the SMS-only price. A cheap negotiated SMS rate shrinks the gap, sometimes to nothing in markets like North America.

Where does a WhatsApp pre-check fit?

Before the send, to pick the channel. Without a pre-check, the usual pattern is "try WhatsApp, fall back to SMS on failure". Money-wise that works, because an undelivered WhatsApp message isn't charged. The cost is time: users without WhatsApp wait for a failed status before their SMS leaves, and some give up.

A pre-check answers the question first. With MobileValidate, the whatsapp check on POST /v1/lookup returns registered: true, false or null (unknown) with a checked_at time. Here is a test-mode request using documented test numbers:

Shell
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003"], "checks": ["whatsapp"], "wait": 5}'

In test mode, …001 answers registered: true, …002 registered: false and …003 unknown (registered: null). Your routing rule is short:

whatsapp.registeredRoute
trueOffer WhatsApp as the default, SMS as the alternative
falseSend SMS (or voice) straight away
null (unknown)Use your default flow; never block on missing data

The pre-check earns its cost in three situations. First, when you show the channel choice in the UI before sending ("We'll send your code on WhatsApp"). Second, when you use a timer-based fallback, where a wrong guess means paying for both messages. Third, when the check doubles as a fraud signal, next to line type, before any paid message leaves. See OTP fraud prevention checks and SMS pumping.

Keep c small. Check each number once, not at every login: repeat checks inside the freshness window come from your account's cache and aren't billed. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Our WhatsApp API guide covers timeouts and caching in detail.

When is SMS still the better choice?

In a few clear cases:

  • Low WhatsApp penetration among your users. If s is low, most users need SMS anyway, and a second channel adds work for little saving.
  • Cheap negotiated SMS. In markets such as the US, where public SMS prices are low per segment, the difference per code can be a fraction of a cent.
  • Auth-international exposure. A global sender over the threshold pays up to $0.16 per code in some markets from 1 October 2026, which can exceed local SMS contracts.
  • Users who prefer SMS. Let people choose. A code on an app they don't open converts worse than an SMS they read.

Measure p and conversion per channel after rollout, and keep SMS as a protected fallback. For how message costs and channels differ market by market, see the phone numbers by country guide. Our channel selection and SMS cost reduction pages show the full flow.

What are the key takeaways?

  • WhatsApp OTP is billed per delivered authentication message, by recipient country, under the per-message model in place since 1 July 2025.
  • On the rate card effective 1 July 2026, authentication rates run from $0.0008 (Colombia) to $0.0550 (Germany); India is $0.0014 and the UK $0.0220.
  • From 1 October 2026, nine more markets get authentication-international rates and several rates change. Pakistan, Peru and South Africa go up; India, Brazil, the UK, Indonesia and North America stay the same.
  • Compare cost per verified user: c + s × (W + p × S) + (1 − s) × S, with your own share of WhatsApp users and fallback rate.
  • Businesses billed from India must move to INR by 31 December 2026 (Brazil to BRL by 30 June 2027), or Meta stops delivering their messages.
  • A WhatsApp pre-check picks the channel before sending. It saves waiting time and double sends, and unknown results are free and never a reason to block.

Sources

  1. Pricing on the WhatsApp Business Platform (fetched 25 September 2026) — Meta for Developers, 2026
  2. USD rate card: cost per message on the WhatsApp Business Platform, effective July 1, 2026 and October 1, 2026 (CSV/XLSX linked from the pricing page) — Meta, 2026
  3. Authentication-international rates (fetched 25 September 2026) — Meta for Developers, 2026
  4. Pricing updates on the WhatsApp Business Platform: India INR and Brazil BRL billing (fetched 26 September 2026) — Meta for Developers, 2026
  5. Pricing on the WhatsApp Business Platform (Internet Archive copy of 19 October 2026: current rates effective October 1, 2026) — Meta for Developers, 2026
  6. SMS pricing by country (United Kingdom, India, Brazil, Indonesia, Germany, United States pages) — Plivo, 2026

Frequently asked questions

How much does a WhatsApp OTP cost?

Meta charges per delivered authentication template message, at a rate set by the recipient's country calling code. On the USD rate card effective 1 July 2026, rates range from $0.0008 (Colombia) to $0.0550 (Germany), for example $0.0014 for India and $0.0220 for the United Kingdom. These four rates are unchanged on the card effective 1 October 2026, which was still the current card in November 2026. Volume tiers can lower these rates.

What is the WhatsApp authentication-international rate?

A higher authentication rate that applies in some markets when an eligible business based in another country sends codes there. Eligibility starts above 750,000 qualifying messages in a moving 30-day period, with 30 days' notice. Nine markets have it today and nine more are added on 1 October 2026.

Is WhatsApp OTP always cheaper than SMS?

No. In many markets the WhatsApp authentication rate is well below public SMS prices, but the gap varies by country, by your SMS contract and by whether authentication-international rates apply to you. Users without WhatsApp still need SMS, so compare cost per verified user, not price per message.

Do I pay for a WhatsApp OTP sent to a number without WhatsApp?

Meta's pricing page says you are only charged when a template message is delivered. A message to a number with no WhatsApp account isn't delivered, so it isn't charged, but the user waits for the failure before your SMS fallback starts.

What does a WhatsApp pre-check add?

It tells you before the send whether the number has a WhatsApp account, so you can offer the right channel at once instead of waiting for a failed delivery. Results are registered, not registered or unknown; unknown results are free and shouldn't block anyone.

All articles

Know before you send.

Create a free account: approved automatically, usually within 10–15 minutes.

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.