Guides

Sri Lanka phone numbers: format, mobile prefixes, validation and messaging rules

Sri Lanka phone number format: +94 and 07X mobile prefixes, tested validation code, operators, porting status, SIM and SMS rules, PDPA dates and WhatsApp checks.

By Published 13 min read

On this page

Sri Lankan numbers use the country code +94. Mobile numbers have 9 digits after the code and start with 7 (07X when dialled at home), so in E.164 they look like +94 7X XXX XXXX. The 07X code names the operator that first held the range. Number portability has not launched as of October 2026, but mergers mean the code can name a brand that no longer exists.

This guide is part of our phone numbers by country series. The tables are generated from libphonenumber's metadata and our public catalog. Example numbers are masked with X. We read the regulator's website (the Telecommunications Regulatory Commission of Sri Lanka, TRCSL, now at trc.gov.lk), the Data Protection Authority's copies of the law and Sri Lankan press reports on 2026-10-16. We couldn't find a current numbering-plan allocation list on the TRCSL site, so where we rely on library data or the press instead, we say so. This is a summary, not legal advice.

What does a Sri Lankan phone number look like?

A mobile number is 07X XXX XXXX at home: the trunk prefix 0, a two-digit mobile code starting with 7, and seven digits. From abroad it is +94 7X XXX XXXX. Landlines have the same length: a two-digit area code (011 is Colombo) and seven digits, so length alone doesn't tell mobile from fixed.

<!-- country-data:LK: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+94
International call prefix (dialling out)00
Trunk prefix (dialling at home)0
Mobile: digits after +949
Fixed line: digits after +949
Universal access (UAN): digits after +949
Mobile, national format (masked)071 XXX XXXX
Mobile, international (masked)+94 71 XXX XXXX
Mobile, E.164 (masked)+9471XXXXXXX
Fixed line, national format (masked)011X XXX XXX
Fixed line, international (masked)+94 11X XXX XXX
Fixed line, E.164 (masked)+9411XXXXXXX
<!-- country-data:LK:format:end -->

Store only the E.164 form. Sri Lankan forms often collect numbers as 077XXXXXXX, 9477XXXXXXX without a plus, or +94 (0)77 XXX XXXX with the trunk zero kept in brackets. A numbering-plan library with the default region LK turns all three into +9477…. A common mistake in hand-written code is the opposite: +94077…, where the 0 was kept after the country code.

A +94 hub with spokes to nine mobile code tiles, 0 to 8, shaded in three groups, tile 3 dashed and tile 4 half filled; beside it a document with a shield and a 2027 tag, and two towers joined by a dashed arc above a clock.A +94 hub with spokes to nine mobile code tiles, 0 to 8, shaded in three groups, tile 3 dashed and tile 4 half filled; beside it a document with a shield and a 2027 tag, and two towers joined by a dashed arc above a clock.
07X codes map to three mobile companies; data-protection duties start in 2027 and porting is still pending.

Which prefixes are mobile numbers, and which operator holds each?

Every mobile number starts 07. For each 2-digit block, the generator counted every 9-digit number that libphonenumber's mobile pattern for LK accepts:

<!-- country-data:LK: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 (9-digit numbers)3-digit sub-blocks that aren't fully mobile
070+94 70100%—
071+94 71100%—
072+94 72100%—
074+94 7450.0%not mobile: 0745–0749
075+94 75100%—
076+94 76100%—
077+94 77100%—
078+94 78100%—
<!-- country-data:LK:prefixes:end -->

070 to 078 are open, with two gaps. 073 isn't a mobile range, and only 0740 to 0744 of the 074 block are, so a number starting 0745 to 0749 is invalid even though it has the right shape. 079 isn't open either.

07X codes and the companies behind them

We found no allocation list on the TRCSL website, so the range holders below come from libphonenumber's carrier prefix data, which records the operator that held each block (libphonenumber carrier data for +94). It still uses some old brand names, so we added what happened to them:

