# Bulk WhatsApp and Zalo number check for Vietnamese customer lists (+84)

> Check a Vietnamese list for WhatsApp and Zalo: convert old 11-digit 01X numbers, turn 09X into +84 9X, get a free estimate and follow the 2026 data law.

Canonical: https://mobilevalidate.com/blog/bulk-whatsapp-number-check-vietnam · Last updated: 2026-11-08

![A +84 hub with four spokes: an old 01X number crossed out and turned into 03X, two chat app columns with yes and no badges (one marked BULK), an SMS bubble with a QC label beside a clock, and a 2026 calendar by a locked law sheet.](https://mobilevalidate.com/images/blog/bulk-whatsapp-number-check-vietnam.svg)

*Convert old 11-digit numbers, check both chat apps in one bulk job, and follow the 2026 data law.*


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-11-08 · Category: Guides · Tags: WhatsApp, Zalo, Vietnam, Bulk jobs, List hygiene, E.164, Compliance

To check a list of Vietnamese numbers for WhatsApp, convert old 11-digit numbers first, turn every row into E.164 (`+84…`), remove duplicates, upload the file as a bulk job with the `whatsapp` check, read the free estimate, and download one answer per number: registered, not registered or unknown. In Vietnam, add the `zalo` check to the same job: Zalo is the country's main messenger, and many customers who aren't on WhatsApp are on Zalo. Every Vietnamese mobile has 9 digits after +84. The traps are numbers still stored in their pre-2018 11-digit form, cells where a leading `84` is part of the number rather than the country code, and the millions of lines blocked in 2026 for failing identity verification. Check only numbers your customers gave you: since 1 January 2026, Vietnam's data protection law treats a phone number as personal data, requires consent per purpose and bans trading in personal data.

This guide covers what is specific to Vietnam. The general flow is in our [bulk WhatsApp number check guide](/blog/bulk-whatsapp-number-check), and the numbering plan is in our [Vietnam phone number format guide](/blog/vietnam-phone-number-format). Facts are as of 8 November 2026, and every price below carries its date. This is general guidance, not legal advice.

## How do you format Vietnamese numbers for a WhatsApp check?

Use the international form: `+84`, then the number without its leading `0`. A Vietnamese CRM export usually mixes these spellings:

| Cell in your file | What happened | Fix |
|---|---|---|
| `0912 XXX XXX` | National format, as dialled at home | Drop the `0`, add `+84` |
| `+84 912 XXX XXX` | International, with spaces | Remove the spaces |
| `84912XXXXXX` | International without the plus (the wa.me link style) | Add `+` |
| `0084 912 XXX XXX` | Dialled from abroad with `00` | Replace `0084` with `+84` |
| `+84 0912 XXX XXX` | International with the trunk `0` kept, very common on Vietnamese forms | Drop the `0` |
| `912XXXXXX` | The leading `0` was dropped by a spreadsheet | Add `+84` |
| `84X XXX XXX` (nine digits) | A national `084` number that lost its `0` | Add `+84`; the `84` is part of the number |
| `0168 XXX XXXX`, `+84 168 XXX XXXX` | An old 11-digit number from before 2018 | Convert with the table in the next section first |

The second-to-last row is a Vietnamese quirk. `084`, `085`, `086` and `088` are mobile codes, so a cell that starts with `84` isn't always the country code. A hand-written rule that strips a leading `84` turns `84X XXX XXX` into a seven-digit fragment. A numbering library decides by length instead: nine digits starting `84` is a national number, eleven digits starting `84` is `+84` plus a national number.

We tested that on 2026-11-08 with libphonenumber-js 1.13.13: we generated 377,000 valid Vietnamese mobile numbers across every `03`, `05`, `07`, `08` and `09` sub-block and parsed each in five spellings (`0…`, `84…`, the bare nine digits, `+84 0…` and `0084…`) with the default region `VN`. All five gave the same `+84` number every time, with no mismatches. So `default_country: "VN"` is safe for a Vietnamese list, as long as numbers from other countries carry their own `+`. What the library can't do is read old 11-digit numbers; those need the converter below.

## What do you do with old 11-digit numbers?

Convert them, then treat them as unverified. Under Decision 798/QD-BTTTT of 25 May 2018, the Ministry of Information and Communications replaced 21 three-digit mobile network codes with two-digit ones and kept the last seven digits ([Decision 798, full text](https://luatvietnam.vn/thong-tin/quyet-dinh-798-qd-btttt-2018-ke-hoach-chuyen-thue-bao-11-so-sang-10-so-163661-d1.html)). The switch ran from 15 September 2018 to 30 June 2019 ([VietnamPlus, 2018](https://en.vietnamplus.vn/11-digit-phone-numbers-to-be-switched-to-10-digits-post131917.vnp)), and the old numbers no longer connect:

| Old code | New code | Range holder in 2018 |
|---|---|---|
| `0162`–`0169` | `032`–`039` | Viettel |
| `0120`, `0121`, `0122`, `0126`, `0128` | `070`, `079`, `077`, `076`, `078` | MobiFone |
| `0123`, `0124`, `0125`, `0127`, `0129` | `083`, `084`, `085`, `081`, `082` | VinaPhone |
| `0186`, `0188` | `056`, `058` | Vietnamobile |
| `0199` | `059` | Gmobile |

Lists from loyalty programmes, old CRMs and phone contact exports still hold these numbers. Our API, like every numbering library, rejects them as `invalid_number` (not billed), so convert them before upload. This converter does both steps and returns `null` for anything that isn't a valid Vietnamese mobile:

```js
import { parsePhoneNumberFromString } from "libphonenumber-js/max";

// Decision 798/QD-BTTTT (2018): old 3-digit mobile code → new 2-digit code; the last 7 digits stay the same.
const LEGACY = {
  120: "70", 121: "79", 122: "77", 126: "76", 128: "78",                                   // MobiFone
  123: "83", 124: "84", 125: "85", 127: "81", 129: "82",                                   // VinaPhone
  162: "32", 163: "33", 164: "34", 165: "35", 166: "36", 167: "37", 168: "38", 169: "39",  // Viettel
  186: "56", 188: "58",                                                                    // Vietnamobile
  199: "59",                                                                               // Gmobile
};

/** One Vietnamese list cell → E.164 mobile (+84…), or null. Converts old 11-digit numbers first. */
export function toE164Vn(raw) {
  const s = String(raw).trim();
  if (/^\d(\.\d+)?E\+\d+$/i.test(s)) return null;                       // 8.49E+10: digits already lost
  const d = s.replace(/\D/g, "").replace(/^00/, "");
  const nat = d.startsWith("84") && d.length === 12 ? d.slice(2) : d.startsWith("0") ? d.slice(1) : d;
  const old = nat.length === 10 && LEGACY[nat.slice(0, 3)];
  const p = parsePhoneNumberFromString(old ? `0${old}${nat.slice(3)}` : s, "VN");
  return p?.isValid() && p.country === "VN" && p.getType() === "MOBILE" && /^\+84[35789]/.test(p.number) ? p.number : null;
}
```

We ran it on 2026-11-08 with Node 24 and libphonenumber-js 1.13.13, on libphonenumber's example number for Vietnam and made-up subscriber digits. Digits are masked with X here:

| Input | Output |
|---|---|
| `0912 XXX XXX` | `+84912XXXXXX` |
| `+84 912 XXX XXX` | `+84912XXXXXX` |
| `84912XXXXXX` | `+84912XXXXXX` |
| `0084 912 XXX XXX` | `+84912XXXXXX` |
| `+84 0912 XXX XXX` | `+84912XXXXXX` |
| `912XXXXXX` | `+84912XXXXXX` |
| `845XXXXXX` (an `084` number without its `0`) | `+84845XXXXXX` |
| `0168 XXX XXXX` (old Viettel) | `+8438XXXXXXX` |
| `+84 168 XXX XXXX` (old Viettel, international) | `+8438XXXXXXX` |
| `0186 XXX XXXX` (old Vietnamobile) | `+8456XXXXXXX` |
| `0199 XXX XXXX` (old Gmobile) | `+8459XXXXXXX` |
| `8.49123E+10` | `null` |
| `010 XXXX XXX` (no mobile range) | `null` |
| `024 3XXX XXXX` (Hanoi landline) | `null` |
| `+63 905 XXX XXXX` (a Philippine mobile) | `null` |

The first six rows are the same customer, so after conversion they collapse into one number, which keeps the duplicate count honest. An old number and its new form also collapse, if both are in the file. The free [phone list cleaner](/tools/phone-list-cleaner) normalises and dedupes up to 50,000 rows in your browser, but like the libraries it doesn't convert 11-digit numbers, so run the legacy step first.

Eight years on, a converted number is a guess about a customer, not a fact. Many people changed numbers, and some converted numbers have since been given to someone else. Our [number recycling post](/blog/number-recycling-and-list-decay) explains why old lists need a live check.

## Why do Vietnamese lists hold numbers that stopped working in 2026?

Because of identity verification. Under Circular 08/2026/TT-BKHCN, in force from 15 April 2026, mobile subscribers must verify their details, including a face image, against their chip ID card. A subscriber who doesn't has outgoing service blocked after 60 days, both directions blocked after another 60, and the number revoked five days later. From 15 June 2026, moving a SIM to a new phone triggers face re-verification too ([LuatVietnam, 2026](https://luatvietnam.vn/linh-vuc-khac/han-chot-xac-thuc-thue-bao-de-tranh-bi-khoa-sim-2-chieu-thu-hoi-so-883-108963-article.html)).

The numbers are large. On 10 July 2026, Việt Nam News, citing the Telecommunications Department, reported more than 96 million verified numbers and about 13 million lines blocked for outgoing service, with two-way blocking scheduled for 15 August and revocation for 20 August ([Việt Nam News, 2026](https://vietnamnews.vn/society/1785163/13m-sims-face-blocks-as-authorities-verify-subscribers.html)).

For a WhatsApp list this means two things:

- **A WhatsApp or Zalo answer isn't a network answer.** It tells you whether an account is tied to the number, not whether the SIM still works. A revoked number can be reissued later, and then the account may belong to a different person.
- **Run HLR on numbers you plan to text or call.** An [HLR check](/services/hlr-lookup) shows whether the line is reachable on its network now. That matters most for numbers collected before mid-2026 and for converted 11-digit numbers.

## How do you check a list of Vietnamese numbers on WhatsApp and Zalo?

Five steps, from export to answers:

1. **Export only customers who gave you their number**, with your own ID column (for example `crm_id,phone`). Format the phone column as text. Leave out bought lists, scraped numbers and number ranges; in Vietnam, buying and selling personal data is now banned outright.
2. **Convert and dedupe.** Run every cell through a converter like the one above. Keep the rows that return `null` aside for a manual fix; don't guess the missing digits.
3. **Estimate.** Upload the file in the [dashboard](https://app.mobilevalidate.com/jobs) (**Bulk jobs › Upload a list**), or send the numbers to `POST /v1/jobs/estimate`. The estimate is free, checks nothing and stores nothing.
4. **Run with a cost cap.** Start the job with `max_cost` set to the estimate, so it can never cost more. Choose `whatsapp` and `zalo`. Use `whatsapp.business` instead of `whatsapp` if you also want to know which numbers run a WhatsApp Business account.
5. **Download and join back.** The result file keeps your row order (`row_no`, one row per number and app); join it back to your own IDs by row number. Store each answer with its `checked_at` date.

A job holds up to 50,000 numbers, and a dashboard file can be up to 10 MB. Bigger exports go into several jobs.

### What does the estimate show for WhatsApp and Zalo together?

Here is a real estimate made with the public sandbox key on 2026-11-08. The sandbox accepts only our [test values](/docs/test-mode), which are UK drama-range numbers, so this shows the behaviour, not Vietnamese data. The third number is sent twice, once in E.164 and once in national format with `default_country` set:

```bash
curl https://api.mobilevalidate.com/v1/jobs/estimate \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003", "07700900003"],
       "checks": ["whatsapp", "zalo"], "default_country": "GB"}'
```

Response (abridged):

```json
{
  "object": "estimate",
  "total": 4,
  "valid": 3,
  "invalid": 0,
  "duplicate": 1,
  "checks": ["whatsapp.registered", "zalo.registered"],
  "max_cost": { "amount": "0", "currency": "USD" },
  "breakdown": [
    { "check": "whatsapp.registered", "price_mode": "realtime", "reason": "small_batch", "checks": 3,
      "unit_price": { "amount": "0.004", "currency": "USD" }, "countries": ["GB"], "batch_minimum": 132 },
    { "check": "zalo.registered", "price_mode": "batch", "reason": "country_minimum", "checks": 3,
      "unit_price": { "amount": "0.0005", "currency": "USD" }, "countries": ["GB"],
      "minimum_checks": 500, "minimum_charge": { "amount": "0.25", "currency": "USD" },
      "note": "Bulk-only check: each country with fewer than 500 numbers is billed at least $0.25 (the price of 500 checks) when it returns at least one answer. Countries with no answers are free." }
  ]
}
```

How to read it:

- **`duplicate: 1`** is the national spelling of the third number. For your file, `default_country` is `"VN"`, and `0912…`, `84912…` and `+84 0912…` become one check. Duplicates are never checked or billed.
- **`small_batch`**: the WhatsApp bulk price needs **at least 132 numbers from the same country in one job**. These three test numbers are below it, so they would be priced the real-time way. A Vietnamese customer list clears it; the few `+82` or `+81` customers in the same file may not, and the estimate shows them on their own line.
- **`country_minimum`**: Zalo runs in bulk jobs only for now, and bulk-only checks bill each country at least the price of 500 checks when it returns any answer. For three test numbers that is US$0.25; for a real list of thousands it doesn't apply.

`max_cost` is 0 because test keys are never billed. Details are in the [bulk jobs docs](/docs/bulk-jobs).

### What does it cost?

From our public catalog ([`GET /v1/services`](https://api.mobilevalidate.com/v1/services)), fetched on 2026-11-08:

| Check | Bulk job, per 1,000 | Real time, per 1,000 |
|---|---:|---:|
| WhatsApp registration (`whatsapp`) | US$0.25 | US$4.00 |
| WhatsApp Business account (`whatsapp.business`) | US$0.30 | US$4.00 |
| Zalo registration (`zalo`) | US$0.50 | bulk only for now |
| Live network status, HLR (`number.hlr`) | US$5.00 | US$6.00 |

Only conclusive answers are billed. Unknown, invalid, duplicate and unsupported rows are free, and so are repeats served from your account's cache. Prices can change; the [pricing page](/pricing) always has the current ones.

A worked example with made-up figures, to show the arithmetic: a 30,000-row export, 2,000 of them old 11-digit numbers, converts to 26,400 unique valid Vietnamese mobiles. A job with both apps can cost at most 26,400 × (US$0.00025 + US$0.0005) = **US$19.80**. If 3,000 numbers come back registered on neither app and you want to know which still work before you send SMS, an HLR job on those 3,000 costs at most 3,000 × US$0.005 = **US$15.00**.

## How many Vietnamese customers use WhatsApp, and how many use Zalo?

There is no public WhatsApp figure for Vietnam that you could apply to a list, and we don't publish one. DataReportal's Digital 2026 report for Vietnam, with data to October 2025, counts 137 million cellular mobile connections (134% of the population), 85.6 million internet users (84.2%) and 79.0 million social media user identities (77.6%). It reports Zalo at 78.3 million monthly active users, citing the company, and doesn't mention WhatsApp at all ([DataReportal, 2025](https://datareportal.com/reports/digital-2026-vietnam)).

Zalo's lead is visible in other sources too:

- **The company's own figure.** VNG reported 79.2 million monthly active Zalo users in the third quarter of 2025 and about 2.1 billion messages a day ([Tuoi Tre News, 2025](https://news.tuoitre.vn/vietnams-80-million-user-messaging-giant-zalo-puts-spotlight-on-parent-vngs-business-103251229150347905.htm)).
- **An independent survey.** VnExpress, citing Decision Lab's Connected Consumer survey for the third quarter of 2024, put Zalo's penetration at 85%, ahead of Facebook at 59% and Messenger at 52% ([VnExpress, 2025](https://e.vnexpress.net/news/tech/tech-news/vietnam-s-internet-messaging-rate-higher-than-global-average-4849499.html)).

Two conclusions for a list:

- **Expect a large WhatsApp not-registered group, and don't read it as "dead number".** Many working Vietnamese numbers simply have no WhatsApp account. The Zalo answer in the same row is usually the more useful one.
- **134% means second SIMs.** Many customers hold more than one line, and the one on your list may not be the one their apps use. Ask at the next contact they expect.

Zalo users can also limit who finds them by phone number, so a Zalo `false` for a customer who told you they use Zalo is a reason to ask, not to drop them. Our [Zalo number check](/services/zalo-number-check) page explains the answers.

## Is WhatsApp cheaper than SMS for OTP in Vietnam?

Vietnam isn't its own market on Meta's rate card. Meta's pricing page lists it, with the Philippines, among the 16 markets of the **Rest of Asia Pacific** region ([Meta pricing](https://developers.facebook.com/docs/whatsapp/pricing)). From [our rate-card dataset](/datasets/whatsapp-rate-card-history), transcribed from Meta's USD rate cards:

| WhatsApp category, Rest of Asia Pacific (includes VN) | 1 July 2026 | 1 October 2026 |
|---|---:|---:|
| Authentication | US$0.0113 | US$0.0113 |
| Utility | US$0.0113 | US$0.0113 |
| Marketing | US$0.0732 | US$0.0842 |
| Service (after 1,000 free per month per number) | free | US$0.0113 |

Prices are per delivered message, and Meta charges only for delivered messages. Vietnam isn't on Meta's list of markets with an authentication-international rate ([Meta, 2026](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing/authentication-international-rates)), so a business based abroad pays the same list rate for a code to a `+84` user as a local one.

The bigger question in Vietnam is reach, not price. A cheap WhatsApp code only helps customers who have WhatsApp; for the rest, the code goes by SMS anyway, under a registered brand name. Use the check to decide the channel per customer, then compare costs with the free [WhatsApp cost calculator](/tools/whatsapp-cost-calculator) (Vietnam selected) and the SMS rate on your own invoice. We don't quote SMS prices: they vary by route and contract. Our [WhatsApp OTP vs SMS OTP cost guide](/blog/whatsapp-otp-vs-sms-otp-cost) has the formula for cost per verified user.

## What do Vietnam's data protection and anti-spam rules require?

We read the English translations published by LuatVietnam and the law-firm commentary cited below on 2026-11-08. Translations aren't official, so ask local counsel how the texts apply to you.

### Personal Data Protection Law (Law 91/2025/QH15)

Vietnam's first data protection law was passed on 26 June 2025 and took effect on 1 January 2026 (Article 38(1)) ([Law 91/2025](https://english.luatvietnam.vn/dan-su/law-on-personal-data-protection-law-no-91-2025-qh15-405135-d1.html)). Its guiding Decree 356/2025/ND-CP, issued on 31 December 2025, took effect on the same day and ended Decree 13/2023/ND-CP, the data protection decree in force since 1 July 2023 ([Decree 356/2025](https://english.luatvietnam.vn/decree-no-356-2025-nd-cp-dated-december-31-2025-of-the-government-detailing-a-number-of-articles-and-measures-for-the-implementation-of-the-law-on-p-422896-doc1.html); [Decree 13/2023](https://english.luatvietnam.vn/decree-no-13-2023-nd-cp-dated-april-17-2023-of-the-government-on-personal-data-protection-249791-doc1.html)). The points that touch a number check:

- **A phone number is personal data.** Decree 356 lists "phone number" among basic personal data (Article 3(7)), as Decree 13 did before it.
- **Consent per purpose, never by silence.** Consent must be voluntary and based on clear knowledge of the data, the purpose, the controller and the person's rights (Article 9(2)). It is given for each purpose (Article 9(4)(a)), and "silence or non-response is not considered consent" (Article 9(4)(d)). If you check which apps reach a customer, that is a purpose to name.
- **No trading in data.** Article 7(6) prohibits "buying and selling personal data, unless otherwise prescribed by law". A bought list of Vietnamese numbers is a problem before you check it.
- **Fines.** Up to ten times the proceeds for illegal data trading, up to 5% of the previous year's revenue for cross-border transfer violations, and up to VND 3 billion for other violations (Article 8). Individuals pay half.
- **Foreign businesses are covered.** The law applies to foreign organisations directly involved in or related to processing the data of Vietnamese citizens in Vietnam (Article 1(2)). Sending a Vietnamese list to a checking service abroad is processing and can be a cross-border transfer, so pick a processor with a data processing agreement.
- **Relief for small firms is narrow.** Small enterprises and startups may choose for five years whether to comply with the impact-assessment and data-protection-staff duties, but not if they provide processing services, process sensitive data or process data of a large number of people (Article 38(2)) ([Tilleke & Gibbins](https://www.tilleke.com/insights/vietnams-new-personal-data-protection-law-a-closer-look/)).

Consents collected under Decree 13 remain valid (Article 39(1)), so a customer who agreed to service messages then doesn't need to agree again.

### Advertising messages and calls (Decree 91/2020)

Decree 91/2020/ND-CP took effect on 1 October 2020 and governs advertising by SMS, MMS, USSD, e-mail and calls ([Decree 91/2020](https://english.luatvietnam.vn/decree-no-91-2020-nd-cp-dated-august-14-2020-of-the-government-on-fighting-against-spam-text-messages-spam-emails-and-spam-calls-189003-doc1.html)):

| Rule | Requirement | Article |
|---|---|---|
| Consent | No advertising without the recipient's prior consent | 13(1) |
| Do Not Call list | No advertising messages or calls to numbers on the national list | 7, 13(1) |
| Frequency | At most 3 advertising messages and 1 advertising call per number in 24 hours, unless agreed otherwise | 13(5) |
| Hours | Messages 7:00 to 22:00, calls 8:00 to 17:00, unless agreed otherwise | 13(6) |
| Label | An advertising message starts with `[QC]` or `[AD]` | 15 |

As written, the decree doesn't name app messages. That may change: the Ministry of Public Security has published a draft decree to replace it, which would extend the rules to messages and calls over internet-based (OTT) apps and take effect on 1 January 2027 ([draft decree, 2026](https://bocongan.gov.vn/media/bca-media/library-20260909084715-f7e1171f-eb0c-4ae2-97ed-7017b136dc65-1-nghi-inh-thay-the-n-91.doc)). It is a draft, but it is a good reason to apply the same consent, frequency and labelling habits to WhatsApp and Zalo marketing now.

### WhatsApp's own opt-in rule

WhatsApp's Business Messaging Policy says you may only contact people on WhatsApp if they have given you their mobile number and you have received opt-in permission confirming they want messages from you ([WhatsApp, 2026](https://whatsappbusiness.com/policy/)). Zalo's business accounts have their own rules. A `registered: true` answer on either app is a fact about the number, not permission to message it. Our [consent and law guide](/blog/whatsapp-number-checks-consent-and-law) covers other regions.

| Do | Don't |
|---|---|
| Check numbers from your own sign-ups, orders and support contacts | Check bought lists (banned trade in Vietnam), scraped numbers or generated ranges |
| Name the channel check as a purpose in your privacy notice and consent | Treat "registered" or silence as consent to marketing |
| Store the answer and its date, and delete old jobs | Keep profiles of people who aren't customers |
| Honour withdrawals and objections at once | Re-check opted-out numbers to reach them on another app |

On our side, a request with long runs of consecutive numbers is refused as suspected enumeration, each account has a daily cap, and our [acceptable use policy](/legal/acceptable-use) forbids unsolicited bulk messaging and checking ranges to find out who uses an app. Anyone can object through the [opt-out form](/opt-out).

## What do you do with numbers that are not on WhatsApp?

Route them to a channel that reaches them, and keep the answer:

| WhatsApp | Zalo | What to do |
|---|---|---|
| `registered: true`, opted in | any | Send what they asked for on WhatsApp; keep SMS as the fallback |
| `registered: false` | `registered: true`, opted in to Zalo | Use Zalo for that customer |
| `registered: false` | `registered: false` | Use SMS under your brand name, or a call; run HLR first on old numbers |
| Unknown | Unknown | Keep the current channel, re-check later; both are free |
| `null` from your converter | — | Fix the record by hand, or ask the customer |

For the group on neither app, an HLR check answers the next question: is the number reachable on its network at all, after the 2026 blocks? It also shows whether the number was ported; Vietnam has had porting since November 2018, so the `09X` or `03X` code shows only the range holder. Treat unknown as missing data, never as a dead number, and don't overwrite a stored conclusive answer with an unknown one. Our [list cleaning guide](/blog/how-to-clean-a-phone-number-list-in-bulk) shows how to combine the checks.

Re-check before each campaign to opted-in customers, starting with the oldest answers and the converted 11-digit numbers.

## How do you start with MobileValidate?

The checks for this guide are [WhatsApp number check](/services/whatsapp-number-check), [Zalo number check](/services/zalo-number-check), [WhatsApp Business check](/services/whatsapp-business-check) and [live network status (HLR)](/services/hlr-lookup). WhatsApp and HLR take Vietnamese numbers in real time and in bulk jobs; Zalo runs in bulk jobs only for now. You don't need a WhatsApp or Zalo account, a phone or a QR pairing.

- **Free, today.** [Get a free test key](/get-test-key) to build against fixed test answers, and use the free estimate on any file before you pay. The free [tools](/tools) run in your browser: the [phone number validator](/tools/phone-number-validator) for a few numbers, the [list cleaner](/tools/phone-list-cleaner) for a whole export, and the [MCC MNC lookup](/tools/mcc-mnc-lookup) for network codes. To look at one number's network without an account, the [carrier lookup](/services/carrier-lookup) answers three numbers a day.
- **Real checks free.** Every live account can check 20 phone numbers and 10 e-mail addresses for real, free, on the dashboard's **Try it** page. [Request access](/request-access) to open one.
- **Then prepay.** Top-ups of US$100 or more get a 5% bonus, US$500 or more 8%, and US$2,000 or more 10%.

Results are kept for your account's retention setting, 30 days by default, and you can delete a job's results at any time. A check returns registration facts only, never a name, ID number or address. WhatsApp and Zalo are named descriptively; MobileValidate is not affiliated with WhatsApp, Meta, Zalo, VNG or any Vietnamese authority.

## What are the key takeaways?

- Convert old 11-digit `01X` numbers first (`0168…` → `038…`, `0123…` → `083…`); libraries and our API reject the old form.
- Then convert every row to `+84…`. `0…`, `84…`, `+84 0…`, `0084…` and the bare nine digits are the same customer, and `default_country: "VN"` read all five correctly in our test of 377,000 numbers. Don't strip a leading `84` by hand: `084` is a mobile code.
- About 13 million lines were blocked in 2026 for failing identity checks: run HLR on old numbers before you text them.
- Check WhatsApp and Zalo in the same bulk job: US$0.25 and US$0.50 per 1,000 (catalog, 2026-11-08). Unknowns and duplicates are free.
- A WhatsApp authentication message to Vietnam lists at US$0.0113 (Rest of Asia Pacific, 1 October 2026), with no cross-border surcharge.
- Since 1 January 2026 a phone number is personal data under Law 91/2025: consent per purpose, no consent by silence, and no buying or selling of lists. Check your own customers' numbers only.

## Sources

1. [Decision 798/QD-BTTTT of 25 May 2018 promulgating the mobile network code conversion plan (full text)](https://luatvietnam.vn/thong-tin/quyet-dinh-798-qd-btttt-2018-ke-hoach-chuyen-thue-bao-11-so-sang-10-so-163661-d1.html) — Ministry of Information and Communications of Vietnam (text published by LuatVietnam), 2018
2. [11-digit phone numbers to be switched to 10 digits (29 May 2018)](https://en.vietnamplus.vn/11-digit-phone-numbers-to-be-switched-to-10-digits-post131917.vnp) — VietnamPlus, 2018
3. [Hạn chót xác thực thuê bao để tránh bị khóa SIM 2 chiều, thu hồi số (Circular 08/2026/TT-BKHCN)](https://luatvietnam.vn/linh-vuc-khac/han-chot-xac-thuc-thue-bao-de-tranh-bi-khoa-sim-2-chieu-thu-hoi-so-883-108963-article.html) — LuatVietnam, 2026
4. [13m SIMs face blocks as authorities verify subscribers (10 July 2026)](https://vietnamnews.vn/society/1785163/13m-sims-face-blocks-as-authorities-verify-subscribers.html) — Việt Nam News, 2026
5. [Digital 2026: Vietnam](https://datareportal.com/reports/digital-2026-vietnam) — DataReportal (Kepios), 2025
6. [Vietnam's 80-million-user messaging giant Zalo puts spotlight on parent VNG's business (29 December 2025)](https://news.tuoitre.vn/vietnams-80-million-user-messaging-giant-zalo-puts-spotlight-on-parent-vngs-business-103251229150347905.htm) — Tuoi Tre News, 2025
7. [Vietnam's internet messaging rate higher than global average (13 February 2025)](https://e.vnexpress.net/news/tech/tech-news/vietnam-s-internet-messaging-rate-higher-than-global-average-4849499.html) — VnExpress International, 2025
8. [Law on Personal Data Protection No. 91/2025/QH15 (English translation)](https://english.luatvietnam.vn/dan-su/law-on-personal-data-protection-law-no-91-2025-qh15-405135-d1.html) — National Assembly of Vietnam (text published by LuatVietnam), 2025
9. [Vietnam's New Personal Data Protection Law: A Closer Look](https://www.tilleke.com/insights/vietnams-new-personal-data-protection-law-a-closer-look/) — Tilleke & Gibbins, 2025
10. [Decree No. 356/2025/ND-CP of 31 December 2025 detailing the Law on Personal Data Protection (English translation)](https://english.luatvietnam.vn/decree-no-356-2025-nd-cp-dated-december-31-2025-of-the-government-detailing-a-number-of-articles-and-measures-for-the-implementation-of-the-law-on-p-422896-doc1.html) — Government of Vietnam (text published by LuatVietnam), 2025
11. [Decree No. 13/2023/ND-CP of 17 April 2023 on personal data protection (English translation)](https://english.luatvietnam.vn/decree-no-13-2023-nd-cp-dated-april-17-2023-of-the-government-on-personal-data-protection-249791-doc1.html) — Government of Vietnam (text published by LuatVietnam), 2023
12. [Decree No. 91/2020/ND-CP on fighting spam text messages, spam emails and spam calls (English translation)](https://english.luatvietnam.vn/decree-no-91-2020-nd-cp-dated-august-14-2020-of-the-government-on-fighting-against-spam-text-messages-spam-emails-and-spam-calls-189003-doc1.html) — Government of Vietnam (text published by LuatVietnam), 2020
13. [Draft decree replacing Decree 91/2020/ND-CP on preventing spam messages and calls (draft, 2026)](https://bocongan.gov.vn/media/bca-media/library-20260909084715-f7e1171f-eb0c-4ae2-97ed-7017b136dc65-1-nghi-inh-thay-the-n-91.doc) — Ministry of Public Security of Vietnam, 2026
14. [WhatsApp Business Messaging Policy](https://whatsappbusiness.com/policy/) — WhatsApp, 2026
15. [Pricing on the WhatsApp Business Platform](https://developers.facebook.com/docs/whatsapp/pricing) — Meta for Developers, 2026
16. [Authentication-international rates](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing/authentication-international-rates) — Meta for Developers, 2026

## Frequently asked questions

### How do I convert Vietnamese numbers to +84 for a WhatsApp check?

Drop the leading 0 and add +84: 0912 XXX XXX becomes +84 912 XXX XXX, written +84912XXXXXX in E.164. Every Vietnamese mobile has 9 digits after +84. Remove a stray 0 after the code (+84 09…), and convert old 11-digit numbers that start 01 before anything else.

### What do I do with old 11-digit 01X numbers in a Vietnamese list?

Convert them with the 2018 conversion table: the old three-digit network code becomes a two-digit one and the last seven digits stay, so 0168 XXX XXXX becomes 038 XXX XXXX and 0123 XXX XXXX becomes 083 XXX XXXX. Numbering libraries and our API reject the old form as invalid. Treat converted numbers as unverified: many are years old.

### Is a cell that starts with 84 always the country code?

No. A nine-digit cell such as 84X XXX XXX is a national 084 number that lost its leading 0, not +84 followed by seven digits. A rule that strips a leading 84 breaks it. In our test of 377,000 valid Vietnamese mobiles, libphonenumber-js with the default region VN read every common spelling, including this one, correctly.

### Should I check Zalo as well as WhatsApp for Vietnamese customers?

Usually, yes. Zalo is the most-used messenger in Vietnam: VNG reported 79.2 million monthly active users in the third quarter of 2025, and DataReportal's 2026 report doesn't mention WhatsApp at all. One bulk job can return both answers per number. Our Zalo check runs in bulk jobs only for now.

### How much does a bulk WhatsApp check of Vietnamese numbers cost?

On 2026-11-08 our public catalog listed the WhatsApp registration check at US$0.25 per 1,000 numbers in bulk jobs and the Zalo check at US$0.50 per 1,000. The WhatsApp bulk price needs at least 132 numbers from the same country in one job, and Zalo has a minimum charge of 500 checks per country. Unknown, invalid and duplicate rows are never billed.

### Does Vietnam's Personal Data Protection Law apply to checking customer numbers?

Yes. Law 91/2025/QH15 took effect on 1 January 2026, and its guiding Decree 356/2025 lists a phone number as basic personal data. Consent must be given per purpose, and silence or no response is not consent. The law also bans buying and selling personal data and covers foreign organisations that process Vietnamese citizens' data.

### Does Decree 91/2020 cover WhatsApp and Zalo messages?

Not as written. Decree 91/2020 covers advertising by SMS, MMS, USSD, e-mail and calls. A draft replacement decree published by the Ministry of Public Security in 2026 would extend the rules to app (OTT) messages from 1 January 2027, but it is still a proposal. WhatsApp's own policy already requires opt-in.

### Is WhatsApp cheaper than SMS for OTP in Vietnam?

Meta prices Vietnam inside its Rest of Asia Pacific region: US$0.0113 per delivered authentication message on the rate card effective 1 October 2026, unchanged since July, with no authentication-international surcharge for senders abroad. Compare it with the SMS rate on your own invoice, and remember many Vietnamese customers aren't on WhatsApp.
