# Cambodian phone numbers: format, operator prefixes, validation and messaging rules

> Cambodia phone number format: +855 and 8- or 9-digit mobiles, TRC prefixes for Cellcard, Smart, Metfone and Seatel, tested code, SIM rules and Telegram checks.

Canonical: https://mobilevalidate.com/blog/cambodia-phone-number-format · Last updated: 2026-11-08

![A wide card with a +855 pill and two number rows led by 8 and 9 pills with prefix cells and six digit dots; a column of chat bubbles under a chat tile with a check; a SIM with a risk badge and an ID tile; two towers marked MNP with an x.](https://mobilevalidate.com/images/blog/cambodia-phone-number-format.svg)

*Eight or nine digits after +855, many operator prefixes, no porting and ID-checked SIMs.*


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-11-08 · Category: Guides · Tags: Cambodia, Phone validation, E.164, SMS, Telegram, Compliance

Cambodian numbers use the country code +855. Mobile numbers have 8 or 9 digits after the code: a two-digit operator prefix and six or seven digits, written 0XX XXX XXX or 0XX XXX XXXX at home and +855 XX XXX XXX or +855 XX XXX XXXX in E.164. The prefix shows the operator (Cellcard, Smart, Metfone or Seatel), and because Cambodia has no mobile number portability as of November 2026, it still does. SIMs must be registered with ID, and marketing messages must offer an easy way to refuse them.

This guide is part of our [phone numbers by country](/blog/phone-numbers-by-country) series. The tables are generated from libphonenumber's metadata, our [MNP atlas](/datasets/mnp-atlas-2026) and our public catalog. Example numbers are masked with X, or are the example numbers published in libphonenumber. The Telecommunication Regulator of Cambodia (TRC) website didn't load for our tools, so we read its prefix list and statistics in Internet Archive copies from 2025 and 2026. We read the other sources on 2026-11-07. Where we rely on press reports, we say so. This is a summary, not legal advice.

## What does a Cambodian phone number look like?

A mobile number is `0XX XXX XXX` or `0XX XXX XXXX` at home: the trunk prefix `0`, a two-digit operator code and six or seven digits. From abroad it is `+855 XX XXX XXX` or `+855 XX XXX XXXX`. The only national numbering plan Cambodia has filed with the International Telecommunication Union (ITU) is from 2009. It describes a closed scheme of country code, national destination code and subscriber number, with `0` dialled before the code at home ([ITU, 2009](https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000230001MSWE.doc)). Its operator table is long out of date; the TRC's prefix list below is the current reference.

<!-- country-data:KH:format:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber metadata 9.0.41 via libphonenumber-js 1.13.15); edit the script, not this table -->

| Item | Value |
|---|---|
| Country calling code | `+855` |
| International call prefix (dialling out) | `00[14-9]` (pattern: more than one prefix is used) |
| Trunk prefix (dialling at home) | `0` |
| Mobile: digits after +855 | 8, 9 |
| Fixed line: digits after +855 | 8, 9 |
| Toll-free: digits after +855 | 10 |
| Premium rate: digits after +855 | 10 |
| Mobile, national format (masked) | `091 XXX XXX` |
| Mobile, international (masked) | `+855 91 XXX XXX` |
| Mobile, E.164 (masked) | `+85591XXXXXX` |
| Fixed line, national format (masked) | `023 XXX XXXX` |
| Fixed line, international (masked) | `+855 23 XXX XXXX` |
| Fixed line, E.164 (masked) | `+85523XXXXXXX` |
<!-- country-data:KH:format:end -->

Store only the E.164 form, `+855` plus eight or nine digits, with no spaces and no `0` after `855`. Cambodian sign-up forms often collect `0XXXXXXXX`, `855XXXXXXXX` without a plus, `+855 0…` with a stray zero, or `00855…`. A numbering-plan library with the default region `KH` handles most of these. The `00855` form needs one extra step, explained next.

### Why does 00855 turn into a Brazilian number?

In Cambodia, calls abroad go through gateway codes that start with `00`: the 2009 plan lists `001`, `007` and `008`, and libphonenumber accepts `001` and `004` to `009`. That makes `00855…` ambiguous. A library told the number comes from Cambodia reads `008` as the exit code and `55` as the country code of Brazil, so `00855 9X XXX XXX` becomes an invalid Brazilian number. Row 3 of the test table below shows it as invalid.

People type `00855` because `00` is the exit code in most countries. The fix is one line: rewrite a leading `00` followed by `855` to `+` before parsing. Don't rewrite every `00`, or `001855…`, a real Cambodian way to dial, turns into a North American number.

## Which prefixes are mobile numbers?

Mobile prefixes start with `01`, `03`, `06`, `07`, `08` or `09`, but not every block in those ranges is in use. For each 2-digit block, the generator counted every 8- and 9-digit number that libphonenumber's mobile pattern for `KH` accepts:

<!-- country-data:KH:prefixes:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (exact count over the mobile pattern, libphonenumber metadata 9.0.41); edit the script, not this table -->

