Guides

Argentina phone numbers: format, the mobile 9 and 15, validation and messaging rules

Argentine numbers: why mobiles are +54 9 at home 0 + area code + 15, area codes of 2 to 4 digits, tested validation code, porting and the No Llame register.

By Published 15 min read

On this page

An Argentine mobile number in international format is +54, then 9, then the area code without its leading 0, then the subscriber number: +54 9 11 XXXX XXXX for Buenos Aires. At home the same mobile is dialled 011 15-XXXX-XXXX: trunk 0, area code, the mobile prefix 15, then the number. Drop the 0 and the 15, add the 9, and you have the E.164 form to store.

This guide is part of our phone numbers by country series. The tables marked as generated come from libphonenumber's metadata, our MNP atlas and our public catalog; the rest we wrote and tested on 2026-10-14. Example numbers are masked with X. We read the regulator's pages, the Boletín Oficial and the laws on argentina.gob.ar on 2026-10-14. This is a summary, not legal advice.

What does an Argentine phone number look like?

Every national number has 10 digits: an area code of 2, 3 or 4 digits and a subscriber number of 8, 7 or 6 digits. Mobiles use the same area codes as landlines and add a marker: 15 at home, 9 from abroad.

The 10-digit plan dates from the Basic National Numbering Plan of 1997, which moved Argentina from 8 to 10 digits by 31 January 1999 (ITU, 1997). The area code is shorter where more numbers are needed:

Area code lengthExample areaSubscriber numberLandline at homeMobile at homeMobile in E.164 (masked)
2 digits11 Buenos Aires metropolitan area8 digits011 XXXX-XXXX011 15-XXXX-XXXX+5491XXXXXXXXX
3 digits221 La Plata, 351 Córdoba7 digits0221 XXX-XXXX0221 15-XXX-XXXX+549221XXXXXXX
4 digits3837 Tinogasta6 digits03837 XX-XXXX03837 15-XX-XXXX+5493837XXXXXX

Area codes starting with 1 cover the Buenos Aires area, 2 the southern interior and 3 the northern interior, according to the same plan. They aren't frozen: in 2011 and 2012 the regulator changed 21 of them, for example Posadas from 3752 to 376 and Corrientes from 3783 to 379 (ITU, 2011). Old records can still carry the old codes.

<!-- country-data:AR:format:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber metadata 9.0.39 via libphonenumber-js 1.13.13); edit the script, not this table -->
ItemValue
Country calling code+54
International call prefix (dialling out)00
Trunk prefix (dialling at home)0
Mobile: digits after +5410, 11
Fixed line: digits after +5410
Toll-free: digits after +5410, 11
Premium rate: digits after +5410
Universal access (UAN): digits after +5410
Mobile, national format (masked)011 1X-XXXX-XXXX
Mobile, international (masked)+54 9 1X XXXX XXXX
Mobile, E.164 (masked)+5491XXXXXXXXX
Fixed line, national format (masked)011 XXXX-XXXX
Fixed line, international (masked)+54 11 XXXX XXXX
Fixed line, E.164 (masked)+5411XXXXXXXX
<!-- country-data:AR:format:end -->

The generated table masks the mobile's national format after two digits, which hides the 5 of the 15: it reads 011 15-XXXX-XXXX in full.

A dial string with the trunk 0 and the 15 struck out, turning into +54, a highlighted 9, the area code and eight digit dots; below, three rows of ten cells with 2, 3 and 4 area-code cells, two towers with a swap arrow and a register.A dial string with the trunk 0 and the 15 struck out, turning into +54, a highlighted 9, the area code and eight digit dots; below, three rows of ten cells with 2, 3 and 4 area-code cells, two towers with a swap arrow and a register.
Drop the 0 and the 15, add the 9: one 10-digit national number, stored as +54 9 in E.164.

Why do Argentine mobiles have a 9 and a 15?

Because a mobile and a landline can share the same 10 digits, and the caller has to say which one they mean. At home the 15 does that; from abroad the 9 does. Neither is part of the subscriber number.