CodeInternationalRange holder (library data)Today, and source
070+94 70MobitelSLT-Mobitel. Sri Lanka Telecom and Mobitel launched one brand in January 2021 (Daily Mirror, 2021).
071+94 71MobitelSLT-Mobitel, as above.
072+94 72EtisalatHutch. Etisalat completed the sale of its Sri Lankan unit to Hutch in late 2018 (Total Telecom, 2018); in May 2019 Hutch said Etisalat Lanka "ceases to exist" and that 078 and 072 subscribers would share one network (Daily FT, 2019).
074+94 74DialogDialog (0740–0744 only).
075+94 75AirtelDialog. Airtel Lanka ceased to exist as a company on 30 August 2024, when its amalgamation with Dialog Axiata was completed; the Airtel brand was kept (Dialog, 2024).
076+94 76DialogDialog.
077+94 77DialogDialog.
078+94 78HutchHutch.
073, 079——Not mobile ranges in the metadata.

So four mobile brands sell SIMs, but only three mobile companies remain: Dialog (including Airtel), SLT-Mobitel and Hutch. The Sunday Times also counted "three mobile operators" in September 2026 (Sunday Times, 2026). If your product shows a carrier name from the prefix, map 075 to Dialog (Airtel brand) and 072 to Hutch, or customers will see brands that are gone.

How do I validate a Sri Lankan number in code?

Use a libphonenumber port with full metadata and the default region LK, then keep only mobile numbers.

Python (pip install phonenumbers):

Python
import phonenumbers


def normalize_lk(raw: str) -> str | None:
    """E.164 for a Sri Lankan 07X mobile, or None."""
    try:
        n = phonenumbers.parse(raw, "LK")
    except phonenumbers.NumberParseException:
        return None
    if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "LK"
            or phonenumbers.number_type(n) != phonenumbers.PhoneNumberType.MOBILE):
        return None
    return phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)

JavaScript (npm install libphonenumber-js):

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

/** "07X XXX XXXX", "+94 7X …", "947X…" or "+94 (0)7X …" → E.164 for a mobile, or null. */
export function normalizeLk(raw) {
  const phone = parsePhoneNumberFromString(String(raw), "LK");
  return phone?.isValid() && phone.country === "LK" && phone.getType() === "MOBILE" ? phone.number : null;
}

We ran both on 2026-10-16 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). Both returned an E.164 number for rows 1 to 5 below, and also for 9477XXXXXXX without a plus and for +94 (0)77 XXX XXXX. Both returned nothing for rows 6 to 9 and for a 0745 number. The shape regex column tests the pattern most tutorials give, after spaces, dashes and brackets are removed:

<!-- country-data:LK:tests:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber-js 1.13.13, region LK); edit the script, not this table -->
#CaseInput (masked)Shape regex ^(?:\+94|0094|0)?7\d{8}$libphonenumber (LK)
1National, with trunk prefix071 XXX XXXXpassesvalid, MOBILE
2International, with spaces+94 71 XXX XXXXpassesvalid, MOBILE
3International dialling prefix 000094 71 XXX XXXXpassesvalid, MOBILE
4E.164+9471XXXXXXXpassesvalid, MOBILE
5Dashes and brackets(071) XXX-XXXXpassesvalid, MOBILE
6One digit short071XXXXXXfailsinvalid
7One digit too many071XXXXXXXXfailsinvalid
8Mobile shape, unused block 073073XXXXXXXpassesinvalid
9Fixed line011X XXX XXXfailsvalid, FIXED_LINE
<!-- country-data:LK:tests:end -->

Row 8 is the one to remember. 073 is shaped like a mobile number and passes the regex, but it isn't an open range, so an OTP sent to it is wasted. The same goes for 0745–0749. Our post on why an E.164 regex is not enough shows the same problem in other countries, and our Python and JavaScript guides cover more languages.

Does number portability change the carrier?

Not yet. Sri Lanka has no mobile number portability (MNP) as of 16 October 2026, so a number still sits on the network of its range holder. TRCSL's news page, last updated that day, had no launch notice. Here is the recent record:

