Skip to content
All posts

Oct 20, 2026 · by Tawked

Twilio Verify alternative for Saudi phone numbers

Tawked Verify sends OTP codes to Saudi numbers at SAR 0.09 per code sent, with two API calls. Prices compared with Twilio Verify, with sources and dates.

If your users have Saudi mobile numbers, Tawked Verify is an alternative to Twilio Verify: an OTP verification API for Saudi numbers at SAR 0.09 per code sent. One call sends the code by SMS, a second call checks it, and the expiry, attempts and limits are built in. Codes go out from Tawked's own sender ID with your app's name in the text, so you register no sender name. Twilio Verify costs USD 0.05 per successful verification plus USD 0.1949 per SMS segment to Saudi Arabia, about SAR 0.92 for a one-segment code.

What is the alternative to Twilio Verify for Saudi numbers?

Tawked Verify, in short:

  • What it is: an OTP verification API, by SMS, for Saudi mobile numbers only.
  • Price: SAR 0.09 per code sent, VAT included: the final price. A send that is refused or fails before it goes out is refunded to your balance at once. Checking a code costs nothing. A resend is a new send and costs the same.
  • Billing: prepaid riyal balance, no contract, no monthly plan. New accounts start with SAR 10 of free credit.
  • Sender: Tawked's own sender ID. The text names your reviewed app. There is nothing to register.
  • Integration: two REST calls (POST /v1/verify/start and POST /v1/verify/check), the Supabase Send SMS hook, and the WooCommerce plugin.
  • Not for: marketing or bulk SMS, sending from your own sender name, or numbers outside Saudi Arabia.

How much does Twilio Verify cost for a Saudi number, and how much does Tawked cost?

Tawked Verify Twilio Verify
Built for OTP codes to Saudi mobile numbers, by SMS Verification across countries and channels (SMS, WhatsApp, voice, email, TOTP, push and more)
Public price, one Saudi SMS code SAR 0.09 per code sent, VAT included USD 0.05 per successful verification + USD 0.1949 per SMS segment to Saudi Arabia, about SAR 0.92 for one segment
Charged when The code is sent; a refused or failed send is refunded at once; checking is free The USD 0.05 only when the code is approved; SMS attempts "are always charged and not subject to delivery"; USD 0.001 for a message that ends as "Failed"
Arabic text One price per code, never per segment Per segment; an Arabic segment holds 70 characters
Sender Tawked's own sender ID, your app's name in the text, nothing to register A registered alphanumeric sender ID, pre-registration about 2 weeks, not available to domestic Saudi brands
Settings Code of 4 to 8 digits, expiry of 60 to 900 seconds, 1 to 5 attempts, up to 3 resends, 1 to 10 codes per number an hour Configurable per Verify Service
Billing Prepaid riyal balance, no contract, SAR 10 free credit Pay as you go in US dollars; volume discounts and committed-use contracts through sales

Twilio figures were read on 2026-10-20 on the pages under Sources; the Verify pricing page says "Pricing current as of August 2026". Riyal amounts use USD 1 = SAR 3.75. Twilio's pages price in US dollars and do not say tax is included. Tawked's price is the one on its pricing page.

A worked example. Say you send 1,000 codes in a month, 800 users type the right code, and every message fits in one segment.

  • Tawked: 1,000 × SAR 0.09 = SAR 90.
  • Twilio Verify: 1,000 × USD 0.1949 for the SMS + 800 × USD 0.05 for the successful verifications = USD 234.90, about SAR 881.

Two things change that sum. An Arabic text longer than 70 characters is two segments at Twilio, which doubles its SMS part; Tawked's price stays one price per code. And both sides charge a resend as a new send.

Do I need a sender ID?

At Twilio, yes. Its Saudi guidelines say a registered alphanumeric sender ID is required, that pre-registration takes about 2 weeks, and that Twilio "is unable to register Sender IDs on behalf of domestic brands" in Saudi Arabia because of a regulation against reselling domestic traffic.

At Tawked, no. Codes go out from Tawked's own sender ID, and the text names your application, whose name Tawked's team reviews before live sending. What you give up: the SMS does not show your own name as the sender. Our sender ID guide and the post on SMS sender IDs in Saudi Arabia explain the difference.

How do I move from Twilio Verify to Tawked?

The shape is the same: start a verification, then check the code. The one difference that matters: check takes the id that start returned, not the phone number.

