On this page
To check a list of Mexican numbers for WhatsApp, convert every row to E.164 (+52 followed by 10 digits), strip the old mobile 1 and the 044, 045 and 01 prefixes, 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 2026, also expect numbers that were suspended under the new mobile line registry. Check only numbers your customers gave you, under the 2025 Federal Law on the Protection of Personal Data Held by Private Parties (LFPDPPP), and never use the answers to find new people to message.
This guide covers what is specific to Mexico. The general flow is in our bulk WhatsApp number check guide, and checking a single number is covered in how to check if a number is on WhatsApp without saving it. Facts are as of 7 November 2026, and every price carries its date. This is general guidance, not legal advice.
How do you format Mexican numbers for a WhatsApp check?
Use +52 followed by the 10-digit number. Since 3 August 2019 every Mexican number, mobile or landline, has 10 digits and is dialled the same way everywhere in the country, with no trunk prefix (IFT, 2019). Old CRM records still hold the forms that reform abolished:
| Cell in your file | What happened | Fix |
|---|---|---|
55 XXXX XXXX | National format, 10 digits | Add +52 |
+52 55 XXXX XXXX | International, with spaces | Remove the spaces |
52 55 XXXX XXXX | International without the plus | Add + |
+52 1 55 XXXX XXXX | The mobile 1 used from abroad until 2019 | Remove the 1 |
044 55 XXXX XXXX, 045 …, 01 … | Domestic prefixes used until 2019 | Remove the prefix, add +52 |
0052 55 XXXX XXXX | Dialled from abroad with 00 | Replace 0052 with +52 |
Two traps cost real customers.
The old 1 makes a number invalid. libphonenumber removed the mobile token in v8.10.17 (15 August 2019); its release notes say the domestic tokens and the international mobile token "are abolished now" (release notes). We checked on 2026-11-07 with libphonenumber-js 1.13.13: of 113,812 valid Mexican numbers generated across the numbering plan, none was valid with a 1 after +52. A row in that form is dropped as invalid. It isn't billed, but that customer isn't checked either.
A 10-digit row without a country can become another country. Without a default country, the API reads a row of 8 to 15 digits without + as an international number. A Mexican number in national form then starts with what looks like a foreign country code. In the same test, 12.5% of the 113,812 numbers (14,264) became a valid number in another country when read that way, from Germany (+49) and Denmark (+45) to Thailand (+66). They wouldn't fail; they would be checked as somebody else's number. The rule: set the country to Mexico (default_country: "MX"), or convert every row to +52… yourself. With Mexico as the default country, the same numbers in national, 52… and 0052… spellings all came back correct in our test.
This converter does both jobs and returns null for anything that isn't a Mexican number that can be a mobile:
import { parsePhoneNumberFromString } from "libphonenumber-js/max";
/** One Mexican list cell → E.164 (+52 + 10 digits) that can be a mobile, or null. */
export function toE164Mx(raw) {
let s = String(raw).trim().replace(/[\s().-]/g, "").replace(/^00/, "+");
s = s.replace(/^\+?521(\d{10})$/, "+52$1") // old mobile "1" after 52 (abolished 2019)
.replace(/^(?:044|045|01)(\d{10})$/, "$1"); // old domestic prefixes (abolished 2019)
const p = parsePhoneNumberFromString(s, "MX");
const t = p?.getType();
return p?.isValid() && p.country === "MX" && (t === "MOBILE" || t === "FIXED_LINE_OR_MOBILE") ? p.number : null;
}We ran it on 2026-11-07 with Node 24 and libphonenumber-js 1.13.13, on libphonenumber's own example number. Digits are masked with X:
| Input | Output |
|---|---|
22X XXX XXXX | +5222XXXXXXXX |
+52 22X XXX XXXX | +5222XXXXXXXX |
5222XXXXXXXX | +5222XXXXXXXX |
+52 1 22X XXX XXXX | +5222XXXXXXXX |
52122XXXXXXXX | +5222XXXXXXXX |
044 22X XXX XXXX, 045 …, 01 … | +5222XXXXXXXX |
0052 22X XXX XXXX | +5222XXXXXXXX |
20X XXX XXXX (a landline-only range) | null |
50X XXX XXXX (a personal-number range) | null |
+1 415 XXX XXXX (a US number) | null (dropped: not Mexican) |
All the +5222… rows are the same customer, so they collapse into one number before the check. Since no Mexican area code starts with 1, a 13-digit 521… value can only be the old token, which is why the rewrite is safe.
Why does WhatsApp's help page still mention the 1 after +52?
Because it was written for the old dialling plan and hasn't changed. WhatsApp's article on international number format, which we read on 2026-11-07, still says: "Phone numbers in Mexico (country code "52") need to have "1" after "+52", even if they're Nextel numbers" (WhatsApp Help Center).
The advice is about saving a contact in your phone's address book so the app can find it. It isn't a numbering rule, and it doesn't make +52 1 a valid number: Mexico's own plan and every current validation library say the opposite. For a business list, use the official form everywhere:
- Store
+52plus 10 digits in your CRM. Never add the1to stored records, or your exports stop matching your SMS and voice systems. - Check the same form. You don't need to add the
1for our check: send+52and 10 digits, and the answer comes back under the number you sent. - Clean old records once. Run the converter above over the whole table, not only over new sign-ups.
Can you tell a mobile from a landline in Mexico?
Not from the number. Mobiles and landlines in the same city share the same area code, so libphonenumber returns FIXED_LINE_OR_MOBILE for most Mexican numbers, including its own mobile example. That is why the converter accepts both types. For a WhatsApp list it means a registered: false answer can simply be a landline someone gave you as a contact number. If you need to know, a carrier lookup returns the line type where network data exists, and its service page gives 3 free lookups a day without sign-up. A live network status (HLR) check tells you whether a mobile is reachable.
How do you check a list of Mexican numbers on WhatsApp?
Five steps, from export to answers:
- Export only customers who gave you their number, with your own ID column (for example
crm_id,phone). Leave out bought lists, scraped numbers and number ranges. - Convert and dedupe. Run every cell through a converter like the one above. Keep the rows that return
nullaside for a manual fix. - Estimate. Upload the file in the dashboard (Bulk jobs › Upload a list) and pick Mexico when it asks for the country of numbers written without
+, or send the numbers toPOST /v1/jobs/estimatewith"default_country": "MX". The estimate is free, checks nothing and stores nothing. - Run with a cost cap. Start the job with
max_costset to the estimate. Choosewhatsapp, orwhatsapp.businessif you also need to know whether the account is a WhatsApp Business account. - Download and join back. The result file keeps your row order (
row_no); join it back to your own IDs by row number. Store each answer with itschecked_atdate.
A job holds up to 50,000 numbers, and a dashboard file can be up to 10 MB. The bulk price needs at least 132 numbers from the same country in one job; smaller country groups in a mixed file are checked the real-time way at the real-time price, and the estimate shows them on a small_batch line before you pay. Details are in the bulk jobs docs.
What does it cost?
From our public catalog (GET /v1/services), fetched on 2026-11-07:
| 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 |
Live network status, HLR (number.hlr) | US$5.00 | US$6.00 |
Carrier lookup, beta (carrier) | US$1.50 | US$3.00 |
Only conclusive answers are billed. Unknown, invalid, duplicate and unsupported rows are free, and so are repeats served from your account's cache. The pricing page always has the current prices.
A worked example with made-up figures: a 40,000-row CRM export converts to 36,000 unique valid Mexican numbers, 2,500 of which had the old +52 1. The WhatsApp job costs at most 36,000 × US$0.00025 = US$9.00. Without the conversion, those 2,500 rows would have been dropped as invalid, and any national-format rows uploaded without a country could have been checked as foreign numbers.
How does Mexico's 2026 line registry affect a WhatsApp check?
It makes old answers age faster. Article 103 of the telecom law of 16 July 2025 lets mobile operators activate and keep active only lines linked to an identified user, with an official ID and CURP for people or the RFC for companies (LMTR). The regulator, the Comisión Reguladora de Telecomunicaciones (CRT), set deadlines by the number's last digit, from 15 August to 31 December 2026, with lines not linked suspended after their deadline (CRT, Bol. 021/2026).
Its latest bulletin, of 5 November 2026, gives the state of play as of 4 November (CRT, Bol. 052/2026):
| Item | Value |
|---|---|
| Lines linked nationwide | 100,295,922 (83.6% of those expected) |
| Lines ending in 5 (deadline 31 October) | 9,421,077 linked, 83.2% of about 11.3 million |
| Remaining deadlines | 6 on 15 November, 7 on 30 November, 8 on 15 December, 9 on 31 December 2026 |
| Unused lines to be purged | about 25 million nationwide, 2.5 million of them ending in 5 |
| Suspended lines | keep their number and can still call emergency and citizen-service numbers; service returns once linked |
Mexico has more lines than people: DataReportal's Digital 2026 report counts 145 million cellular mobile connections, 110% of the population, on data available in October 2025 (DataReportal). The purge of unused lines will return many of them to the pool, which is where number recycling starts.
What that means for your list:
- Registered isn't reachable. A WhatsApp check tells you whether an account exists for the number. It doesn't tell you the line is active today. For numbers whose deadline has passed, add an HLR check before an important message.
- Re-check after the deadlines. An answer from before 31 December 2026 can be wrong in January 2027. Re-check opted-in customers in early 2027, oldest answers first.
- A failed code isn't fraud. An OTP that fails to a Mexican number this year may be a suspended line, not a fake one. Give users a way to retry.
Is WhatsApp cheaper than SMS for OTP in Mexico?
Mexico has some of the lowest WhatsApp list rates. From Meta's rate card effective 1 October 2026, in our dataset:
| WhatsApp category, Mexico | USD per delivered message | Change since the 1 July 2026 card |
|---|---|---|
| Authentication | 0.0085 | none |
| Utility | 0.0085 | none |
| Marketing | 0.0397 | up from 0.0305 |
Three Mexican specifics:
- No cross-border surcharge. Mexico isn't on Meta's list of markets with an authentication-international rate, as read on 2026-11-07 (Meta). A business in the US or Spain sending codes to
+52users pays the same US$0.0085 as a Mexican one. - Marketing went up 30%. Meta lowered Mexico's marketing rate on 1 October 2025 and raised it on 1 October 2026 (Meta pricing). Recalculate campaign budgets made before October.
- Peso billing. Meta bills in Mexican pesos (MXN) since 1 January 2026, if you choose it.
Meta charges only for delivered messages, so a code sent to a number without WhatsApp costs nothing but time. We don't quote SMS prices here: they vary by route and contract, so compare with your own invoice. Our WhatsApp OTP vs SMS OTP cost guide has the formula for cost per verified user.
What does Mexico's 2025 data protection law require?
Mexico replaced its 2010 private-sector data protection law in 2025. The new LFPDPPP was published in the federal gazette (DOF) on 20 March 2025 and took effect the next day, under the first transitional article of the decree (DOF, 2025). The former regulator INAI was dissolved, and its powers over private-sector data passed to the Secretaría Anticorrupción y Buen Gobierno, which the law calls "the Secretaría" (EY, 2025). We read the law as published in the DOF on 2026-11-07. The points that touch a number check:
- Consent is the rule, and tacit consent usually counts. Article 7 subjects all processing to the person's consent. Consent is tacit when you made your privacy notice available and the person didn't object, and tacit consent is valid unless a law requires express consent. Financial data needs express consent, and sensitive data express written consent (article 8). Consent can be withdrawn at any time.
- There are exceptions. Article 9 lists cases where no consent is needed, including data needed to exercise a right or meet an obligation arising from a legal relationship between you and the customer.
- The privacy notice sets the limit. It must name you, the data, the purposes, how people can limit use and how to exercise their rights (article 15). Processing is limited to the purposes in the notice, and a different purpose needs new consent (article 11). The 2025 text dropped the old allowance for "compatible or analogous" purposes. If a channel check isn't in your notice, add it before you run one.
- A processor isn't a transfer. The law defines a transfer as a communication of data to someone other than the person, the controller or the processor (persona encargada) acting on the controller's behalf (article 2). A checking service you instruct is a processor; selling or sharing lists with third parties is a transfer, with its own notice and consent rules (articles 35 and 36).
- People can object. Article 26 gives a right to object where continued processing would harm the person, or to automated decisions with significant effects.
- The fines are large. Most breaches of the principles carry fines of 100 to 160,000 times the UMA (Mexico's reference unit), and collecting data by deceit or without required express consent 200 to 320,000 times, with more for repeat breaches and up to double for sensitive data (articles 58 and 59). Processing data by deceit for undue gain is a crime punishable by six months to five years in prison (article 63). Bought or scraped lists sit close to those lines.
Marketing has its own register. The REPEP, run by the consumer agency PROFECO, lets people block marketing calls and texts to their numbers. A business that sends marketing to a registered number without the person's consent can be reported and fined (PROFECO). A one-time code the user asked for isn't marketing.
WhatsApp's own rules sit on top. Its Business Messaging Policy says you may contact people only if they gave you their number and opted in to receive messages from you (WhatsApp), and Meta's opt-in guide requires the opt-in to name your business (Meta for Developers). A registered: true answer is a fact about the number, not permission to message it. Our consent and law guide covers other regions.
On our side, requests with long runs of consecutive numbers are refused as suspected enumeration, each account has a daily cap, and our acceptable use policy forbids unsolicited bulk messaging and range checks. Anyone can object through the opt-out form.
What do you do with numbers that are not on WhatsApp?
Route them to a channel that reaches them, and keep the answer:
| Answer | What it means | What to do |
|---|---|---|
registered: true, customer opted in | Account exists | Send what they asked for on WhatsApp; check REPEP before any SMS marketing fallback |
registered: true, no opt-in | Account exists | Nothing changes; ask for opt-in at the next contact they expect |
registered: false | No account on this number, or a landline | Use SMS, voice or e-mail; a carrier lookup tells you if it's a landline |
| Unknown | No conclusive answer | Keep the current channel, re-check later; free |
null from your converter | Not a valid Mexican number | Fix the record by hand, or ask the customer |
Here is the follow-up check from code: WhatsApp registration plus live network status in one real-time call. It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values, which are UK drama-range numbers because the sandbox accepts only those; with a live key, pass the output of toE164Mx(). We ran it on 2026-11-07 with Node 24.
const API = "https://api.mobilevalidate.com/v1/lookup";
const KEY = process.env.MOBILEVALIDATE_API_KEY;
/** WhatsApp registration plus live network status, for numbers your customers gave you. */
async function whatsappAndLine(numbers) {
const res = await fetch(API, {
method: "POST",
headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ numbers, checks: ["whatsapp", "hlr"], wait: 5 }),
});
if (!res.ok) throw new Error(`lookup failed: ${res.status}`);
return (await res.json()).results.map(({ e164, checks }) => {
const wa = checks["whatsapp.registered"], hlr = checks["number.hlr"];
return {
e164,
whatsapp: wa.status === "completed" ? wa.registered : null, // null = unknown, free
line: hlr.status === "completed" ? hlr.attributes.status : null, // reachable, unreachable, invalid
billed: wa.billed || hlr.billed,
};
});
}
console.table(await whatsappAndLine(["+447700900001", "+447700900002", "+447700900003", "+447700900006"]));e164 | whatsapp | line | billed |
|---|---|---|---|
+447700900001 | true | reachable | false |
+447700900002 | false | unreachable | false |
+447700900003 | null | null | false |
+447700900006 | true | reachable | false |
The third test value stands for a timeout: both checks answer unknown, which the script keeps as null, never false. Test mode never bills; in live mode, unknown answers aren't billed either. Treat unknown as missing data, and don't overwrite a stored conclusive answer with an unknown one. Our list cleaning guide shows how to combine the checks.
How do you start with MobileValidate?
The checks for this guide are WhatsApp number check, WhatsApp Business check, live network status (HLR) and carrier lookup. All take Mexican numbers in real time and in bulk jobs. You don't need a WhatsApp account, a phone or a QR pairing.
- Free, today. Get a free test key to build against fixed test answers, and run the free estimate on any file before you pay.
- 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 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. WhatsApp is named descriptively; MobileValidate is not affiliated with WhatsApp, Meta or any Mexican authority or operator.
What are the key takeaways?
- Send
+52plus 10 digits. Strip the old1,044,045and01: in our test, no number was valid with the1. - Set the country to Mexico or convert first. Read as international, 12.5% of valid Mexican numbers in our test became another country's number.
- WhatsApp's help page still mentions the
1; that is address-book advice from the old plan, not a format for your data. - Bulk WhatsApp checks cost US$0.25 per 1,000 (catalog, 2026-11-07), with at least 132 numbers per country group in one job. A WhatsApp authentication message to Mexico lists at US$0.0085, with no cross-border rate.
- Under the 2026 line registry, lines are suspended by last digit until 31 December 2026 and about 25 million unused lines will be purged. Re-check in 2027, and pair WhatsApp with HLR.
- The 2025 LFPDPPP keeps consent (often tacit) as the rule and ties every check to your privacy notice. Check your own customers' numbers, never bought or scraped lists.
Sources
- Decreto por el que se expiden la Ley General de Transparencia y Acceso a la Información Pública; la Ley General de Protección de Datos Personales en Posesión de Sujetos Obligados; la Ley Federal de Protección de Datos Personales en Posesión de los Particulares (DOF, 20 March 2025) — Diario Oficial de la Federación (DOF), 2025
- Entrada en vigor de la nueva Ley Federal de Protección de Datos Personales en Posesión de los Particulares (Law Flash, 26 March 2025) — EY México, 2025
- About international phone number format — WhatsApp Help Center, 2026
- A partir del 3 de agosto, México tendrá una nueva forma de marcación telefónica (Comunicado 34/2019) — Instituto Federal de Telecomunicaciones (IFT), read through the Internet Archive, 2019
- libphonenumber release notes (v8.10.17, 15 August 2019) — libphonenumber project, 2026
- Ley en Materia de Telecomunicaciones y Radiodifusión (DOF 16 July 2025), article 103 and transitional articles — Cámara de Diputados (official consolidated text), read through the Internet Archive, 2025
- CRT anuncia calendario y fechas límite para registro de líneas (Bol. 021/2026, 25 June 2026) — Comisión Reguladora de Telecomunicaciones (CRT), 2026
- Más de 9.4 millones de líneas con terminación 5 ya están vinculadas (Bol. 052/2026, 5 November 2026) — Comisión Reguladora de Telecomunicaciones (CRT), 2026
- Registro Público para Evitar Publicidad (REPEP): información general — Procuraduría Federal del Consumidor (PROFECO), read through the Internet Archive, 2026
- WhatsApp Business Messaging Policy — WhatsApp, 2026
- Get opt-in for WhatsApp — Meta for Developers, 2026
- Pricing on the WhatsApp Business Platform — Meta for Developers, 2026
- Authentication-international rates — Meta for Developers, 2026
- Digital 2026: Mexico — DataReportal (Kepios), 2025
Frequently asked questions
Do I need to add a 1 after +52 for a WhatsApp check?
No. Send +52 followed by the 10-digit number. Mexico abolished the mobile 1 on 3 August 2019, and current numbering libraries reject +52 1 plus 10 digits as invalid, so a row in that form would be dropped as invalid. Strip the 1 before you upload.
Why does WhatsApp's help page still say Mexican numbers need a 1?
Its article on international number format, read on 2026-11-07, still says Mexican numbers need a 1 after +52. That advice is about saving contacts in your phone and dates from the old dialling plan. For a check, an export or a CRM, use the official 10-digit form, +52 plus 10 digits.
What happens if I upload Mexican numbers without +52 and without a country?
They can turn into numbers of other countries. A row of 8 to 15 digits without a plus is read as international. In our test, 12.5% of 113,812 valid Mexican numbers became a valid number in another country that way. Set the country to Mexico or convert every row to +52 first.
How much does a bulk WhatsApp check of Mexican numbers cost?
On 2026-11-07 our public catalog listed the WhatsApp registration check at US$0.25 per 1,000 numbers in bulk jobs and US$4.00 per 1,000 in real time. The bulk price needs at least 132 numbers from the same country in one job. Unknown, invalid and duplicate rows are never billed.
How does Mexico's 2026 line registry affect a WhatsApp check?
Mobile lines not linked to their holder's ID by the deadline for their last digit are suspended, and the regulator plans to purge about 25 million unused lines. A registration check says whether a WhatsApp account exists for a number, not whether the line is active, so pair it with a live network status (HLR) check for old numbers.
Does Mexico's data protection law allow checking customers' numbers?
The 2025 LFPDPPP makes consent the rule, with tacit consent valid in most cases once you have given a privacy notice, and exceptions such as data needed for a legal relationship with the customer. A new purpose needs new consent. Check only customers who gave you their number, and ask Mexican counsel.
Is WhatsApp cheaper than SMS for OTP in Mexico?
Compare your own SMS invoice with Meta's list rate. On the rate card effective 1 October 2026, a WhatsApp authentication message to Mexico costs US$0.0085 per delivered message. Mexico has no authentication-international rate, so senders based abroad pay the same list rate.
Related services and guides
- ServiceCheck if a phone number is registered on WhatsApp
- ServiceCheck if a number is a WhatsApp Business account
- ServiceHLR lookup API: live mobile network status
- ServicePhone carrier lookup by number: carrier and line type API
- DatasetWhatsApp Business Platform rate cards (USD), 2026-07 and 2026-10
- DocsBulk jobs
More from the blog
All articlesGuides
How to check if a number is on WhatsApp without saving it as a contact
Three free ways to check if a number is on WhatsApp without adding a contact, what the wa.me 'invalid' message means, and how to format numbers by country.
11 min read
Guides
Bulk WhatsApp number check: how to verify a customer list (CSV upload or API)
Check WhatsApp numbers in bulk: prepare a CSV, get a free estimate, cap the cost, run the job in the dashboard or API, and act on each answer.
8 min read
Guides
Bulk WhatsApp number check for Malaysian customer lists (+60)
Check a Malaysian customer list for WhatsApp: fix 01X, 011 and 60 formats to +60, dedupe, get a free estimate, and follow the PDPA 2010 and its 2024 amendments.
13 min read