The 1997 plan lists 15 among the national access prefixes, next to 0 (national long distance) and 00 (international), and defines it as the prefix for a "calling party pays" call: 15 + local number (ITU, 1997). Calling-party-pays lines are the mobiles. So inside an area you dial 15 XXXX-XXXX, and from another area 0 + area code + 15 + number.

From abroad the 15 is not used. The City of Buenos Aires tells visitors to put +54 11 before a landline number and +54 9 11 before a mobile (Buenos Aires City, Prefijos y llamadas). libphonenumber follows the same rule: its notes for country code 54 say all Argentine numbers are 10 digits long, and that its metadata writes mobile ranges as 11 digits by adding the prefix 9 (libphonenumber, metadata/54).

Calling an Argentine mobileWhat you dial or store
From the same area15 + subscriber number
From another area in Argentina0 + area code + 15 + subscriber number
From abroadinternational prefix + 54 9 + area code + subscriber number
Stored in a database or sent to an API+549 + area code + subscriber number (E.164)

Two errors follow from this. Keeping the 15 in the international form (+54 9 11 15 XXXX XXXX) gives a number that's too long. Dropping the 9 (+54 11 XXXX XXXX) gives a valid number of the wrong kind: the landline form of the same digits.

Which prefixes are mobile numbers?

None, on their own. Argentina has no mobile-only leading digits: mobiles are spread over all area codes. Because libphonenumber writes them with the 9 in front, the generated table below counts blocks of that 9-prefixed form.

<!-- country-data:AR:prefixes:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (exact count over the mobile pattern, libphonenumber metadata 9.0.39); edit the script, not this table -->
National prefixInternationalShare of the block that is mobile (10, 11-digit numbers)3-digit sub-blocks that aren't fully mobile
067+54 6710.0%not mobile: 0670–0674, 0676–0679
091+54 919.0%not mobile: 0910, 0912–0919; partly mobile: 0911 (90.0%)
092+54 927.5%not mobile: 0920, 0921, 0925, 0927; partly mobile: 0922 (19.6%), 0923 (11.4%), 0924 (2.6%), 0926 (18.4%), 0928 (2.0%), 0929 (21.5%)
093+54 9310.9%not mobile: 0930–0932, 0939; partly mobile: 0933 (2.9%), 0934 (32.2%), 0935 (23.0%), 0936 (3.0%), 0937 (14.8%), 0938 (33.4%)
<!-- country-data:AR:prefixes:end -->

Read this table with care. The generator puts the trunk 0 in front of each block, so 091 means "9, then an area code starting with 1"; nobody dials 09 in Argentina. The shares measure which area codes and subscriber-number starts the metadata accepts, not how many mobiles exist. Small shares are normal: the plan restricts subscriber numbers that start with 0 or 1, and many area codes are unused. The 10-digit 675 block (written 067 above) is a separate range that the metadata also lists as mobile.

What matters for validation: any valid Argentine mobile in E.164 starts +549, and the area code that follows decides how long the rest is.

How do I validate an Argentine number in code?

Use a libphonenumber port with full metadata and the default region AR. It removes the 0 and the 15, adds the 9, and tells you whether the result is a mobile.

Python (pip install phonenumbers):

Python
import phonenumbers
from phonenumbers import PhoneNumberType as T


def normalize_ar(raw: str, area_code: str | None = None) -> tuple[str | None, str]:
    """(E.164, kind) for an Argentine number; kind is "mobile", "fixed_or_missing_9" or "invalid".

    area_code: the customer's area code without 0 (for example "11"), used only when the
    input has no area code, such as "15 XXXX-XXXX" typed by someone in that area.
    """
    tries = [raw] + ([f"0{area_code} {raw}"] if area_code else [])
    for text in tries:
        try:
            n = phonenumbers.parse(text, "AR")
        except phonenumbers.NumberParseException:
            continue
        if not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "AR":
            continue
        e164 = phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)
        if phonenumbers.number_type(n) == T.MOBILE:
            return e164, "mobile"  # always +549...
        return e164, "fixed_or_missing_9"  # +54 without 9: a landline, or a mobile saved without its 9
    return None, "invalid"