| National prefix | International | Share of the block that is mobile (8, 9-digit numbers) | 3-digit sub-blocks that aren't fully mobile |
|---|---|---|---|
| `0AA`, for 34 blocks AA = 10, 11, 13–17, 19, 60, 61, 66–69, 70, 77–79, 80, 81, 83–87, 89, 90–95, 98, 99 | `+855 AA` | 100% | — |
| `0AA`, for 3 blocks AA = 12, 18, 97 | `+855 AA` | 100% | — |
| `0AA`, for 24 blocks AA = 23–26, 32–36, 42–44, 52–55, 62–65, 72–75 | `+855 AA` | 1.0% | not mobile: 0AA0, 0AA1, 0AA2, 0AA3, 0AA5, 0AA6, 0AA7, 0AA8, 0AA9; partly mobile: 0AA4 (10.0%) |
| `0AA`, for 6 blocks AA = 31, 38, 71, 76, 88, 96 | `+855 AA` | 100% | — |
<!-- country-data:KH:prefixes:end -->

How to read it: the generator groups blocks with the same share. The first group are blocks with 8-digit numbers only (a different set of 34 from the TRC list below), the second (`012`, `018`, `097`) accepts both 8 and 9 digits, and the last group (`031`, `038`, `071`, `076`, `088`, `096`) has 9-digit numbers only. The third group is the provincial landline area codes. Inside them, libphonenumber treats numbers that start with `48` after the area code, such as `023 48X XXXX`, as mobile. We found no TRC document that describes that series, so don't build rules on it.

### Mobile prefixes by operator

