raabt.ai

WhatsApp OTP API at Meta's Exact Rates (October 2026)

Send WhatsApp verification codes with one API call. You pay Meta's own authentication rate per country, only for delivered codes. Oct 2026 rates inside.

WhatsApp OTP API at Meta's Exact Rates (October 2026)

TL;DR

  • Raabt's WhatsApp OTP API sends one-time passwords and verification codes over WhatsApp with a single HTTPS request.
  • You pay Meta's exact rate. For each destination country we charge exactly what Meta charges for an authentication message. No markup.
  • Only delivered codes are charged. If WhatsApp can't deliver a code, the amount goes back to your balance.
  • No WhatsApp Business setup on your side. Codes go out from Raabt's verified WhatsApp sender with Meta-approved authentication templates, so there's no Meta approval to wait for.
  • Prepaid wallet, API keys, delivery logs and per-country prices are all in your dashboard. The full October 1, 2026 rate snapshot is below.

Why send codes over WhatsApp

For many of your users, WhatsApp is the app that's already open. A code that arrives there is seen right away, in a chat from a verified sender, instead of getting lost between promotional SMS.

Authentication is also one of the cheapest message types on WhatsApp. As of October 1, 2026, Meta charges $0.0079 for a delivered authentication message to a number in Iraq, $0.0107 in Saudi Arabia and $0.0036 in Egypt.

How it works

  1. Create an API key in Raabt under WhatsApp OTP. Keys start with rbt_otp_, and you can keep up to 5 active keys so you can rotate them without downtime.
  2. Top up your wallet with $5 to $1,000 at a time, using the same checkout as your plan.
  3. Pick a template. GET /templates lists the authentication templates you can send with, and their language.
  4. Send the code. Your server generates the code and asks Raabt to deliver it:
curl -X POST https://raabt.ai/api/v1/whatsapp-otp/send \
  -H "X-API-Key: $RAABT_OTP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+9647701234567",
    "code": "48213",
    "template_id": "TEMPLATE_ID"
  }'

The response gives you a message id, its status and the price held for it. Check delivery at any time with GET /messages/{id}: the status moves from accepted to sent, delivered and read, or to failed with Meta's error code.

You generate the code and you check what the user types. Raabt only delivers it and never stores the code itself.

Pricing: Meta's rate, nothing added

Meta charges per delivered message, based on the message category and the recipient's country code. Verification codes are authentication messages, and Raabt charges you the same per-country rate Meta charges, only when Meta confirms delivery:

  • Hold, then charge. When you send, the price is held from your balance. It's charged when Meta reports the message delivered and released if it fails. A code with no final status after 24 hours is released too.
  • A live price list. The price for every enabled country is in your dashboard and in the API docs, so you know the exact amount before you send.
  • We follow Meta's changes. When Meta updates its rate card, our prices follow it.

Authentication rates: October 1, 2026 snapshot

Meta's official USD rate card, effective October 1, 2026 (source). Prices are per delivered message.

Middle East and North Africa

MarketAuthenticationAuthentication-international
Iraq$0.0079$0.1280
Saudi Arabia$0.0107$0.0598
United Arab Emirates$0.0157$0.0510
Kuwait$0.0440$0.1200
Qatar$0.0120-
Oman$0.0247$0.0600
Egypt$0.0036$0.0650
Morocco$0.0230$0.0811
Turkey$0.0009-
Israel$0.0053-
Rest of Middle East$0.0091-
Rest of Africa$0.0040-

"Rest of Middle East" covers Bahrain, Jordan, Lebanon and Yemen. "Rest of Africa" includes Algeria, Libya, Sudan, Tunisia and most other African countries.

All other markets

MarketAuthenticationAuthentication-international
Argentina$0.0260-
Bangladesh$0.0037$0.0960
Brazil$0.0068-
Chile$0.0200-
Colombia$0.0008-
France$0.0300-
Germany$0.0550-
Hong Kong$0.0260-
Hungary$0.0350-
India$0.0014$0.0304
Indonesia$0.0250$0.1360
Italy$0.0300-
Kazakhstan$0.0180$0.1600
Malaysia$0.0140$0.0418
Mexico$0.0085-
Netherlands$0.0500-
Nepal$0.0034$0.1120
Nigeria$0.0067$0.0750
Pakistan$0.0150$0.0750
Peru$0.0300-
Poland$0.0122-
Romania$0.0290-
Russia$0.0400-
Singapore$0.0160-
South Africa$0.0095$0.0200
Spain$0.0200-
Sri Lanka$0.0020$0.1440
Ukraine$0.0298$0.0746
United Kingdom$0.0220-
North America$0.0034-
Rest of Asia Pacific$0.0113-
Rest of Central & Eastern Europe$0.0212-
Rest of Latin America$0.0113-
Rest of Western Europe$0.0171-
Other$0.0077-

About the international column. In some markets Meta has a higher authentication-international rate. It applies only to senders that Meta has notified as eligible, for recipients outside the sender's own country. Where Meta applies it to us for a destination, that's the price you'll see for that country in your dashboard: still Meta's rate, still no markup.

What changed on October 1, 2026

  • Iraq got its own, lower rate. Authentication messages to Iraq now cost $0.0079, down from the Rest of Middle East rate of $0.0091.
  • Eight more markets now have their own rates: Kuwait ($0.0440), Oman ($0.0247), Morocco ($0.0230), Kazakhstan ($0.0180), Ukraine ($0.0298), Bangladesh ($0.0037), Nepal ($0.0034) and Sri Lanka ($0.0020). The first five became more expensive; Bangladesh, Nepal and Sri Lanka got cheaper.
  • Price increases in Pakistan ($0.0150), Peru ($0.0300) and South Africa ($0.0095).
  • Nine new authentication-international rates, one in each of the newly separate markets.

Limits that protect delivery

  • Up to 5 codes per recipient per hour, so nobody can flood one number.
  • Up to 600 codes per hour per account.
  • Up to 120 send requests per minute.

Logs

Every request and every message is in your dashboard: the recipient, the template, the status, Meta's error if there was one, and the exact charge. Request logs are kept for 90 days.

FAQ

Do I need my own WhatsApp Business account? No. Codes are sent from Raabt's verified WhatsApp sender, with templates Meta has already approved.

What happens if my balance runs out? The API answers with an insufficientBalance error and nothing is sent. Top up and try again.

Can I send marketing messages with it? No. The OTP API only sends authentication templates. For promotions and announcements, use bulk campaigns, which run on your own WhatsApp number.

Which countries can I send to? Every country with a price in your dashboard. Requests to other countries are rejected before anything is charged.


Ready to send your first code? Create a free account and open WhatsApp OTP, or see what else Raabt does on WhatsApp.

MR

About the author

Mohamed Rasul

Founder & CEO, Raabt AI

LinkedIn →