JavaScript (npm install libphonenumber-js):

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

/** → { e164, kind }, kind "mobile", "fixed_or_missing_9" or "invalid". areaCode (e.g. "11") only for inputs without one. */
export function normalizeAr(raw, areaCode) {
  const tries = [String(raw), ...(areaCode ? [`0${areaCode} ${raw}`] : [])];
  for (const text of tries) {
    const phone = parsePhoneNumberFromString(text, "AR");
    if (!phone?.isValid() || phone.country !== "AR") continue;
    return { e164: phone.number, kind: phone.getType() === "MOBILE" ? "mobile" : "fixed_or_missing_9" };
  }
  return { e164: null, kind: "invalid" };
}

We ran both on 2026-10-14 (Python phonenumbers 9.0.40, libphonenumber-js 1.13.13 with metadata 9.0.39) on the inputs below, and both gave the same answers:

Input as people write it (masked)Area code passedResultkind
011 15 XXXX-XXXXnone+5491XXXXXXXXXmobile
+54 9 11 XXXX XXXXnone+5491XXXXXXXXXmobile
+54 11 15 XXXX XXXX (15 kept, 9 missing)none+5491XXXXXXXXXmobile
5491XXXXXXXXX (no plus)none+5491XXXXXXXXXmobile
0221 15 XXX-XXXXnone+549221XXXXXXXmobile
03837 15 XX-XXXXnone+5493837XXXXXXmobile
15 XXXX-XXXX11+5491XXXXXXXXXmobile
15 XXXX-XXXXnonenoneinvalid
+54 11 XXXX XXXX (9 missing)none+541XXXXXXXXXfixed_or_missing_9
+54 9 11 15 XXXX XXXX (9 and 15)nonenoneinvalid

The third row is worth knowing: the libraries repair the common mix of 15 kept and 9 missing. The second-to-last row is the trap: a mobile saved without its 9 comes back valid, as a landline. If your form asked for a mobile, flag it and ask the customer, rather than sending an OTP to the landline form.

The generator's own test table checks the metadata's example numbers against a shape regex built from the mobile pattern:

<!-- country-data:AR:tests:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber-js 1.13.13, region AR); edit the script, not this table -->
#CaseInput (masked)Shape regex ^(?:\+54|0054|0)?[69]\d{9,10}$libphonenumber (AR)
1National, with trunk prefix011 XX-XXXX-XXXXfailsvalid, MOBILE
2International, with spaces+54 9 1X XXXX XXXXpassesvalid, MOBILE
3International dialling prefix 000054 11 XX-XXXX-XXXXfailsvalid, MOBILE
4E.164+5491XXXXXXXXXpassesvalid, MOBILE
5Dashes and brackets(011) XX-XXXX-XXXXfailsvalid, MOBILE
6One digit short091XXXXXXXXpassesinvalid
7One digit too many091XXXXXXXXXXfailsinvalid
8Mobile shape, unused block 060060XXXXXXXXXpassesinvalid
9Fixed line011 XXXX-XXXXfailsvalid, FIXED_LINE
10Premium rate range060X-XXX-XXXXpassesvalid, PREMIUM_RATE
<!-- country-data:AR:tests:end -->

Rows 1, 3 and 5 are the domestic form with the 15 (masked after two digits, so 011 15-… shows as 011 XX-…): the regex fails them and libphonenumber accepts them. Row 6 shows the opposite: one digit short, yet the regex passes it. A regex can't tell where the area code ends, so it can't check the length of the rest. More languages are in our Python and JavaScript guides.

Does number portability change the carrier?

Yes. Mobile number portability has worked in Argentina since March 2012, as ENACOM recorded in a 2016 resolution on numbering blocks (ENACOM Res. 1949/2016). The same resolution notes that when a ported customer leaves, the number returns to the operator the range is assigned to.