DateWhat happenedSource
August 2025An operator company, Lanka Number Portability Services (Guarantee) Ltd, had been formed with all fixed and mobile operators; the Attorney General's Department had approved the portability rules; the Deputy Minister of Digital Economy said the service would be ready by August 2026Sunday Times, 2025
7 August 2026The government said MNP "will not be launched in September": the end of September was the deadline for operators to agree, and TRCSL would issue a regulatory directive if they didn'tNewswire, 2026
27 September 2026TRCSL's Director General said it was waiting for the Attorney General's opinion on the operational date, and was still deciding whether mobile and fixed portability launch togetherSunday Times, 2026

Our MNP atlas row for Sri Lanka:

<!-- country-data:LK:mnp:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (MNP atlas 2026); edit the script, not this table -->

Our MNP atlas has no verified row for Sri Lanka yet.

<!-- country-data:LK:mnp:end -->

What this means today: the 07X code is a good guide to the network, apart from the merged brands above. That will change on launch day, and launch dates have slipped before: the August 2026 target announced in 2025 has already passed. Build your routing on a per-number lookup now, so nothing breaks when porting starts. Our MNP atlas compares other countries, and our SMS routing with MNP and HLR use case shows where a lookup pays off.

How are SIM cards registered?

Every SIM is tied to an identity document. The Subscriber SIM Cards Regulations No. 01 of 2019 require operators to take a signed application with the subscriber's National Identity Card (NIC) number and permanent address, plus a copy of the NIC, driving licence or passport. The NIC number must be entered before the SIM is activated, and the operator must disconnect the line if the scanned documents aren't uploaded within one month. Corporate SIMs need the business registration and a list of the employees using them (Gazette No. 2134/56, 2019).

For you, this means a Sri Lankan mobile number is registered to a real person or company. It doesn't mean the person in front of you is that subscriber: SIMs are often registered to a family member. Treat a number as a contact channel, not as identity proof.

Which messaging apps and channels reach people?

SMS reaches every active mobile. For WhatsApp, Meta moved Sri Lanka to its own rate card on 1 October 2026, with lower utility and authentication rates and a new authentication-international rate that is higher than the regional rate it replaced (Meta pricing, read on 2026-10-16). If you send OTPs to Sri Lanka from a business based abroad, compare both rates. Our WhatsApp Business API pricing post lists the figures.

Viber has a long local presence. In 2020 it marked ten years in Sri Lanka, with partners that included a state bank and government information services (Daily Mirror, 2020). We found no recent independent measure of WhatsApp or Viber use in Sri Lanka, so we don't quote shares. Measure your own opted-in customers instead: check which apps they are registered on, send each person on the channel they use, and keep SMS as the fallback. Our channel-by-country guide and Viber number check guide show the method.

How do I check WhatsApp and Viber registration for a Sri Lankan customer list?

Normalise every row first, then run one check per number and app. A check tells you whether a number is registered at the time of the check. It can't tell you whether the person wants your messages:

AnswerWhat it meansWhat to do
registered: trueThe number has an account on that app at checked_atOffer that app to customers who opted in to it
registered: falseNo account at checked_atUse SMS or another channel
unknownNo conclusive answer (not billed)Keep the current channel; retry later
invalid_numberFailed format validation (not billed)Fix the data at the source

For lists, use a bulk job. WhatsApp checks get the bulk price only for groups of at least 132 numbers from the same country in one job, so collect a day's Sri Lankan numbers into one job rather than sending many small ones. Upload a CSV whose numbers are written nationally (07X XXX XXXX) with default_country=LK:

Bulk WhatsApp and Viber check for a customer CSV
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -F file=@customers.csv -F checks=whatsapp,viber,carrier -F default_country=LK

Send the same body to POST /v1/jobs/estimate first: it is free and shows the maximum cost before anything runs. Unknown or inconclusive results are never charged; see current prices. Both checks also run in real time through POST /v1/lookup for up to 100 numbers, for example at sign-up. The rules for doing this lawfully are in our consent guide.

What are the rules for SMS, sender IDs and OTP?

These summarise official documents and press reports as we read them on 2026-10-16. We couldn't find TRCSL's current rules on promotional SMS published on its website. Not legal advice; ask counsel how they apply to you.

Promotional SMS and opt-out