Twilio Verify Tawked Verify
A Verify Service (ServiceSid) holds the settings One application in the console holds the settings and its API key
POST https://verify.twilio.com/v2/Services/{ServiceSid}/Verifications with To (E.164) and Channel=sms POST https://tawked.com/v1/verify/start with to, channel: "sms" and optional lang
To in E.164 to in any Saudi format: +966512345678, 966512345678, 00966512345678, 0512345678 or 512345678
Returns a verification sid Returns 201 with id, status: "pending" and expires_at; keep the id
POST …/VerificationCheck with To or VerificationSid and Code POST https://tawked.com/v1/verify/check with id and code
status: "approved" {"verified": true, "status": "verified"}
pending after a wrong code invalid_code with attempts_remaining
max_attempts_reached too_many_attempts
expired, canceled expired, canceled
Update the verification to canceled POST /v1/verify/{id}/cancel
Fetch a verification GET /v1/verify/{id}
A resend POST /v1/verify/{id}/resend: same id, the old code stops working, up to 3 resends, each charged
Basic auth with Account SID and auth token Authorization: Bearer tk_live_…

Send a code:

curl https://tawked.com/v1/verify/start \
  -H "Authorization: Bearer $TAWKED_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "0512345678", "channel": "sms"}'

Check it, from Node with fetch:

const res = await fetch('https://tawked.com/v1/verify/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.TAWKED_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ id: verificationId, code: userCode }),
});
const { verified, status } = await res.json();

Or from Laravel:

$result = Http::withToken(config('services.tawked.key'))
    ->post('https://tawked.com/v1/verify/check', ['id' => $verificationId, 'code' => $code])
    ->json();

The steps, in order:

  1. Sign up, create an application, and wait for its name to be reviewed. A test key (tk_test_) sends real SMS, stamped as a test, to the account owner's phone in the meantime.
  2. Put the two calls behind your existing send-code and check-code functions.
  3. Store the id that start returns next to the user's session.
  4. Map the statuses with the table above.
  5. Send Saudi numbers to Tawked and keep every other country on your current provider.

The full reference for both calls is at tawked.com/en/docs and docs.tawked.com.

I use Supabase or Firebase

Supabase. Point Supabase's Send SMS hook at Tawked. signInWithOtp and verifyOtp stay as they are; Supabase still makes and checks the code, and Tawked sends it by SMS. The setup is in our Supabase phone auth post.

Firebase or any other stack. Call the two endpoints from your own server: start when the user asks for a code, check when they type it.

When Twilio Verify is still the better choice

  • Your users are outside Saudi Arabia, or in many countries, and you want one provider for all of them. Tawked sends to Saudi mobile numbers only.
  • You need voice, email, TOTP or push verification. Tawked Verify sends SMS codes.
  • The SMS must show your own brand as the sender.
  • You already have volume pricing with Twilio across many products.

For the full picture, including Saudi SMS gateways and their prices, see SMS OTP providers in Saudi Arabia 2026.

FAQ

Is there a cheaper alternative to Twilio Verify for Saudi numbers? Tawked Verify costs SAR 0.09 per code sent, against about SAR 0.92 for one successful one-segment Twilio Verify code to a Saudi number (USD 0.05 + USD 0.1949, read 2026-10-20).

How much does Twilio Verify cost for one Saudi number? USD 0.05 per successful verification plus USD 0.1949 per SMS segment to Saudi Arabia, USD 0.2449 in all for one segment, about SAR 0.92.

Does Tawked's SAR 0.09 include VAT? Yes. SAR 0.09 per code sent is the final price, VAT included, with nothing added on top. Twilio's pages price in US dollars and do not say tax is included.

Am I charged if the user never types the code? At Tawked, yes: the charge is per code sent, whether or not the user types it. At Twilio, the USD 0.05 is not charged, but the SMS is.

Do I need to register a sender name with Tawked? No. Codes go out from Tawked's own sender ID, and the text names your reviewed app.

Can the SMS show my company's name as the sender? No. The sender is Tawked's sender ID; your app's name is in the text of the message.

Does Tawked work for numbers outside Saudi Arabia? No. Tawked Verify sends to Saudi mobile numbers only.

How much work is moving from Twilio Verify? Two calls to replace: start and check. The main change is keeping the id from start and passing it to check.

Does Tawked work with Supabase phone auth? Yes, through Supabase's Send SMS hook, with no change to your app's sign-in code.

Can I send marketing SMS with Tawked Verify? No. Tawked Verify sends one-time codes only.

What is Twilio? A global communications platform; Twilio Verify is its verification product.

Sources (read 2026-10-20)

Chat on WhatsApp