The rules are the Régimen de Portabilidad Numérica of Resolución 98/2010, as amended. Resolución 170-E/2017 cut the porting process to no more than one working day, counted from the moment the portability database administrator receives the request, and capped any minimum stay with the new operator at 30 days (Res. 170-E/2017). ENACOM's FAQ adds that the regulator can allow up to ten working days for complex cases, such as many lines or wide geographic spread, and that a port may not cut service for more than three hours (ENACOM). The Argentina row of our MNP atlas:

<!-- country-data:AR:mnp:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (row from content/datasets/mnp-atlas-2026); edit the script, not this table -->
ItemValue
Mobile number portabilityYes
Mobile porting sincenot verified
Maximum porting time1 working day (up to 10 working days in complex cases)
Governing ruleENACOM number portability regime
Published porting volumenone published
Sourceenacom.gob.ar
Checked2026-09-25
<!-- country-data:AR:mnp:end -->

Since the area code is shared by every operator, it never told you the network in the first place. If routing, pricing or fraud rules depend on the operator, look it up per number. Our MNP atlas compares Argentina with 67 other countries.

Which messaging apps and channels reach people?

SMS reaches every active mobile. For WhatsApp, Meta's pricing page lists rate changes specific to Argentina: lower utility and authentication rates from 1 October 2025, and the Argentine peso (ARS) as a billing currency from 1 April 2026 (Meta pricing, read on 2026-10-14). Our WhatsApp OTP vs SMS OTP post shows how to compare the cost per verified user.

WhatsApp is often called the default messenger in Argentina, but we didn't find a published source that measures app use there in a way we can check, so we don't quote shares. Measure it on your own opted-in customers instead, and keep SMS as the fallback. Our channel-by-country guide shows the method.

The 9 matters here too. A WhatsApp account is tied to the full international number, so a list where mobiles are stored as +54 11… without the 9 is a list of landline-form numbers. Normalise with normalize_ar() first, then check.

These summarise the laws as we read them on argentina.gob.ar on 2026-10-14. Not legal advice; ask counsel how they apply to you.

The No Llame register (Law 26,951)

Law 26,951 (sanctioned 2 July 2014) created the national No Llame register to protect telephone users from unsolicited advertising, offers, sales and gifts. It covers fixed and mobile telephony and similar services, including voice over IP (Ley 26.951):

  • Anyone can register, for free, and doesn't need to be the account holder. Registration is online, with the person's CUIL and Mi Argentina login (argentina.gob.ar, Registro No Llame).
  • Companies must check the register. The law requires those who advertise, offer, sell or give away goods or services by telephone to check registrations every 30 days and not to contact registered numbers. Decree 2501/2014 requires the check before each contact campaign (Decreto 2501/2014). After registering, people are told to allow up to 30 days for calls to stop.
  • Exceptions (article 8): public-interest campaigns, emergency calls, election campaigns, contacts within an existing contract and limited to its subject, and contacts the registered person expressly authorised.

The law speaks of telephone services in general and doesn't name SMS. The government's guide does speak of "calls or messages" with offers. The safe reading for a marketing SMS programme is to treat the register as applying.

Data protection (Law 25,326)

Processing personal data is lawful only with the person's free, express and informed consent, recorded in writing or an equivalent form, unless an exception applies (article 5). For advertising, article 27 allows data from public sources or data the person provided or consented to, and lets the person ask at any time to be removed or blocked from the list (Ley 25.326).

What that means for OTP

A one-time passcode the user asked for isn't advertising. Send it from a sender your provider has set up for transactional traffic, keep it free of offers, and don't reuse numbers collected for verification for marketing without consent.

Can I check which Argentine customers have WhatsApp?

Yes, for your own customers and a purpose they can expect, such as choosing the channel for messages they asked for. A registration check tells you an account exists. It doesn't give you permission to message anyone.

Buyers usually run this on a CRM export before switching notifications to WhatsApp. Under Law 25,326, tell people at collection what you do with their number. Wording such as: "We use your mobile number to send you order and account messages by SMS or WhatsApp, and we check which of these channels your number can receive." Keep the result with its checked_at date, refresh it, and delete the uploaded file once your systems are updated. Our post on WhatsApp number checks, consent and the law covers lawful bases and retention in more depth.