In January 2020, TRCSL directed all mobile operators to include a free opt-out option in unsolicited promotional messages. In its words, the directive "shall enable consumers the right to discontinue receiving such unsolicited messages" (Daily News via SAMENA, 2020). In November 2024, after complaints about election campaign texts, a TRCSL official said the 2018 rules on promotional messages weren't strong enough and that the regulator was "in the process of gazetting more strong regulations" (The Morning, 2024). We found no later gazette. Send marketing only to people who opted in, put a free opt-out in every message, and ask your SMS provider which sender ID and content rules each network applies.

Personal data: the PDPA starts in stages

The Personal Data Protection Act, No. 9 of 2022 (PDPA) is coming into force part by part:

Part of the ActStatus on 2026-10-16Source
Part V (Data Protection Authority)In operation since 17 July 2023Gazette No. 2341/59
Sections 2 and 3, Part I (processing) and Part III (controllers and processors)From 1 January 2027, under Gazette Extraordinary No. 2498/16 of 22 July 2026Daily FT, 2026
Part II (data subject rights), Part IV (marketing messages), Part VII (penalties)No date yet; deferredDaily Mirror, 2026

The original Act set fixed windows for these dates. The Personal Data Protection (Amendment) Act, No. 22 of 2025 replaced them: all remaining provisions start on dates the Minister appoints by gazette order (Amendment Act, section 2). We couldn't open the July 2026 gazette itself, so the 1 January 2027 row rests on the two press reports.

Part IV matters most for messaging. Section 27 lets a controller use telecommunication or electronic means to send messages only if the person has consented to receive them, and requires a free opt-out both when contact details are collected and in every message, plus the sender's identity (PDPA, section 27). It isn't in operation yet, but it tells you where the law is going. A registration check on a customer's number is processing of personal data, so from 1 January 2027 it falls under Parts I and III. Until counsel tells you otherwise, follow the baseline in our consent guide: your own customers, a stated purpose, minimal data and honoured objections.

What that means for OTP

A one-time passcode the user asked for isn't marketing, but it travels the same routes. Keep it free of offers, and don't reuse numbers collected for verification for marketing unless the person opted in.

What changed recently?

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

<!-- country-data:LK: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)4
Alternate formatting1
Geocoding (area names)1
Short numbers1
Original-carrier prefix data1
All8

Latest numbering-plan updates for LK: 2021-11-25 (v8.12.38), 2020-10-07 (v8.12.11), 2020-03-02 (v8.11.5), 2019-02-06 (v8.10.5).

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

Sri Lanka's numbering metadata has been stable since 2021, so the changes that matter are elsewhere: the Dialog–Airtel amalgamation in August 2024, Meta's standalone WhatsApp rates from 1 October 2026, the PDPA's 1 January 2027 start date, and portability, which is still waiting for a launch date.

What can MobileValidate check for Sri Lankan numbers?

Generated from our public catalog:

<!-- country-data:LK:coverage:start --> <!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-10-16); edit the script, not this table -->
CheckAccepts Sri Lanka 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 Sri Lanka 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-16; the live list is at GET /v1/services.

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

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

Requests with 20 or more consecutive numbers are refused (403 suspected_enumeration), and our acceptable use policy forbids finding recipients for unsolicited messages. People can object through our opt-out form. See WhatsApp number check, Viber number check, MNP lookup and carrier lookup for the fields.

What are the key takeaways?

  • Sri Lankan mobiles are +94 7 plus eight digits, 07X XXX XXXX at home; store the E.164 form and never keep the 0 after +94.
  • Mobile codes are 070–072 and 074–078; 073, 079 and 0745–0749 aren't mobile.
  • Three mobile companies remain: Dialog (with Airtel, 075, since 2024), SLT-Mobitel and Hutch (with ex-Etisalat 072).
  • Number portability had not launched on 16 October 2026; plan for it with per-number lookups anyway.
  • The PDPA's core duties start on 1 January 2027; its consent and opt-out rules for marketing messages have no date yet.
  • Check WhatsApp or Viber registration only for customers you hold lawfully, keep unknown apart from false, and never treat registration as consent.

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