The TRC publishes the current list of mobile prefixes. In the snapshot of 28 August 2026 it lists 34 prefixes and marks seven of them with an asterisk, which "indicates prefixes with 7-digit numbers" ([TRC prefix list](https://web.archive.org/web/20260828152537/https://www.trc.gov.kh/en/resources/mobile-prefixes/)):

| Operator | Prefixes with 6-digit numbers (8 digits after +855) | Prefixes with 7-digit numbers (9 digits after +855) |
|---|---|---|
| Cellcard | `011`, `012`, `014`, `017`, `061`, `077`, `078`, `085`, `089`, `092`, `095`, `099` | `076` |
| Smart | `010`, `015`, `016`, `069`, `070`, `081`, `086`, `087`, `093`, `098` | `096` |
| Metfone | `060`, `066`, `067`, `068`, `090` | `031`, `071`, `088`, `097` |
| Seatel | — | `018` |

Four mobile network licences were in force when the TRC last published statistics we could read ([TRC statistics](https://web.archive.org/web/20251206131436/https://www.trc.gov.kh/en/resources/telecom-statistics/)). Two old operator names still turn up in prefix lists online. `013` belonged to qb, run by CadComms, whose licence and spectrum the TRC revoked after its business stopped ([Developing Telecoms, 2020](https://www.developingtelecoms.com/telecom-business/telecom-regulation/9693-cambodia-strips-cadcomms-of-licence-and-spectrum.html)). And `038` doesn't appear on the TRC list at all.

### Where the library and the regulator disagree

We compared the TRC list with libphonenumber 9.0.40 (Python) on 2026-11-07:

| Case | TRC list (August 2026) | libphonenumber 9.0.40 |
|---|---|---|
| `013`, `019`, `038`, `079`, `080`, `083`, `084`, `091`, `094` | not listed | accepted as mobile |
| `012`, `018`, `097` | 6 digits (`012`) or 7 digits (`018`, `097`) | both lengths accepted |
| `013` | not listed (licence revoked) | carrier name "qbmore/Cadcomms" |
| `087` | Smart | no carrier name |

Even libphonenumber's own example mobile number for Cambodia, `091 234 567`, sits in a block the TRC doesn't list. So a number that passes validation can still be in a block no operator serves today. If you get real traffic from such a block, log it: the list may simply be newer or older than your data.

## What are 023, 1800 and the other numbers?

Landlines use provincial area codes in the `02` to `07` ranges; `023` is Phnom Penh. Toll-free numbers start with `1800` and premium-rate numbers with `1900` in libphonenumber's metadata, ten digits without a trunk `0`. Because landlines and mobiles have the same lengths (8 or 9 digits after `+855`), a shape regex can't tell them apart: row 9 of the test table, a Phnom Penh landline, passes the mobile-shaped regex.

All networks share standard USSD codes since 1 January 2022: `*1201#` for the balance, `*1202#` to check the identity a SIM is registered to, and `1204` for customer care ([MPTC, 2021](https://mptc.gov.kh/?p=27811)). `*1202#` is the quick way for a customer to confirm their own SIM's registration.

## How do I validate a Cambodian number in code?

Use a libphonenumber port with full metadata and the default region `KH`, rewrite `00855` to `+855` first, then keep only mobiles. To try a batch of inputs without writing code, paste them into our free [phone number validator](/tools/phone-number-validator).

**Python** (`pip install phonenumbers`):

```python title="kh_normalize.py"
import re

import phonenumbers


def normalize_kh(raw: str) -> str | None:
    """E.164 for a Cambodian mobile number (8 or 9 digits after +855), or None."""
    s = re.sub(r"^\s*00(?=855)", "+", raw)  # 00855… would be read as exit code 008 + 55 (Brazil)
    try:
        n = phonenumbers.parse(s, "KH")
    except phonenumbers.NumberParseException:
        return None
    if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "KH"
            or phonenumbers.number_type(n) != phonenumbers.PhoneNumberType.MOBILE):
        return None
    return phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)


for raw in ["091 234 567", "+855 91 234 567", "85591234567", "00855 91 234 567",
            "001855 91 234 567", "091 234 5678", "023 756 789", "1800 123 456"]:
    print(f"{raw!r:22} -> {normalize_kh(raw)}")
```

**JavaScript** (`npm install libphonenumber-js`):

```js title="kh-normalize.mjs"
import { parsePhoneNumberFromString } from "libphonenumber-js/max";

/** "091 …", "+855 9…", "855…", "00855…" or "001855…" → E.164 for a Cambodian mobile, or null. */
export function normalizeKh(raw) {
  const s = String(raw).replace(/^\s*00(?=855)/, "+"); // else 00855… reads as exit code 008 + 55 (Brazil)
  const phone = parsePhoneNumberFromString(s, "KH");
  return phone?.isValid() && phone.country === "KH" && phone.getType() === "MOBILE" ? phone.number : null;
}

for (const raw of ["091 234 567", "+855 91 234 567", "85591234567", "00855 91 234 567",
  "001855 91 234 567", "091 234 5678", "023 756 789", "1800 123 456"]) {
  console.log(JSON.stringify(raw).padEnd(22), "->", normalizeKh(raw));
}
```

The inputs are libphonenumber's own example numbers for Cambodia (mobile `091 234 567`, fixed line `023 756 789`, toll-free `1800 123 456`), one of them with an extra digit, not real subscribers. We ran both on 2026-11-07 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). Both printed the same answers:

```text
'091 234 567'          -> +85591234567
'+855 91 234 567'      -> +85591234567
'85591234567'          -> +85591234567
'00855 91 234 567'     -> +85591234567
'001855 91 234 567'    -> +85591234567
'091 234 5678'         -> None
'023 756 789'          -> None
'1800 123 456'         -> None
```

(The JavaScript version prints `null` instead of `None` and uses double quotes.) The fourth line only works because of the `00855` rewrite; the fifth works without it, because `001` is a Cambodian exit code. `091 234 5678` fails because `091` carries only six-digit subscriber numbers. The shape regex column below tests the pattern most tutorials give, after spaces, dashes and brackets are removed:

<!-- country-data:KH:tests:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (libphonenumber-js 1.13.15, region KH); edit the script, not this table -->

| # | Case | Input (masked) | Shape regex `^(?:\+855\|00855\|0)?[1-9]\d{7,8}$` | libphonenumber (`KH`) |
|---|---|---|---|---|
| 1 | National, with trunk prefix | `091 XXX XXX` | passes | valid, `MOBILE` |
| 2 | International, with spaces | `+855 91 XXX XXX` | passes | valid, `MOBILE` |
| 3 | International dialling prefix 00 | `00855 91 XXX XXX` | passes | invalid |
| 4 | E.164 | `+85591XXXXXX` | passes | valid, `MOBILE` |
| 5 | Dashes and brackets | `(091) XXX-XXX` | passes | valid, `MOBILE` |
| 6 | One digit short | `091XXXXX` | fails | invalid |
| 7 | One digit too many | `091XXXXXXX` | passes | invalid |
| 8 | Mobile shape, unused block 020 | `020XXXXXX` | passes | invalid |
| 9 | Fixed line | `023 XXX XXXX` | passes | valid, `FIXED_LINE` |
| 10 | Toll-free range | `180X XXX XXX` | fails | valid, `TOLL_FREE` |
<!-- country-data:KH:tests:end -->

Rows 3, 7, 8 and 9 are the ones to remember. Row 3 is the `00855` trap. Row 7, one digit too many, passes the regex because some prefixes have nine digits, but `091` doesn't. Row 8, `020`, has the right shape but no service, and row 9 is a landline that looks like a mobile. Our post on [why an E.164 regex is not enough](/blog/e164-regex-is-not-enough) shows the same problem in other countries, and our [Python](/blog/phone-number-validation-python) and [JavaScript](/blog/phone-number-validation-javascript) guides cover more cases. For a whole spreadsheet, our free [phone list cleaner](/tools/phone-list-cleaner) normalises and deduplicates a column in the browser.

### Which numbers can I use in tests and examples?

Cambodia has no block reserved for films, books or examples that we could find. Use libphonenumber's example numbers in parser unit tests, mask the rest with X, and never use a real customer's number. A sandbox or test key is the safe way to test lookups.

## Is there number portability in Cambodia?

No. As of November 2026 Cambodia has no mobile number portability (MNP). EuroCham Cambodia's White Book 2027, published in May 2026, says that today a consumer who switches to a new provider is "required to give up their phone number and adopt a new one". It has asked for portability since 2019 and keeps the recommendation, because the Ministry of Post and Telecommunications (MPTC) "is working on initiatives such as mobile phone number portability" but "there is no specific plan or timeline in place" ([EuroCham White Book 2027](https://eurocham-cambodia.org/wp-content/uploads/2026/05/FOR-UPLOAD-White-Book-2027-Digital-version.pdf), recommendation 24).

Our MNP atlas has no Cambodia row:

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

Our [MNP atlas](/datasets/mnp-atlas-2026) has no verified row for Cambodia yet.
<!-- country-data:KH:mnp:end -->

What this means for you: in Cambodia the prefix is a reliable guide to the operator, which makes routing and pricing by prefix workable, as long as your prefix table follows the TRC list. It doesn't tell you whether the number is still in service. A customer who switches operator gets a new number, and the old one stops working. Since 1 January 2026, an expired SIM can be reactivated by a top-up within 180 days ([TRC news releases](https://web.archive.org/web/20260411155005/https://www.trc.gov.kh/en/media/news-releases/)), so a number that went quiet may come back. Treat a number that has been out of service for months as unknown, not as the same customer. A [live network status (HLR) check](/services/hlr-lookup) tells you whether a number is reachable now. Our [MNP atlas](/blog/mobile-number-portability-atlas) compares Cambodia with countries that have portability.

## How are SIM cards registered in Cambodia?

A SIM must be registered with an identity document, and the government has spent 2024 to 2026 tightening the rules because of phone and online scams:

- **No ID, no activation.** In May 2024 the TRC told operators and SIM sellers to stop activating SIMs without ID, to contact users with "unregistered SIMs or multiple SIMs under a single identity registration", and otherwise to "deactivate all numbers without proper ID documentation" ([Developing Telecoms, 2024](https://developingtelecoms.com/telecom-business/telecom-regulation/16689-cambodian-regulator-cracks-down-on-unregistered-sim-cards.html)).
- **The scale.** In June 2026 the telecom minister said about 8 of Cambodia's roughly 13 million mobile users had SIMs registered in their own name, and pledged to "eliminate improperly registered SIM cards by August 2026". Sellers face fines of up to USD 5,000 and operators up to USD 1 million ([Cambodianess, 2026](https://cambodianess.com/article/trc-targets-illegal-sim-registrations-after-fraud-case-exposes-security-gaps)). We found no official count of SIMs cut off since.
- **Matching with bank accounts.** The MPTC and the National Bank of Cambodia run a campaign to check SIM ownership against bank and e-wallet accounts ([AKP, 2026](https://akp.gov.kh/post/detail/373338)).
- **SIMs per person.** We found no national limit. Smart's own rule is up to five SIMs per ID ([Smart](https://www.smart.com.kh/sim-guidelines)).
- **The 2026 anti-scam law.** The Law on Combating Online Scams was promulgated on 6 April 2026. It punishes misusing identity documents to help scams with one to three years in prison ([Andersen, 2026](https://kh.andersen.com/?p=1133)).

Note that Cambodia's sub-decree on equipment identity registration (2023) is about registering phones by IMEI, not about SIM subscribers.

What this means for your data: many numbers in older Cambodian lists belonged to SIMs registered to someone else, and many of those have been or will be cut off. Expect a high share of unreachable numbers in a list collected before 2026, and re-check before you send an OTP. Our post on [number recycling and list decay](/blog/number-recycling-and-list-decay) explains how.

## What are the rules for SMS marketing and personal data?

These summarise Cambodian laws as we read them in English translations on 2026-11-07. Not legal advice; ask counsel how they apply to you.

### The Law on Electronic Commerce (2019): an easy way to refuse

The Law on Electronic Commerce was signed on 2 November 2019. Article 30, "Unsolicited communications", applies to senders inside or outside Cambodia ([E-Commerce Law](https://data.opendevelopmentcambodia.net/en/dataset/01e7c661-fba8-4bed-820b-c7d5f1bf9f12/resource/b779a5aa-9ca9-47c8-8a12-55dd408e6171/download/ecommercelawen.pdf)):

- **Who it covers.** Anyone who sends "unsolicited commercial communications to consumers" through "an electronic media or through an intermediary or a telecommunication service provider", so SMS, messaging apps and e-mail.
- **What it requires.** A "clearly specified and easily activated option to reject" the messages.
- **Penalties.** Under article 58, a written warning first; if it happens again, a licence can be suspended or revoked, or the sender's medium shut down.

The law sets no consent-first rule and no time window. The safer practice is to send marketing only to people who agreed, put a working opt-out in every message, and honour it on all channels.

### The Law on Consumer Protection (2019)

The Law on Consumer Protection, also of 2019, bans misleading claims and advertising. Joint Prakas 338 of 2021 sets the fines, for example up to KHR 50 million for misleading advertising ([DFDL](https://www.dfdl.com/insights/legal-and-tax-updates/cambodia-penalties-for-violations-of-the-law-on-consumer-protection/)). It applies to the content of an SMS as much as to a poster.

### Spam and scam SMS

We found no TRC rule that sets up a national register of SMS sender IDs or a licence for bulk SMS. Operators set their own rules for alphanumeric sender names, so ask your SMS provider what each Cambodian network needs. Scam messages are a focus of the regulator: in January 2026 the TRC signed a memorandum with Hong Kong's communications authority on "scam and spam communications (including telephone calls and Short Message Service (SMS) messages)" ([Hong Kong government, 2026](https://www.info.gov.hk/gia/general/202601/26/P2026012600435.htm)). A one-time passcode isn't marketing, but send it from a sender set up for transactional traffic and keep it free of links and offers.

SMS in Khmer script needs Unicode encoding, which fits 70 characters in one part instead of 160. Our [SMS character counter](/tools/sms-character-counter) shows how many parts a Khmer or English message takes.

### Personal data: a draft law, not yet in force

Cambodia had no general data protection law in force as of November 2026. The MPTC presented a draft Law on Personal Data Protection at a consultation workshop on 23 July 2025, aiming to finish it by early 2026 ([MPTC, 2025](https://mptc.gov.kh/en/2025/07/minister-chea-vandeth-presided-over-the-opening-ceremony-of-the-consultative-workshop-on-the-draft-law-on-personal-data-protection/)). In August 2026 it held a validation workshop on the draft "before it proceeds through the formal legislative process" ([MPTC, 2026](https://mptc.gov.kh/en/2026/08/ministry-of-post-and-telecommunications-holds-validation-workshop-on-the-draft-law-on-personal-data-protection/)). Until it is adopted, the E-Commerce Law's data security duty and sector rules apply. If you also serve customers in the EU or elsewhere, their laws may apply to the same data.

## Which messaging apps reach people in Cambodia?

Telegram has an unusual role in Cambodia. When former prime minister Hun Sen left Facebook for Telegram in June 2023, his channel had 855,000 followers ([VOA, 2023](https://www.voanews.com/a/cambodia-s-hun-sen-leaves-facebook-for-telegram-/7159115.html)). A local news site described Telegram as the country's most popular messaging app as of early 2023, without giving figures ([Kiripost via Open Development Cambodia, 2023](https://opendevelopmentcambodia.net/news/the-rise-of-messaging-app-telegram-in-cambodia/)), and the TRC's own website links to its Telegram channel. In September 2025 the TRC also warned the public about rising fraud on Telegram ([TRC news releases](https://web.archive.org/web/20260411155005/https://www.trc.gov.kh/en/media/news-releases/)). DataReportal's Digital 2027 report counts 14.2 million Facebook users in Cambodia in late 2026 but gives no Telegram or WhatsApp figure ([DataReportal, 2026](https://datareportal.com/reports/digital-2027-cambodia)), so we don't quote app shares.

For WhatsApp, Meta prices Cambodia as one of the "Rest of Asia Pacific" markets on its rate card ([Meta pricing](https://developers.facebook.com/docs/whatsapp/pricing), read on 2026-11-07); our [WhatsApp cost calculator](/tools/whatsapp-cost-calculator) shows the regional rates. The practical approach is the same as everywhere: check which apps your opted-in customers are registered on, route each person to the channel they use, and keep SMS as the fallback.

### How do I check Telegram registration for a Cambodian customer list?

Normalise every row with `normalize_kh()` first. A Telegram check tells you whether a number can be found on Telegram at the time of the check. Telegram users can stop others from finding them by number, so `false` means "not reachable through this number", not "doesn't use Telegram". Our [Telegram number check guide](/blog/telegram-number-check-guide) explains the answers.

| Answer | What it means | What to do |
|---|---|---|
| `registered: true` | The number can be found on Telegram at `checked_at` | Offer Telegram to customers who opted in to it |
| `registered: false` | Not found by number at `checked_at` | Use SMS or another channel; don't re-check repeatedly |
| `unknown` | No conclusive answer (not billed) | Keep the current channel; retry later |
| `invalid_number` | Failed format validation (not billed) | Fix the data at the source |

For lists, use a [bulk job](/docs/bulk-jobs). Upload a CSV with numbers written the Cambodian way (`012 XXX XXX`, `855…` and spaces also work) and `default_country=KH`:

```bash title="Bulk Telegram and WhatsApp check for a customer CSV"
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -F file=@customers.csv -F checks=telegram,whatsapp -F default_country=KH
```

Send the same body to `POST /v1/jobs/estimate` first: it is free, checks nothing and shows the maximum cost and the per-country minimums before anything runs. Our post on [bulk Telegram number checks in Asia](/blog/bulk-telegram-number-check-asia) covers the bulk flow in more detail.

## What changed recently?

The rows for `KH` and `+855` in our [numbering-plan changes dataset](/datasets/numbering-plan-changes-2019-2026), built from libphonenumber's release notes:

<!-- country-data:KH: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 |
|---|---:|
| Original-carrier prefix data | 3 |
| All | 3 |

No numbering-plan update for `KH` in this period.
<!-- country-data:KH:changes:end -->

libphonenumber's numbering metadata for Cambodia hasn't changed since 2019; the only updates were to carrier names. That is one reason the library still accepts blocks the TRC no longer lists. The changes have come from the regulator and the government instead:

- **2024:** the TRC ordered operators to stop activating SIMs without ID (May).
- **2025:** the draft data protection law went to consultation (July); new rules let expired numbers be reactivated within 180 days, from 1 January 2026.
- **2026:** 5G service started on Cellcard, Metfone and Smart on 1 January ([The Star, 2025](https://www.thestar.com.my/aseanplus/aseanplus-news/2025/12/31/cambodia-to-roll-out-5g-mobile-services-from-jan-1-2026)); the scam and spam memorandum with Hong Kong (January); the Law on Combating Online Scams (April); the SIM clean-up deadline (August); and the data protection draft's validation workshop (August).

## What can MobileValidate check for Cambodian numbers?

Generated from our public catalog:

<!-- country-data:KH:coverage:start -->
<!-- generated by apps/web/scripts/gen-country-guide-data.mjs (public catalog https://api.mobilevalidate.com/v1/services, fetched 2026-11-07); edit the script, not this table -->

Catalog data as of 2026-11-07.

| Check | Accepts Cambodia numbers | Notes |
|---|---|---|
| Format and country (every lookup) | Yes | Each number is parsed first; an invalid number returns `invalid_number` and is never billed. |
| Carrier lookup (beta) | Yes | Line 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) | Yes | Live reachability, porting, roaming (true or false) and current network; `unknown` is free. Real time and bulk. |
| Number portability (MNP) | Yes | Ported or not ported, and the current network code; `unknown` is free. Real time and bulk. |
| Spam reputation | Limited access | All countries except sanctioned ones; report coverage is strongest in North America and Europe. |
| Messaging apps | Yes: WhatsApp, Telegram, Viber*, Signal*, iMessage*, RCS*, LINE*, Zalo*, Botim*, Facebook Messenger* | Registered, not registered or unknown; unknown is free. |
| Social networks | Yes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat* | Not for Cambodia numbers: LinkedIn (US, IN only). |
| Online accounts (Apple, Amazon, Microsoft, Netflix) | Yes: Apple, Amazon, Microsoft, Netflix | Registered, not registered or unknown; unknown is free. |

\* bulk jobs only. The live list is at [`GET /v1/services`](https://api.mobilevalidate.com/v1/services).
<!-- country-data:KH:coverage:end -->

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

For Cambodian numbers, the useful checks are a [live network status (HLR) check](/services/hlr-lookup), which tells you whether a number is reachable now and on which network, and the [Telegram number check](/services/telegram-number-check), which runs in real time and in bulk. The [carrier lookup](/services/carrier-lookup) gives line type and network in one call, and our free [MCC-MNC lookup](/tools/mcc-mnc-lookup) decodes network codes. WhatsApp also runs in real time; the starred checks in the table run in bulk jobs only.

### How do I start for free?

- **20 free real checks.** Every live account can run 20 phone numbers and 10 e-mail addresses through the real checks for free on the dashboard's Try it page. Use them on your own number first.
- **Free tools.** The [carrier lookup](/services/carrier-lookup) page has a public form for 3 lookups a day, no sign-up needed, and our [free tools](/tools) validate, clean and format numbers in the browser.
- **A free test key.** [Get a test key](/get-test-key) for the sandbox. It gives fixed test answers so you can build every branch of your code; see [test mode](/docs/test-mode).
- **A free estimate.** `POST /v1/jobs/estimate` takes the same body as a job, checks nothing and shows the maximum cost before you start.
- **Then add credit.** [Create your account](/request-access); approval is automatic. Top-ups of larger amounts get 5% to 10% bonus credit; see [pricing](/pricing). Unknown, invalid and duplicate results are never charged.

Here is a small Telegram and WhatsApp check against the real-time endpoint, in JavaScript. It uses the public sandbox key `mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym` and our [test values](/docs/test-values). The sandbox accepts only those UK drama numbers, so the example uses them; with a live key, pass the output of `normalizeKh()`.

```js title="kh-apps.mjs"
const API = "https://api.mobilevalidate.com/v1/lookup";

/** Telegram and WhatsApp registration per E.164 number. null means we don't know. */
export async function apps(numbers) {
  const res = await fetch(API, {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.MOBILEVALIDATE_API_KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({ numbers, checks: ["telegram", "whatsapp"], wait: 5 }),
  });
  if (!res.ok) throw new Error(`lookup failed: ${res.status}`);
  const { results } = await res.json();
  const answer = (c) => (c.status === "completed" ? c.registered : null);
  return Object.fromEntries(results.map((r) => [r.e164, {
    telegram: answer(r.checks["telegram.registered"]),
    whatsapp: answer(r.checks["whatsapp.registered"]),
  }]));
}

console.log(await apps(["+447700900001", "+447700900002", "+447700900005"]));
```

We ran it against the sandbox on 2026-11-07 with Node.js 24. It printed:

```text
{
  '+447700900001': { telegram: true, whatsapp: true },
  '+447700900002': { telegram: false, whatsapp: false },
  '+447700900005': { telegram: null, whatsapp: null }
}
```

The third test value stands for an unsupported country, so both answers are `null` and nothing would be billed. Keep `null` apart from `false`: `null` means we don't know. Requests with 20 or more consecutive numbers are refused (`403 suspected_enumeration`), and our [acceptable use policy](/legal/acceptable-use) forbids finding recipients for unsolicited messages. People can object through our [opt-out form](/opt-out).

## What are the key takeaways?

- Cambodian mobiles are `+855` plus eight or nine digits, written `0XX XXX XXX` or `0XX XXX XXXX` at home. Store the E.164 form.
- Rewrite a leading `00855` to `+855` before parsing, or `008` is read as an exit code and the number becomes Brazilian.
- The TRC's list of 34 prefixes shows the operator: Cellcard, Smart, Metfone or Seatel. libphonenumber accepts some blocks the TRC doesn't list, including `013` and `038`.
- There is no number portability as of November 2026, so the prefix still means the operator, but old numbers die when people switch.
- SIMs must be registered with ID, and improperly registered SIMs are being cut off, so re-check old lists. Marketing messages must offer an easy way to refuse; a data protection law is still a draft.
- Telegram matters in Cambodia. Check 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. [News Releases (snapshot of 11 April 2026): reactivation of expired numbers within 180 days from 1 January 2026; warning on fraud on Telegram (15 September 2025)](https://web.archive.org/web/20260411155005/https://www.trc.gov.kh/en/media/news-releases/) — Telecommunication Regulator of Cambodia (TRC), via the Internet Archive, 2026
2. [Mobile Phone Prefixes (snapshot of 28 August 2026)](https://web.archive.org/web/20260828152537/https://www.trc.gov.kh/en/resources/mobile-prefixes/) — Telecommunication Regulator of Cambodia (TRC), via the Internet Archive, 2026
3. [Telecom Statistics (snapshot of 6 December 2025, data to April 2025)](https://web.archive.org/web/20251206131436/https://www.trc.gov.kh/en/resources/telecom-statistics/) — Telecommunication Regulator of Cambodia (TRC), via the Internet Archive, 2025
4. [Cambodia (country code +855): national numbering plan, communication of 8.IV.2009](https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000230001MSWE.doc) — International Telecommunication Union (ITU), communication from the Ministry of Posts and Telecommunications, 2009
5. [Announcement on standard USSD codes for all mobile networks (29 December 2021)](https://mptc.gov.kh/?p=27811) — Ministry of Post and Telecommunications (MPTC), 2021
6. [White Book 2027 (May 2026), Telecommunications recommendation 24 and chapter text on number portability](https://eurocham-cambodia.org/wp-content/uploads/2026/05/FOR-UPLOAD-White-Book-2027-Digital-version.pdf) — EuroCham Cambodia, 2026
7. [Cambodia strips CadComms of licence and spectrum (25 June 2020)](https://www.developingtelecoms.com/telecom-business/telecom-regulation/9693-cambodia-strips-cadcomms-of-licence-and-spectrum.html) — Developing Telecoms, 2020
8. [Cambodian regulator cracks down on unregistered SIM cards (13 May 2024)](https://developingtelecoms.com/telecom-business/telecom-regulation/16689-cambodian-regulator-cracks-down-on-unregistered-sim-cards.html) — Developing Telecoms, 2024
9. [TRC targets illegal SIM registrations after fraud case exposes security gaps (16 June 2026)](https://cambodianess.com/article/trc-targets-illegal-sim-registrations-after-fraud-case-exposes-security-gaps) — Cambodianess, 2026
10. [MPTC and National Bank of Cambodia SIM card verification campaign (17 June 2026)](https://akp.gov.kh/post/detail/373338) — Agence Kampuchea Presse (AKP), 2026
11. [SIM guidelines](https://www.smart.com.kh/sim-guidelines) — Smart Axiata, 2026
12. [Law on Electronic Commerce (NS/RKM/1119/017, 2 November 2019), English translation](https://data.opendevelopmentcambodia.net/en/dataset/01e7c661-fba8-4bed-820b-c7d5f1bf9f12/resource/b779a5aa-9ca9-47c8-8a12-55dd408e6171/download/ecommercelawen.pdf) — Open Development Cambodia, 2019
13. [Cambodia: penalties for violations of the Law on Consumer Protection (Joint Prakas 338 of 2021)](https://www.dfdl.com/insights/legal-and-tax-updates/cambodia-penalties-for-violations-of-the-law-on-consumer-protection/) — DFDL, 2023
14. [Minister Chea Vandeth presided over the consultative workshop on the draft Law on Personal Data Protection (23 July 2025)](https://mptc.gov.kh/en/2025/07/minister-chea-vandeth-presided-over-the-opening-ceremony-of-the-consultative-workshop-on-the-draft-law-on-personal-data-protection/) — Ministry of Post and Telecommunications (MPTC), 2025
15. [Ministry of Post and Telecommunications holds validation workshop on the draft Law on Personal Data Protection (August 2026)](https://mptc.gov.kh/en/2026/08/ministry-of-post-and-telecommunications-holds-validation-workshop-on-the-draft-law-on-personal-data-protection/) — Ministry of Post and Telecommunications (MPTC), 2026
16. [Cambodia's new Law on Combating Online Scams (23 April 2026)](https://kh.andersen.com/?p=1133) — Andersen in Cambodia, 2026
17. [Hong Kong and Cambodia regulators sign MoU on combating scam and spam communications (26 January 2026)](https://www.info.gov.hk/gia/general/202601/26/P2026012600435.htm) — Government of the Hong Kong SAR, 2026
18. [Cambodia's Hun Sen leaves Facebook for Telegram (28 June 2023)](https://www.voanews.com/a/cambodia-s-hun-sen-leaves-facebook-for-telegram-/7159115.html) — Voice of America (Associated Press), 2023
19. [The rise of messaging app Telegram in Cambodia (Kiripost, 30 June 2023)](https://opendevelopmentcambodia.net/news/the-rise-of-messaging-app-telegram-in-cambodia/) — Open Development Cambodia, 2023
20. [Digital 2027: Cambodia (5 November 2026)](https://datareportal.com/reports/digital-2027-cambodia) — DataReportal, 2026
21. [Cambodia to roll out 5G mobile services from Jan 1, 2026 (31 December 2025)](https://www.thestar.com.my/aseanplus/aseanplus-news/2025/12/31/cambodia-to-roll-out-5g-mobile-services-from-jan-1-2026) — The Star (Xinhua), 2025
22. [WhatsApp Business Platform pricing (pricing regions, read 2026-11-07)](https://developers.facebook.com/docs/whatsapp/pricing) — Meta for Developers, 2026
23. [libphonenumber PhoneNumberMetadata.xml (region KH), carrier prefix data and release notes](https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml) — libphonenumber project (Apache License 2.0), 2026

## Frequently asked questions

### How many digits is a Cambodian mobile number?

Eight or nine digits after the country code +855, so nine or ten when written at home with the leading 0. Most mobiles are 0XX XXX XXX (a three-digit prefix and six digits); the prefixes 018, 031, 071, 076, 088, 096 and 097 also carry seven-digit numbers, 0XX XXX XXXX. In E.164 that is +855 XX XXX XXX or +855 XX XXX XXXX.

### What is the Cambodia country code for WhatsApp or Telegram?

+855. Drop the leading 0 of the national number: 091 234 567 becomes +855 91 234 567, stored as +85591234567. Don't keep the 0 after 855. The same E.164 form works for Telegram, WhatsApp, SMS APIs and every other platform.

### Which operator is 012, 010, 097 or 018 in Cambodia?

In the Telecommunication Regulator of Cambodia's prefix list, 011, 012, 014, 017, 061, 076, 077, 078, 085, 089, 092, 095 and 099 are Cellcard; 010, 015, 016, 069, 070, 081, 086, 087, 093, 096 and 098 are Smart; 031, 060, 066, 067, 068, 071, 088, 090 and 097 are Metfone; and 018 is Seatel.

### Does Cambodia have mobile number portability?

No. As of November 2026 a Cambodian mobile number can't be moved to another operator: someone who switches gets a new number. EuroCham's White Book 2027 says the ministry is working on initiatives such as number portability but has no specific plan or timeline. So the prefix still shows the operator, unlike in most countries.

### Do SIM cards have to be registered in Cambodia?

Yes. A SIM must be registered with an identity document, and the regulator has told operators to stop activating SIMs without ID and to deactivate numbers without proper documents. In June 2026 the telecom minister said about 5 of 13 million users had SIMs registered in someone else's name and promised to remove improperly registered SIMs by August 2026.

### What are the rules for marketing SMS in Cambodia?

The Law on Electronic Commerce of 2019 says anyone sending unsolicited commercial messages through electronic media or a telecom provider must give the recipient a clearly specified, easily activated way to reject them. Cambodia had no data protection law in force as of November 2026; a draft was validated in August 2026. Send only to people who agreed, and honour every opt-out.

### Can I check whether Cambodian customers are on Telegram?

Yes, for numbers you hold with a lawful basis, such as your own customers. A MobileValidate Telegram check answers registered, not registered or unknown with a checked_at date, in real time or in bulk; unknown is never billed. Telegram users can hide from search by number, so a false answer doesn't prove they don't use it. No name or profile is returned.