What we refuse: lists of sequential or generated numbers (20 or more consecutive numbers return 403 suspected_enumeration), "find all WhatsApp users" requests and anything that treats a result as permission to contact someone. Our acceptable use policy forbids finding recipients for unsolicited messages, and a check never returns a name or a photo.

What changed recently?

The rows for AR and +54 in our numbering-plan changes dataset, built from libphonenumber's release notes:

<!-- country-data:AR:changes:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (rows of content/datasets/numbering-plan-changes-2019-2026); edit the script, not this table -->
Change named in the release notes (2019-01-08 to 2026-09-23)Releases
Numbering-plan metadata (validation, lengths, types)20
Geocoding (area names)7
Short numbers4
Alternate formatting1
All32

Latest numbering-plan updates for AR: 2026-08-13 (v9.0.37), 2025-03-13 (v9.0.1), 2025-02-27 (v9.0.0), 2024-11-13 (v8.13.50), 2024-09-04 (v8.13.45).

<!-- country-data:AR:changes:end -->

Argentina's metadata changes often, and the last update was in August 2026, so keep your library current. Update it on a schedule rather than when something breaks: an outdated library may reject a valid new range or accept an old area code.

What can MobileValidate check for Argentine numbers?

Generated from our public catalog:

<!-- country-data:AR:coverage:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-10-14); edit the script, not this table -->
CheckAccepts Argentina numbersNotes
Format and country (every lookup)YesEach number is parsed first; an invalid number returns invalid_number and is never billed.
Carrier lookup (beta)YesLine type and current network where data exists; no data means unknown, not billed. Real time and bulk.
US/CA carrier lookup (premium)No (US, CA only)Answers unsupported_country for other countries, not billed.
Live network status (HLR)YesLive reachability, porting, roaming (true or false) and current network; unknown is free. Real time and bulk.
Number portability (MNP)YesPorted or not ported, and the current network code; unknown is free. Real time and bulk.
Spam reputationLimited accessAll countries except sanctioned ones; report coverage is strongest in North America and Europe.
Messaging appsYes: WhatsApp, Telegram, Viber, Signal*, iMessage*, RCS*, LINE*, Zalo, Botim*, Facebook Messenger*Registered, not registered or unknown; unknown is free.
Social networksYes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat*Not for Argentina numbers: LinkedIn (US, IN only).
Online accounts (Apple, Amazon, Microsoft, Netflix)Yes: Apple, Amazon, Microsoft, NetflixRegistered, not registered or unknown; unknown is free.

* bulk jobs only. Catalog as fetched on 2026-10-14; the live list is at GET /v1/services.

<!-- country-data:AR:coverage:end -->

A lookup returns network and registration facts. It never returns a subscriber's name, DNI, CUIL or address, and we don't offer "number details" searches.

Here is the request for one lookup with the current network and WhatsApp registration. Pass the output of normalize_ar(), always with the 9. To try it without spending anything, use the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym with our test values (UK drama numbers, because the sandbox accepts only those):

Shell
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001"], "checks": ["carrier", "whatsapp"], "wait": 5}'

The documented sandbox answers for three test values:

Test valuewhatsappcarrier
+447700900001registered: trueline_type: "mobile", carrier: "Test Carrier"
+447700900002registered: falseunknown (NO_DATA)
+447700900005unsupported_countryunsupported_country

For a customer list, use a bulk job: the free estimate (POST /v1/jobs/estimate) shows the maximum cost before anything runs, and unknown or inconclusive results are never charged. See WhatsApp number check and carrier lookup for the fields, and pricing for current prices.

What are the key takeaways?

  • Argentine mobiles are +54 9 + area code + subscriber number in E.164; at home they're 0 + area code + 15 + number. Store the +549… form.
  • Area codes have 2, 3 or 4 digits and the national number is always 10 digits, so the subscriber number is 8, 7 or 6 digits.
  • +54 11 XXXX XXXX without the 9 is valid, but as a landline. Flag mobiles saved that way.
  • Let a libphonenumber port do the work: a regex can't tell where the area code ends.
  • Mobile numbers have been portable since March 2012, with a one-working-day port since 2017. Look up the network per number.
  • Check the No Llame register before telephone marketing, get consent under Law 25,326, and treat a WhatsApp registration check as channel information, never as permission.

