Receiving Zalo OTPs on OTP Route numbers through the API

OTP Gateway from $0.20 per code198 countriesAPI id: zaloDedicated US/CA numbers from $1.95/month
Quick answer

A team receives a Zalo verification code by ordering a one-time number for the zalo service from the OTP Route OTP Gateway, entering it in Zalo, and reading the code from the dashboard, a REST poll or a signed webhook. Pricing starts at $0.20 per code depending on the country, and if no code arrives within the 20-minute window the wallet is refunded in full.

What does the Zalo verification code API flow look like?

The service id is zalo. Calls go to https://otproute.com/api/v1 with a Bearer key prefixed or_live_, issued in the Developer console.

  1. Get country ids from GET /api/v1/countries; Vietnam, for example, is vn.
  2. Check live price and availability with GET /api/v1/prices?country=vn&service=zalo.
  3. Create the activation: POST /api/v1/activations with {"service": "zalo", "country": "vn"}. Store the activation id and the number returned.
  4. Enter the number on the Zalo phone screen of the test account you control.
  5. Collect the code by webhook or by polling, or end the order with POST /api/v1/activations/{id}/cancel.

A balance check with GET /api/v1/balance at suite start avoids mid-run surprises. See the API documentation for full request shapes.

Building a webhook receiver for Zalo codes

Register an endpoint in the Developer console and subscribe to activation.sms_received, activation.expired and activation.cancelled. Each request has an X-OTPRoute-Signature header shaped t=<unix>,v1=<hex>; compute HMAC-SHA256 over <t>.<raw body> using the endpoint secret, compare in constant time, and reject old timestamps.

Make the handler idempotent by keying stored results on the activation id. If the same event is delivered twice, the second write should be a no-op. Teams without a public endpoint can poll GET /api/v1/activations/{id} instead; the 300-requests-per-minute limit leaves room for a short polling interval across several parallel tests.

When does Zalo ask for a phone number?

Zalo is a Vietnamese messaging and social app, and the phone number acts as the account's main identifier. A code is typically requested when someone creates an account, when they sign in on a new device, and when they recover access. The exact prompts are decided by Zalo and can change, so a test plan should cover each screen rather than assume one fixed sequence.

For QA teams this matters because a messaging integration, a mini app or a customer support channel built around Zalo often needs a fresh, verified test account before any other scenario can run.

Which countries can receive Zalo OTP on OTP Route?

Zalo routes are listed in 198 countries. They include Vietnam, the United States, Japan, South Korea, Taiwan, Australia, Canada, Cambodia, Laos, Thailand, Malaysia, Singapore, Germany, France and the United Kingdom.

Pick the country that matches the account you are testing. A Vietnam launch needs +84 numbers to reproduce what local users see, while a team serving overseas Vietnamese communities may want numbers from the countries those customers live in. The country also shapes price and availability, which is why the price endpoint is worth checking first.

Dashboard steps for a Zalo SMS verification test

Not everyone on a project writes code. In the dashboard, choose Zalo as the service, select the country, confirm the displayed price, and order. Copy the number into Zalo; the code shows up beside the order once the SMS lands. Cancelling from the same screen returns the full amount. Sign-up for the dashboard itself takes an email address and a 6-digit email code, or Google sign-in, and two-factor TOTP can protect the team login.

Why might a Zalo code fail to arrive?

Delivery depends on the service and the route, so there is no fixed wait. Zalo may also decline some virtual numbers, which is the reason the refund exists. If nothing appears:

  • Leave the order open until the 20-minute window ends, or cancel it; either way the wallet gets the money back.
  • Try again later, or switch to another country that suits the test.
  • Do not re-order in a tight loop; add a backoff in automated jobs.
  • Confirm the test account itself is not blocked or rate limited on Zalo's side.

Should a Zalo test account use a Dedicated Number instead?

An OTP Gateway number handles one code. If a staging or support account must log in again next month, a Dedicated Number is the better fit: a US or Canadian line from $1.95/month that you keep while it renews, with inbound SMS in the dashboard and on the number.sms_received webhook. Learn more on virtual numbers.

Use either option responsibly. Follow Zalo's terms, keep one account per real person or business, and use OTP Route only to test and operate your own legitimate accounts and products. Zalo is a trademark of its owner, and OTP Route is not affiliated with it.

Frequently asked questions

What service id does the OTP Route API use for Zalo?

It is zalo, sent in the body of POST /api/v1/activations together with a country id.

Can I receive a Zalo OTP on a number outside Vietnam?

Yes. Zalo routes are listed in 198 countries, and availability for each one is returned live by the price endpoint.

Am I charged if Zalo rejects the virtual number?

No. If no code reaches the number within 20 minutes, or you cancel, the full amount is refunded to the wallet.

Is a virtual number for Zalo good for an account I need long term?

A one-time number is not. For recurring logins, a US or Canadian Dedicated Number that you keep while it renews is the safer choice.

How do I pay for Zalo SMS verification for testing?

Top up a prepaid USD wallet by card or USDT/USDC; there is no monthly fee, and each top-up comes with a PDF invoice.

Can I try the Zalo integration without spending money?

Yes. Once support moves a development account to sandbox, Zalo orders return simulated numbers and codes, so the webhook and polling code can be proven before real spending.

Service names are trademarks of their respective owners. OTP Route is not affiliated with them. Use numbers lawfully, follow each service's terms and our Acceptable Use Policy.

Route your first OTP in minutes

Create a free account, top up your USD wallet and order a number from the dashboard or the API. No monthly fee.