Sources

  1. Subscriber SIM Cards (Subscriber Identification Modules - SIM) Regulations No. 01 of 2019 (Gazette Extraordinary No. 2134/56, 2 August 2019) — Telecommunications Regulatory Commission of Sri Lanka, 2019
  2. Personal Data Protection Act, No. 9 of 2022 — Data Protection Authority of Sri Lanka, 2022
  3. Personal Data Protection (Amendment) Act, No. 22 of 2025 — Data Protection Authority of Sri Lanka, 2025
  4. Order under subsection (5) of section 1 of the Personal Data Protection Act (Gazette Extraordinary No. 2341/59, 21 July 2023) — Data Protection Authority of Sri Lanka, 2023
  5. Data protection compliance regime takes effect on 1 Jan. 2027 (10 August 2026) — Daily FT, 2026
  6. Legal experts flag unique compliance landscape in staggered PDPA rollout (27 July 2026) — Daily Mirror, 2026
  7. Mobile Number Portability will not launch in September, clarification issued (7 August 2026) — Newswire, 2026
  8. Telcos awaiting AG opinion on number portability (27 September 2026) — The Sunday Times (Sri Lanka), 2026
  9. Number portability by August '26 (24 August 2025) — The Sunday Times (Sri Lanka), 2025
  10. Dialog Axiata completes amalgamation with Airtel Lanka (30 August 2024) — Dialog Axiata, 2024
  11. Hutch Lanka establishes stronger presence in SL with successful completion of Etisalat acquisition (27 May 2019) — Daily FT, 2019
  12. Hutch and Etisalat complete Sri Lanka merger (5 December 2018) — Total Telecom, 2018
  13. SLT and Mobitel join forces to launch unified brand identity (4 January 2021) — Daily Mirror, 2021
  14. Mobile operators to include opt-out option for users (20 January 2020, republished from Daily News) — SAMENA Telecommunications Council, 2020
  15. Propaganda texts to phones: TRCSL calls for explanations from Telcos (13 November 2024) — The Morning, 2024
  16. Rakuten Viber celebrates a decade of operations in Sri Lanka (12 December 2020) — Daily Mirror, 2020
  17. WhatsApp Business Platform pricing (rate card updates effective 1 October 2026) — Meta for Developers, 2026
  18. libphonenumber carrier prefix data for +94 (resources/carrier/en/94.txt) — libphonenumber project (Apache License 2.0), 2026
  19. libphonenumber PhoneNumberMetadata.xml (region LK) and release notes — libphonenumber project (Apache License 2.0), 2026

Frequently asked questions

How many digits is a Sri Lankan mobile number?

Nine digits after the country code +94, or ten when written nationally with the leading 0. Every mobile number is 07X followed by seven digits at home, for example 07X XXX XXXX, and +94 7X XXX XXXX in E.164.

What is the Sri Lanka country code for WhatsApp and international use?

+94. Drop the leading 0 of the national number: 077 XXX XXXX becomes +94 77 XXX XXXX. Store that E.164 form and use it for every platform and API; never keep the 0 after +94.

Which operator does 070, 071, 072, 074, 075, 076, 077 or 078 belong to?

By original range holder: 070 and 071 SLT-Mobitel; 072 and 078 Hutch (072 came from Etisalat Lanka, bought in 2018); 074, 076 and 077 Dialog; 075 Airtel, which became part of Dialog in 2024. 073 and 079 are not mobile ranges today.

Does Sri Lanka have mobile number portability?

Not yet. As of 16 October 2026 it had not launched. The government said in August 2026 that the end of September was only a deadline for operators to agree, not a launch date, and in late September the regulator was still waiting for the Attorney General's opinion on an operational date.

Can I check whether Sri Lankan customers are on WhatsApp or Viber?

Yes, for numbers you hold with a lawful basis, such as your own customers or sign-ups. A MobileValidate check answers registered, not registered or unknown with a checked_at date; unknown answers are not billed. It never returns a name or profile, and requests that look like scans of number ranges are refused.

When does Sri Lanka's Personal Data Protection Act apply to businesses?

Its core obligations start on 1 January 2027. A gazette of 22 July 2026 brought sections 2 and 3, Part I (processing) and Part III (controllers and processors) into operation from that date. Part IV, which requires consent and a free opt-out for marketing messages, had no date yet.

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.