Platform, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.

Sources

  1. Argentina (country code +54): communications of 2 July 1997 (Plan Fundamental de Numeración Nacional) and 10 November 2011 (area code changes) — International Telecommunication Union (ITU-T), national numbering plans, 2011
  2. libphonenumber metadata notes for country code 54 (resources/metadata/54/README) — libphonenumber project (Apache License 2.0), 2026
  3. Prefijos y llamadas — Gobierno de la Ciudad de Buenos Aires (Turismo), 2026
  4. Portabilidad numérica (preguntas frecuentes) — Ente Nacional de Comunicaciones (ENACOM), 2026
  5. Resolución 1949/2016 (28 April 2016, Boletín Oficial 5 May 2016) — Ente Nacional de Comunicaciones (ENACOM), Boletín Oficial de la República Argentina, 2016
  6. Resolución 170-E/2017 (30 January 2017, Boletín Oficial 10 March 2017), amending the Régimen de Portabilidad Numérica of Resolución 98/2010 — Ministerio de Comunicaciones, Boletín Oficial de la República Argentina, 2017
  7. Ley 26.951: Registro Nacional No Llame (sanctioned 2 July 2014, Boletín Oficial 5 August 2014) — Presidencia de la Nación (argentina.gob.ar, normativa), 2014
  8. Decreto 2501/2014: reglamentación de la Ley 26.951 (Boletín Oficial 6 January 2015) — Presidencia de la Nación (argentina.gob.ar, normativa), 2015
  9. Registro No Llame (Ley simple) — Presidencia de la Nación (argentina.gob.ar, Derecho Fácil), 2026
  10. Ley 25.326: Protección de los Datos Personales (sanctioned 4 October 2000), articles 5 and 27 — Presidencia de la Nación (argentina.gob.ar, normativa), 2000
  11. WhatsApp Business Platform pricing (market list and rate updates) — Meta for Developers, 2026

Frequently asked questions

How do I write an Argentine mobile number in international format?

Write +54, then 9, then the area code without its 0, then the subscriber number without the 15. A Buenos Aires mobile dialled at home as 011 15-XXXX-XXXX becomes +54 9 11 XXXX XXXX, or +5491XXXXXXXXX in E.164. Store that form and use it for SMS, WhatsApp and every API.

What is the 15 in Argentine mobile numbers?

A domestic prefix, not part of the number. Argentina's numbering plan defines 15 as the access prefix for calls to calling-party-pays (mobile) lines, dialled between the area code and the subscriber number. It is dropped in the international format, where the 9 after +54 marks the number as a mobile instead.

How many digits is an Argentine phone number?

Every national number has 10 digits: an area code of 2, 3 or 4 digits plus a subscriber number of 8, 7 or 6 digits. In E.164 a landline is +54 plus 10 digits and a mobile is +54 9 plus 10 digits, so 11 digits after the country code.

Is +54 11 XXXX XXXX a mobile or a landline?

As written, it is the landline form, and validation libraries report it as a fixed line. Mobiles and landlines share the same 10-digit numbering, so a mobile saved without its 9 looks exactly like a landline. Ask the customer, or run a lookup on the +54 9 form before you treat it as a mobile.

Can Argentine mobile users keep their number when they change operator?

Yes. Mobile number portability has worked in Argentina since March 2012, according to the regulator ENACOM. Since a 2017 resolution a port may take no more than one working day, so the area code says nothing about the operator that serves a number today.

How do people in Argentina stop marketing calls?

By registering their line, for free, on the national No Llame register created by Law 26,951 of 2014. Companies that advertise or sell by telephone must check the register before contacting people and must not contact registered numbers, apart from exceptions such as existing customers within their contract.

All articles

Know before you send.

Tell us about your use case. We review every request and set you up with test and live keys.