# Macau phone number format (+853): how to validate Macau mobile numbers

> Macau phone number format: +853 and 8 digits with no area codes, mobiles in the 62, 63, 65, 66 and 68 blocks, tested validation code and the Hong Kong overlap.

Canonical: https://mobilevalidate.com/blog/macau-phone-number-format · Last updated: 2026-10-10

![A +853 chip above eight digit boxes led by a 6, a bridge of arches over dashed water, a grid of 60 to 69 with 62, 63, 65, 66 and 68 lit, a small +853 circle mostly inside a +852 circle, and two of four towers above a registered SIM.](https://mobilevalidate.com/images/blog/macau-phone-number-format.svg)

*Macau mobiles are 8 digits starting with 6, and most are also valid Hong Kong numbers: ask for the country.*


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-10-10 · Category: Guides · Tags: Macau, Phone validation, E.164, Libphonenumber, SMS, Compliance

A Macau phone number is the country code +853 followed by eight digits, with no area code and no trunk prefix: a mobile looks like `+853 66XX XXXX` from abroad and `66XX XXXX` at home. Every mobile starts with `6`, in the `62`, `63`, `65`, `66` and `68` blocks, and landlines start with `28` or `8`. Hong Kong also uses 8-digit numbers and has mobile blocks starting with `6`, so a bare `6XXX XXXX` doesn't tell you which of the two places it belongs to.

This guide is part of our [phone numbers by country](/blog/phone-numbers-by-country) series. The tables are generated from libphonenumber's metadata and our public catalog. Example numbers are masked with X. Macau's official English name is Macao, which is how the regulator and the ITU write it; we write Macau, the other English spelling in wide use, except in names and titles. We read the allocation pages of the Macao Post and Telecommunications Bureau (CTT, Direcção dos Serviços de Correios e Telecomunicações), last updated 23 April 2026, and the other sources cited below on 2026-10-10. This is a summary, not legal advice.

## What does a Macau phone number look like?

Every ordinary Macau number has eight digits, and you dial all eight anywhere in the territory. There are no area codes and no trunk `0`, so the national number and the digits after `+853` are the same. Calls to and from Hong Kong and mainland China are international calls.

<!-- country-data:MO: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 -->

| Item | Value |
|---|---|
| Country calling code | `+853` |
| International call prefix (dialling out) | `00` |
| Trunk prefix (dialling at home) | none |
| Mobile: digits after +853 | 8 |
| Fixed line: digits after +853 | 8 |
| Toll-free: digits after +853 | 7 |
| Mobile, national format (masked) | `66XX XXXX` |
| Mobile, international (masked) | `+853 66XX XXXX` |
| Mobile, E.164 (masked) | `+85366XXXXXX` |
| Fixed line, national format (masked) | `28XX XXXX` |
| Fixed line, international (masked) | `+853 28XX XXXX` |
| Fixed line, E.164 (masked) | `+85328XXXXXX` |
<!-- country-data:MO:format:end -->

People write the same number as `66XX XXXX`, `6XXX-XXXX`, `+853 66XX XXXX`, `00853 66XX XXXX` or `853 66XX XXXX` without the plus. A numbering-plan library reads all of these if you pass the default region `MO`. Store only the E.164 result, `+85366XXXXXX`.

## Which prefixes are mobile numbers?

CTT publishes the blocks it has allocated to operators, grouped by their first two digits: `62`, `63`, `65`, `66` and `68` for mobiles, `28` for ordinary fixed lines and `8` for fixed direct-dial-in numbers ([CTT allocations](https://telecommunications.ctt.gov.mo/en/PublicInfo/AllocatedNum/66)). libphonenumber's mobile pattern for `MO` covers the same five blocks. The table counts, for each 2-digit block, how many 8-digit numbers that pattern accepts:

<!-- country-data:MO: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 prefix | International | Share of the block that is mobile (8-digit numbers) | 3-digit sub-blocks that aren't fully mobile |
|---|---|---|---|
| `62` | `+853 62` | 100% | — |
| `63` | `+853 63` | 100% | — |
| `65` | `+853 65` | 100% | — |
| `66` | `+853 66` | 96.0% | partly mobile: 660 (60.0%) |
| `68` | `+853 68` | 84.9% | partly mobile: 680 (99.0%), 682 (50.0%), 683 (50.0%), 689 (50.0%) |
<!-- country-data:MO:prefixes:end -->

The two sources agree closely. In the `68` block, libphonenumber's pattern matches CTT's list range for range, down to the `68008XXX` gap that neither accepts. In the `66` block the library is a little wider than the published list: it accepts `6690XXXX` and `6691XXXX`, for example, which CTT's page doesn't list as allocated. CTT notes that operators can also sub-allocate numbers inside their blocks, so treat the library as the shape check and a live lookup as the answer to whether a number is in use.

`60`, `61`, `64`, `67` and `69` aren't mobile blocks in Macau. A number starting with them has the right shape and fails validation, which is what row 8 in the test table below shows.

### What else is in the plan?

- **`28`:** ordinary fixed lines. CTT lists blocks from `282` to `289`, all allocated to CTM.
- **`8`:** fixed direct-dial-in (DDI) numbers, which ring straight through to an extension on a business switchboard. CTT lists blocks such as `811`, `829`, `880` and `888`, also allocated to CTM.
- **`0800`:** toll-free numbers, which have seven digits in libphonenumber's metadata.
- **`999`:** the emergency number. According to [Wikipedia](https://en.wikipedia.org/wiki/Telephone_numbers_in_Macau), `110` and `112` are redirected to the same call centre.

### How did Macau move to eight digits?

Macau moved in two phases, set out in a change to Macau's numbering plan that China's then Ministry of Information Industry notified to the ITU on 2 August 2006 ([ITU, Macao numbering plan](https://www.itu.int/dms_pub/itu-t/oth/02/02/T020200007E0002MSWE.doc)):

1. **2006 to 2007:** six-digit fixed numbers gained the prefix `28` (so `2XXXXX` became `282X XXXX`), and seven-digit mobile numbers gained a `6` (so `6XXXXXX` became `66XX XXXX`). Old and new numbers both worked from 1 October 2006, local time, until the end of February 2007.
2. **2008:** seven-digit DDI numbers gained an `8` (so `2XXXXXX` became `82XX XXXX`). Both forms worked from 1 January 2008 until the end of June 2008.

So every Macau mobile number in use before October 2006 moved into the `66` block. If an old customer record holds a seven-digit mobile starting with `6`, it predates the change. The 2006 rule was to add a `6` in front, but after twenty years the number may have changed hands, so ask the customer to confirm it rather than fixing it silently.

### Why a prefix doesn't name the operator

CTT's pages list each block's operator: Macau Telecommunications Company Limited (CTM), Hutchison Telephone (Macau) Company Limited (which trades as 3 Macau) and China Telecom (Macau) Company Limited. The market is changing faster than the blocks:

- **SmarTone left in 2024.** The government said on 21 August 2024 that SmarTone had applied to give up its 4G licence and would move its users to CTM ([Macao Government, 2024](https://www.gov.mo/en/news/339056/)). SmarTone's own [customer notice](https://www.smartone.com/mo/en/customer-services/contact-us.jsp) says its service ended at 24:00 on 11 November 2024. CTT's allocation pages updated in April 2026 list no SmarTone blocks.
- **3 Macau is leaving on 1 December 2026.** CTT said Hutchison had told it that it will surrender its 4G licence and stop all mobile services from that date. Hutchison has agreed with CTM to move customers to CTM's network, with each customer's consent, leaving CTM and China Telecom (Macau) as the only mobile operators ([Macau Business, 2026](https://macaubusiness.com/hutchisons-3-macau-to-exit-mobile-market-in-december-leaving-two-operators/)).

The reports we read don't say whether Hutchison's customers keep their numbers when they move. Either way, a block allocated to Hutchison in April 2026 tells you little about who serves the number in 2027, so we don't print a prefix-to-operator table.

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

Use a libphonenumber port with full metadata and the default region `MO`, and check the region it returns. Unlike Hong Kong, Macau has no `00` lookalike: libphonenumber's international prefix for `MO` is exactly `00`, so `00853 66XX XXXX` parses straight to `+853`.

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

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

/** "66XX XXXX", "+853 66XX XXXX", "00853 …", "853 …" → E.164 for a Macau mobile, or null. */
export function normalizeMo(raw) {
  const phone = parsePhoneNumberFromString(String(raw), "MO");
  if (!phone?.isValid() || phone.country !== "MO" || phone.getType() !== "MOBILE") return null;
  return phone.number;
}
```

We ran it on 2026-10-10 with libphonenumber-js 1.13.13 (metadata 9.0.39), and the same calls in Python with phonenumbers 9.0.41. Both returned one E.164 number for the national, `+853`, `00853`, `853` and bracketed forms, and nothing for a seven-digit number, a number in the unused `60` block, a landline, a toll-free number, a Hong Kong mobile written with `+852` or a mainland mobile written with `+86`. The shape regex column tests `^(?:\+853|00853)?6\d{7}$`, a typical "8 digits starting with 6" rule, after spaces, dashes and brackets are removed:

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

| # | Case | Input (masked) | Shape regex `^(?:\+853\|00853)?6\d{7}$` | libphonenumber (`MO`) |
|---|---|---|---|---|
| 1 | National (no trunk prefix) | `66XX XXXX` | passes | valid, `MOBILE` |
| 2 | International, with spaces | `+853 66XX XXXX` | passes | valid, `MOBILE` |
| 3 | International dialling prefix 00 | `00853 66XX XXXX` | passes | valid, `MOBILE` |
| 4 | E.164 | `+85366XXXXXX` | passes | valid, `MOBILE` |
| 5 | Dashes and brackets | `(66XX) XXXX` | passes | valid, `MOBILE` |
| 6 | One digit short | `66XXXXX` | fails | invalid |
| 7 | One digit too many | `66XXXXXXX` | fails | invalid |
| 8 | Mobile shape, unused block 60 | `60XXXXXX` | passes | invalid |
| 9 | Fixed line | `28XX XXXX` | fails | valid, `FIXED_LINE` |
<!-- country-data:MO:tests:end -->

Row 8 is why the regex isn't enough: `60` has the mobile shape but isn't a mobile block. Our [JavaScript validation guide](/blog/phone-number-validation-javascript) and [why an E.164 regex is not enough](/blog/e164-regex-is-not-enough) cover the general case.

**Watch the default region.** The `00853` form only works when the default region is `MO` (or another region whose international prefix is plain `00`, such as `CN`). If your system parses everything with `HK` as the default, for example because most of your customers are in Hong Kong, `00853 66XX XXXX` fails: libphonenumber's Hong Kong international-prefix pattern also accepts `008`, so it reads `008` followed by a different country code. Rewrite a leading `00853` to `+853` before parsing, as our [Hong Kong phone number guide](/blog/hong-kong-phone-number-format) does for `00852`. `+853` numbers parse correctly under any default region.

### Macau, Hong Kong and mainland China are separate plans

The ITU assigns three different country codes ([ITU E.164 list](https://www.itu.int/pub/T-SP-E.164D)): `+853` for Macau, `+852` for Hong Kong and `+86` for mainland China. Each has its own numbering plan and regulator, and calls between them are international.

The ambiguity is between Macau and Hong Kong. Both use 8-digit numbers without area codes, and every 2-digit block Macau uses for mobiles is also a Hong Kong mobile block. We counted over libphonenumber's metadata (9.0.39): of the 4,809,000 numbers it accepts as Macau mobiles, 4,649,000, about 97%, are also valid Hong Kong mobiles. So `66XX XXXX` passes an `MO` validator and an `HK` validator, and parsing it with the wrong default silently stores a valid number for the wrong place. Don't guess from the digits: ask for the country on forms, keep a country picker next to the number field, and store the E.164 result with its `+853` or `+852`.

Mainland numbers are easier to tell apart: a mainland mobile has 11 digits starting with `1` and doesn't validate under `MO` at all. Our [China phone number format guide](/blog/china-phone-number-format) covers `+86` in detail.

## Can Macau numbers be ported?

Not as far as we can find. On 2026-10-10 we found no CTT notice, rule or statistic describing mobile number portability in Macau, and our MNP atlas has no Macau row:

<!-- country-data:MO: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 Macau yet.
<!-- country-data:MO:mnp:end -->

Treat that as "we found none", not as proof that none exists. What has happened is that customers moved network when operators left the market: SmarTone's users went to CTM in 2024 and Hutchison's are moving to CTM in 2026, both under agreements between the operators. The announcements we read don't say whether those customers keep their numbers, which is exactly why the block an operator was allocated is a weak guide to the network serving a number today. If the network matters for routing or fraud rules, look it up per number with an [HLR lookup](/services/hlr-lookup).

## Which messaging apps and channels reach people?

SMS reaches every active mobile. We haven't found a published measurement of app use in Macau that we can verify, so we don't quote shares. Check which apps your opted-in customers are registered on, route from that, and keep SMS as the fallback. The flow in the last section returns WhatsApp and Telegram registration in the same call as the line type, and our [channel-by-country guide](/blog/choosing-a-messaging-channel-by-country) covers the method.

## What are the rules for SIM registration and SMS?

Summaries of the primary texts, checked on 2026-10-10. Not legal advice; ask counsel how they apply to you.

### Real-name prepaid cards (Law 13/2019)

Macau's Cybersecurity Law, Law 13/2019, has been in force since 22 December 2019. CTT announced that users of prepaid cards activated before that date had to register them under their real names within a 120-day transitional period, after which unregistered cards could be suspended ([CTT via the Macao Government, April 2020](https://www.gov.mo/en/news/124660/)). A suspended card could be restored by registering on or before 16 October 2020; after that date, unregistered cards were terminated and could not be resumed ([CTT via the Government Information Bureau, October 2020](https://www.gcs.gov.mo/news/detail/en/N20JF1q6kb)).

For a sender, that means a working Macau prepaid number belongs to a registered card. It doesn't mean you can see who registered it: the operators hold those records.

### SMS and OTP

Scam texts are a live problem: in July 2022 CTT warned about messages sent in its name that asked recipients to pay a parcel fee through a link ([CTT via the Government Information Bureau, 2022](https://www.gcs.gov.mo/detail/en/N22GejagDf)). If you send one-time passcodes to Macau, keep them short, free of links and offers, and sent only to numbers whose owners asked for them. Don't reuse numbers collected for verification for marketing without consent, and ask your SMS provider which sender-ID formats Macau's networks currently accept.

## What changed recently?

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

<!-- country-data:MO: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 | 5 |
| Numbering-plan metadata (validation, lengths, types) | 5 |
| All | 10 |

Latest numbering-plan updates for `MO`: 2021-08-06 (v8.12.29), 2021-07-20 (v8.12.28), 2021-01-27 (v8.12.17), 2021-01-12 (v8.12.16), 2020-03-02 (v8.11.5).
<!-- country-data:MO:changes:end -->

Unlike Hong Kong, whose metadata changes several times a year, Macau's numbering-plan metadata last changed in August 2021, according to the release notes up to September 2026. The bigger change is in the market: by December 2026 Macau will have two mobile operators instead of the four it had until 2024. Keep your validation library up to date anyway: a new block CTT allocates will need a metadata update before libraries accept it.

## What can MobileValidate check for Macau numbers?

Generated from our public catalog:

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

| Check | Accepts Macau 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 Macau 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. Catalog as fetched on 2026-10-10; the live list is at [`GET /v1/services`](https://api.mobilevalidate.com/v1/services).
<!-- country-data:MO:coverage:end -->

Here is a practical flow: normalise with `normalizeMo()` from above, then one lookup returns the line type, the current network and WhatsApp and Telegram registration for a batch of numbers. It uses the public sandbox key `mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym` and our [test values](/docs/test-values), which are UK drama numbers. The sandbox accepts only those, so the run below uses them; with a live key, pass the output of `normalizeMo()`. We ran it on 2026-10-10 with Node.js 24.

```js title="mo-profile.mjs"
const API = "https://api.mobilevalidate.com/v1/lookup";
const KEY = process.env.MOBILEVALIDATE_API_KEY;

/** One lookup for a batch of E.164 numbers: line type, current network and two messaging-app checks. */
export async function profile(numbers) {
  const res = await fetch(API, {
    method: "POST",
    headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({ numbers, checks: ["carrier", "whatsapp", "telegram"], wait: 5 }),
  });
  if (!res.ok) throw new Error(`lookup failed: ${res.status}`);
  const { results } = await res.json();
  return results.map((r) => {
    const c = r.checks;
    const carrier = c["network.carrier"].status === "completed" ? c["network.carrier"].attributes : null;
    const app = (code) => (c[code].status === "completed" ? c[code].registered : null); // null = unknown, never false
    return {
      number: r.e164,
      lineType: carrier?.line_type ?? null,
      network: carrier?.carrier ?? null,
      whatsapp: app("whatsapp.registered"),
      telegram: app("telegram.registered"),
    };
  });
}

console.table(await profile(["+447700900001", "+447700900002", "+447700900003", "+447700900005"]));
```

| Test value | `lineType` | `network` | `whatsapp` | `telegram` | Why |
|---|---|---|---|---|---|
| `+447700900001` | `mobile` | `Test Carrier` | `true` | `true` | Registered on both |
| `+447700900002` | `null` | `null` | `false` | `false` | Carrier has no data (`NO_DATA`); not registered on either app |
| `+447700900003` | `null` | `null` | `null` | `null` | Every check timed out (`UPSTREAM_TIMEOUT`) |
| `+447700900005` | `null` | `null` | `null` | `null` | `unsupported_country` |

Keep `null` apart from `false`: `null` means we don't know, and it's never billed. With Hutchison's customers moving networks in late 2026, add the [HLR](/services/hlr-lookup) check if you need the network serving a number today. See [carrier lookup](/services/carrier-lookup) and [WhatsApp number check](/services/whatsapp-number-check) for the fields, and [pricing](/pricing) for prices.

## What are the key takeaways?

- Macau numbers are `+853` plus 8 digits, with no area code and no trunk `0`; store them as `+853XXXXXXXX`.
- Mobiles are in the `62`, `63`, `65`, `66` and `68` blocks; `28` and `8` are fixed lines and `0800` is toll-free. Validate with a maintained library and the region `MO`.
- With `MO` as the default region, `00853` parses correctly; with `HK` as the default it doesn't, so rewrite it to `+853` first.
- About 97% of valid Macau mobile numbers are also valid Hong Kong mobiles: ask for the country, don't guess.
- Mobiles moved to eight digits in 2006–2007 by adding a `6`, and DDI numbers followed in 2008.
- We found no mobile number portability in Macau, but customers of departing operators have moved networks, so look up the current network.
- Prepaid cards must be registered under the user's real name (Law 13/2019, in force since 22 December 2019); unregistered older cards were terminated after 16 October 2020.

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

## Sources

1. [Telephone numbers allocated to operators: mobile blocks 62, 63, 65, 66 and 68, fixed blocks 28 and 8 (last updated 23 April 2026)](https://telecommunications.ctt.gov.mo/en/PublicInfo/AllocatedNum/66) — Macao Post and Telecommunications Bureau (CTT), 2026
2. [National Numbering Plan: Macao, China (country code +853), communication of 2 August 2006](https://www.itu.int/dms_pub/itu-t/oth/02/02/T020200007E0002MSWE.doc) — ITU, 2007
3. [List of ITU-T Recommendation E.164 assigned country codes](https://www.itu.int/pub/T-SP-E.164D) — ITU, 2026
4. [libphonenumber PhoneNumberMetadata.xml (region MO) and release notes](https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml) — libphonenumber project (Apache License 2.0), 2026
5. [Telephone numbers in Macau](https://en.wikipedia.org/wiki/Telephone_numbers_in_Macau) — Wikipedia, 2026
6. [Prepaid card without real name registration will be terminated after 16 October 2020 (9 October 2020)](https://www.gcs.gov.mo/news/detail/en/N20JF1q6kb) — Macao SAR Government Information Bureau (from CTT), 2020
7. [The transitional period for real-name registration of prepaid cards will end on this Sunday (14 April 2020)](https://www.gov.mo/en/news/124660/) — Macao SAR Government Portal (from CTT), 2020
8. [New operating arrangement of Smartone – Mobile Communications (Macau), Limited (21 August 2024)](https://www.gov.mo/en/news/339056/) — Macao SAR Government Portal, 2024
9. [Hutchison's 3 Macau to exit mobile market in December, leaving two operators (15 September 2026)](https://macaubusiness.com/hutchisons-3-macau-to-exit-mobile-market-in-december-leaving-two-operators/) — Macau Business, 2026

## Frequently asked questions

### How many digits is a Macau phone number?

Eight, for mobiles and landlines alike, with no area code and no trunk prefix. A mobile is written 66XX XXXX at home and +853 66XX XXXX from abroad. The exception in libphonenumber's metadata is the seven-digit 0800 toll-free range.

### Do Macau mobile numbers start with 6?

Yes. Every Macau mobile number starts with 6, in the 62, 63, 65, 66 and 68 blocks that the regulator lists. Not every number starting with 6 is valid, though: 60, 61, 64, 67 and 69 aren't mobile blocks, so validate with a maintained library.

### How do I tell a Macau number from a Hong Kong number?

You can't from the eight digits alone. Both places use 8-digit numbers, and Hong Kong also has mobile blocks starting with 6. By our count, about 97% of the numbers libphonenumber accepts as Macau mobiles are also valid Hong Kong mobiles. Ask for the country code.

### Can you keep your number when changing operator in Macau?

We found no regulator source describing mobile number portability in Macau. SmarTone's customers moved to CTM when it left in 2024, and Hutchison's are moving to CTM before its exit on 1 December 2026. Look up the serving network instead of trusting the prefix.

### Do prepaid SIM cards in Macau have to be registered?

Yes. Under Macau's Cybersecurity Law (Law 13/2019), in force since 22 December 2019, prepaid cards are registered under the user's real name. Unregistered older cards were terminated after 16 October 2020. No lookup, ours included, returns the registered name.
