phone number standards
phone number standards
Mozambique Phone Numbers: Complete Format, Validation & Area Code Guide
Comprehensive guide to Mozambique phone number formats, validation, and area codes. Learn E.164 formatting, operator prefixes, biometric SIM registration rules, and implementation best practices.
Mozambique Phone Numbers: Format, Area Code & Validation Guide
This comprehensive guide covers Mozambique phone number formats, validation patterns, and regulatory compliance for the country code +258. You'll learn how to handle operator-specific prefixes (Vodacom, Tmcel, Movitel) and comply with biometric SIM registration requirements.
Whether you're building SMS services, user authentication, or contact management systems, understanding Mozambique's telephone numbering plan is essential for accurate phone number handling and validation.
Recent Regulatory Changes (2023–2025)
The Instituto Nacional das Comunicações de Moçambique (INCM) has implemented key changes that impact developers:
Mandatory Biometric SIM Registration (Decree 13/2023):
- Effective January 2024, all SIM cards must be registered with biometric data (fingerprints and facial recognition)
- Timeline: Pilot phase (January 17 – June 16, 2024), mandatory registration (June 17, 2024), enforcement with disconnection (2025 onward)
- Each SIM card must be registered in person – third-party registration is not permitted
- Subscribers receive a Unique Telecommunications Number (NUTEL) for identification across all operators
- INCM reports average 5,000 fraud cases monthly via telecommunications networks
Penalties for Non-Compliance:
- Data protection violations: Fines between 30 to 90 minimum wage salaries (Electronic Transactions Act, Law no. 3/2017)
- Cybercrimes including fraud: 1 to 5 years imprisonment plus fines (Penal Code, Law no. 24/2019)
- Unregistered SIM cards face disconnection without warning
Enhanced Security Measures:
The biometric system enables identification of telecommunications fraud perpetrators, requiring stricter validation for number activation.
Rural Connectivity Initiative:
Optimize your applications for varying network conditions and connectivity challenges in rural areas.
Compliance Requirements:
If you're integrating with Mozambican telecommunications services:
- Support NUTEL verification in registration flows
- Maintain audit logs of registration attempts
- Implement data protection controls per Electronic Transactions Law
Sources: Decree 13/2023 of April 11, 2023; AIM News January 2024; INCM announcements; Electronic Transactions Law; Penal Code Law no. 24/2019; INCM Data Scientist Reinaldo Zezela, January 2024.
Mozambique Phone Number Format and Structure
Mozambican phone numbers adhere to the international E.164 standard structure with country code +258:
+258 XX XXXXXXX
↓ └────┬──── Subscriber Number (7 digits)
└───────┴──── Area/Operator Code (2 digits)The National Significant Number (NSN) length is 9 digits (8 or 9 digits in legacy systems).
Source: ITU-T Recommendation E.164; ITU Communication T02020000910003 (January 2017).
Mozambique Landline Numbers and Area Codes
Landlines use a 9-digit format with a 2-digit geographic identifier. As of 2024, Mozambique has approximately 30,000 fixed-line subscriptions (less than 0.1% penetration) compared to 15 million mobile connections. Landlines are primarily concentrated in urban areas and business centers.
Source: ITU DataHub 2024; Worlddata.info.
+258 2X XXXXXXX
↓
└─── Geographic Identifier (21 for Maputo, 23 for Beira, etc.)Common Mozambique area codes by region:
| Region | Area Code | Coverage Area | Example Number |
|---|---|---|---|
| Maputo | 21 | Capital and Province | +258 21 123 4567 |
| Beira | 23 | Sofala Region | +258 23 234 5678 |
| Quelimane | 24 | Zambezia Region | +258 24 345 6789 |
| Nampula | 26 | Northern Region | +258 26 456 7890 |
| Inhambane | 27 | Southern Coast | +258 27 567 8901 |
| Xai-Xai | 29 | Gaza Province | +258 29 678 9012 |
| Manica | 251 | Manica Province | +258 251 789 012 |
| Tete | 252 | Western Region | +258 252 890 123 |
| Vilanculos | 258 | Inhambane Province | +258 258 901 234 |
Source: ITU Mozambique Numbering Plan; Wikipedia Telephone Numbers in Mozambique.
Mozambique Mobile Numbers and Operator Prefixes
Mobile numbers use operator-specific prefixes:
+258 8X XXXXXXX
↓
└─── Operator Identifier (82/83 for Mcel/Tmcel, 84/85 for Vodacom, 86/87 for Movitel)Prefixes 81 and 89 are reserved for future allocation. No official announcements have been made regarding specific services or operators for these prefixes. Monitor INCM communications for allocation updates.
Source: ITU Mozambique Numbering Plan.
| Mobile Operator | Number Prefixes | Market Share (2024) | Subscribers (mid-2024) | Network Type |
|---|---|---|---|---|
| Vodacom | 84, 85 | ~50% | 11.6 million | 4G/5G |
| Tmcel* | 82, 83 | ~18% | 3.4 million | 4G |
| Movitel | 86, 87 | ~21% | 4 million | 4G |
Tmcel is the state-owned operator formed from the 2019 merger of TdM and Mcel (which previously used 82–83 prefixes). Market share figures reflect mid-2024 data.
Original Wikipedia sources list 82–83 as Mcel prefixes; these now belong to Tmcel post-merger. Vodacom uses 84–85, not 82–83 as in some unofficial sources.
Sources: BuddeComm Mozambique Telecoms Report 2024; Connecting Africa; Developing Telecoms 2024.
How to Validate Mozambique Phone Numbers (Step-by-Step)
Regex Pattern for Mozambique Phone Validation
Use this regex to validate international, national, and local formats:
const mozNumberRegex = /^(?:(?:\+|00)258|0)?(?:2[1-9]|8[2-7])\d{7}$/;
function isValidMozNumber(phoneNumber) {
return mozNumberRegex.test(phoneNumber);
}Regex Explanation:
(?:(?:\+|00)258|0)?– Optional international prefix (+258 or 00258) or national prefix (0)(?:2[1-9]|8[2-7])– Area code: 2X (landline, X=1–9) or 8X (mobile, X=2–7, excluding reserved 81/89)\d{7}– Seven-digit subscriber number
Use operator-specific validation when:
- Implementing operator-specific routing – Direct messages to appropriate carrier APIs based on prefix (reduces latency and costs)
- Enforcing business rules – Restrict service access to specific operators (e.g., corporate plans limited to Vodacom)
- Fraud detection – Flag suspicious patterns like rapid operator switching or bulk registrations from single operators
- Analytics and reporting – Track campaign performance segmented by mobile operator
- Cost optimization – Apply different pricing tiers based on termination costs per operator
function getOperator(phoneNumber) {
const cleaned = phoneNumber.replace(/\D/g, '').slice(-9);
const prefix = cleaned.substring(0, 2);
if (['84', '85'].includes(prefix)) return 'Vodacom';
if (['82', '83'].includes(prefix)) return 'Tmcel';
if (['86', '87'].includes(prefix)) return 'Movitel';
return null; // Invalid or landline
}How to Format Mozambique Phone Numbers Correctly
Consistent formatting improves user experience.
function formatMozNumber(phoneNumber) {
const cleaned = phoneNumber.replace(/\D/g, ''); // Remove non-digits
// Handle different input lengths
let nsn = cleaned;
if (cleaned.startsWith('258')) {
nsn = cleaned.slice(3); // Remove country code
} else if (cleaned.startsWith('00258')) {
nsn = cleaned.slice(5);
} else if (cleaned.startsWith('0')) {
nsn = cleaned.slice(1); // Remove national prefix
}
// Validate NSN length (must be 9 digits)
if (nsn.length !== 9) return null;
// Validate area/operator code
const areaCode = nsn.substring(0, 2);
if (!/^(2[1-9]|8[2-7])$/.test(areaCode)) return null;
return `+258 ${nsn.slice(0, 2)} ${nsn.slice(2)}`; // E.164 format
}Choose Your Display Format:
- International: +258 XX XXXXXXX (Recommended for storage and international use)
- National: 0XX XXXXXXX (Common for domestic display)
- Local: XX XXXXXXX (Used within same area code, rare for mobile)
Handle Validation Errors
Provide distinct error codes for invalid format, missing country code, incorrect operator prefix, or invalid length. Automatically prepend the country code (+258) if it's missing and the number starts with a valid operator/area code. Give users clear and immediate feedback about validation errors.
User-Facing Error Messages:
const ERROR_MESSAGES = {
en: {
TOO_SHORT: 'Phone number is too short. Enter 9 digits.',
TOO_LONG: 'Phone number is too long. Enter 9 digits.',
INVALID_FORMAT: 'Invalid phone number. Use format: 8X XXX XXXX or 2X XXX XXXX',
INVALID_OPERATOR: 'Invalid operator prefix. Valid prefixes: 82, 83, 84, 85, 86, 87',
INVALID_AREA_CODE: 'Invalid area code. Check your regional code.'
},
pt: { // Portuguese localization for Mozambique
TOO_SHORT: 'Número de telefone muito curto. Digite 9 dígitos.',
TOO_LONG: 'Número de telefone muito longo. Digite 9 dígitos.',
INVALID_FORMAT: 'Número de telefone inválido. Use formato: 8X XXX XXXX ou 2X XXX XXXX',
INVALID_OPERATOR: 'Prefixo de operadora inválido. Prefixos válidos: 82, 83, 84, 85, 86, 87',
INVALID_AREA_CODE: 'Código de área inválido. Verifique o código regional.'
}
};
function validateWithFeedback(phoneNumber, locale = 'en') {
const cleaned = phoneNumber.replace(/\D/g, '');
const messages = ERROR_MESSAGES[locale] || ERROR_MESSAGES.en;
if (cleaned.length < 9) return { valid: false, error: 'TOO_SHORT', message: messages.TOO_SHORT };
if (cleaned.length > 13) return { valid: false, error: 'TOO_LONG', message: messages.TOO_LONG };
const formatted = formatMozNumber(phoneNumber);
if (!formatted) return { valid: false, error: 'INVALID_FORMAT', message: messages.INVALID_FORMAT };
return { valid: true, formatted };
}Portuguese is the official language of Mozambique; providing pt localization improves user experience.
Technical Implementation Considerations
Mobile Number Portability in Mozambique
Mozambique does not currently support Mobile Number Portability (MNP). This simplifies operator identification based on prefixes. When MNP is implemented, you'll need to use HLR (Home Location Register) lookups or MNP databases to identify the current serving operator, as prefixes will no longer reliably indicate the operator.
Source: ITU MNP Database; Multiple industry reports 2024.
Best Practices: How to Store Mozambique Phone Numbers in Databases
Always store phone numbers in the international E.164 format (+258XXXXXXXXX) for consistency and interoperability. The E.164 standard ensures global compatibility across SMS platforms, phone lookup services, and international telecommunications systems.
Database Schema Examples:
-- Option 1: Single column approach (recommended for simplicity)
CREATE TABLE users (
id SERIAL PRIMARY KEY,
phone_number VARCHAR(15) NOT NULL, -- E.164 format: +258XXXXXXXXX
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT unique_phone UNIQUE (phone_number)
);
-- Create index for fast lookups
CREATE INDEX idx_users_phone ON users(phone_number);
-- Option 2: Normalized approach (better for analytics and querying by operator)
CREATE TABLE users_normalized (
id SERIAL PRIMARY KEY,
country_code VARCHAR(4) DEFAULT '+258',
operator_code VARCHAR(2), -- 82, 83, 84, 85, 86, 87, or 2X for landline
subscriber_number VARCHAR(7) NOT NULL,
full_number VARCHAR(15) GENERATED ALWAYS AS (country_code || operator_code || subscriber_number) STORED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT unique_full_number UNIQUE (full_number)
);
-- Indexes for query optimization
CREATE INDEX idx_users_normalized_full ON users_normalized(full_number);
CREATE INDEX idx_users_normalized_operator ON users_normalized(operator_code); -- For operator analyticsIndexing Strategy:
- B-tree index on full phone number for exact match lookups (default)
- Consider partial indexes for active/verified users only:
CREATE INDEX idx_active_phones ON users(phone_number) WHERE status = 'active'; - For large datasets (>1M records), monitor index size and query performance; consider partitioning by operator_code
Data Privacy Considerations:
Mozambique does not yet have comprehensive data protection legislation, but several laws impose privacy obligations:
- Constitution of the Republic (2004): Protects citizens' right to privacy, honour, and good name. Prohibits databases from recording individually identifiable information concerning political, philosophical, religious beliefs, or trade union membership.
- Electronic Transactions Law (Law 3/2017): Requires data controllers to protect personal data against unauthorized access, use, or disclosure. Prior notification to INTIC required for processing personal information. Data processors must appoint a compliance officer.
- AU Convention on Cybersecurity (ratified 2019): Requires consent from data subjects before transferring data to third countries; transfers must ensure adequate protection levels.
- Draft Personal Data Protection Law (2025): Currently in public consultation, this proposed law will establish GDPR-like principles including consent, transparency, purpose limitation, and data subject rights.
Implementation Requirements:
- Obtain explicit consent before collecting phone numbers
- Implement encryption at rest (AES-256) and in transit (TLS 1.3+)
- Provide users ability to access, correct, and delete their phone number data
- Maintain audit logs of phone number access and modifications
- Restrict cross-border data transfers to jurisdictions with adequate protection
- Appoint data protection compliance officer per Electronic Transactions Law
Sources: DLA Piper Data Protection Laws; Draft Personal Data Protection Law 2025; Electronic Transactions Law 3/2017.
International Dialing from Mozambique
To dial internationally from Mozambique, use 00 followed by the country code. Example: 00 1 415 555 0123 for a US number.
Source: ITU-T Recommendation E.164.
Common Challenges and Solutions
Legacy System Integration:
If you're dealing with older 8-digit numbers, implement conversion utilities to update them to the 9-digit format:
function migrateLegacyNumber(oldNumber) {
const cleaned = oldNumber.replace(/\D/g, '');
// Check if it's an 8-digit legacy number
if (cleaned.length === 8) {
// Most 8-digit numbers became 9-digit by adding leading digit
// Consult INCM for specific migration rules for your dataset
console.warn('8-digit legacy number detected. Manual verification required.');
return null;
}
return formatMozNumber(oldNumber);
}Contact INCM at lrego@incm.gov.mz for official migration guidelines if you're handling historical data.
International Dialing Variations:
Handle both + and 00 international prefixes:
function normalizeInternationalPrefix(phoneNumber) {
// Replace 00258 with +258
return phoneNumber.replace(/^00(\d+)/, '+$1');
}Accept both formats in input validation.
User Interface Smart Formatting:
Implement real-time formatting as users type:
function formatAsUserTypes(input) {
const cleaned = input.replace(/\D/g, '');
if (cleaned.length === 0) return '';
if (cleaned.length <= 2) return cleaned;
if (cleaned.length <= 9) return `${cleaned.slice(0, 2)} ${cleaned.slice(2)}`;
if (cleaned.startsWith('258') && cleaned.length <= 12) {
return `+258 ${cleaned.slice(3, 5)} ${cleaned.slice(5)}`;
}
return input; // Return as-is if format unclear
}Use libraries like libphonenumber (Google) or react-phone-number-input for robust international number handling with built-in formatting. For SMS implementation examples, see our guides on Twilio Node.js integration and MessageBird SMS APIs.
Monitor INCM announcements at https://www.incm.gov.mz for:
- Reallocation of reserved prefixes (81, 89)
- New operator market entries
- Prefix reassignments due to mergers/acquisitions
- Implementation of Mobile Number Portability (MNP)
Mozambique Phone Number Validation Best Practices
- Validate on the server side – Always validate on the server side to prevent malicious input and ensure data integrity. Never rely solely on client-side validation.
- Use comprehensive regex – Use robust regex patterns that account for all valid formats, including international prefixes (+, 00), national prefix (0), and various spacing/separator styles.
- Write clear error messages – Provide user-friendly, actionable error messages that guide users to correct format. Bad: "Invalid input." Good: "Phone number must be 9 digits starting with 2 or 8."
- Log validation failures – Log validation failures for debugging and monitoring. Track patterns of invalid inputs to improve validation rules and identify potential fraud attempts.
- Maintain documentation – Keep documentation on number formats and validation rules up to date, referencing INCM official sources. Document any custom business rules or operator restrictions.
- Use established libraries – Use
libphonenumber(Google) or similar libraries that maintain updated validation rules for international numbers. Reduces maintenance burden and improves accuracy.
Testing Strategy:
// Sample test cases for Mozambique phone number validation
const TEST_CASES = {
valid: [
'+258 84 123 4567', // Vodacom international
'+258841234567', // Vodacom international no spaces
'00258 84 123 4567', // Vodacom with 00 prefix
'084 123 4567', // Vodacom national
'0841234567', // Vodacom national no spaces
'84 123 4567', // Vodacom local
'+258 82 234 5678', // Tmcel
'+258 86 345 6789', // Movitel
'+258 21 456 7890', // Maputo landline
'+258 23 567 8901' // Beira landline
],
invalid: [
'+258 81 123 4567', // Reserved prefix 81
'+258 89 123 4567', // Reserved prefix 89
'+258 88 123 4567', // Invalid mobile prefix
'+258 80 123 4567', // Invalid mobile prefix
'+258 20 123 4567', // Invalid landline prefix
'84 123 456', // Too short
'84 123 45678', // Too long
'+257 84 123 4567', // Wrong country code
'1234567890', // Generic invalid
'' // Empty string
]
};
// Automated test suite
function runValidationTests() {
console.log('Testing valid numbers...');
TEST_CASES.valid.forEach(num => {
const result = validateWithFeedback(num);
console.assert(result.valid === true, `Failed: ${num}`);
});
console.log('Testing invalid numbers...');
TEST_CASES.invalid.forEach(num => {
const result = validateWithFeedback(num);
console.assert(result.valid === false, `Failed: ${num} should be invalid`);
});
console.log('All tests completed.');
}Anti-Patterns to Avoid:
- ❌ Accepting any 9-digit number without prefix validation
- ❌ Storing phone numbers with inconsistent formatting
- ❌ Failing to handle international prefix variations (+, 00)
- ❌ Blocking legitimate numbers due to overly strict validation
- ❌ Displaying technical error codes to end users
- ❌ Assuming all 8X prefixes are valid (81 and 89 are reserved)
Mozambique Emergency Telephone Numbers
Emergency numbers in Mozambique vary by source and may reflect regional differences. Always test emergency routing in your target deployment area.
| Service | Number | Alternative | Availability | Source |
|---|---|---|---|---|
| Police | 119 | 112 | 24/7 | Multiple sources |
| Fire Brigade | 198 | — | 24/7 | Gov sources |
| Ambulance | 117 | 213 22 222 | 24/7 | US State Dept / Local |
| General Emergency | 112 | — | 24/7 | UK Gov / EU standard |
Sources: US State Department Emergency Numbers Reference; UK Foreign Travel Advice; EasyExpat Mozambique; Multiple travel advisory sources.
Emergency numbers may be short codes (3 digits) that bypass normal validation. Ensure your validation logic doesn't block emergency numbers.
Make sure your application correctly handles emergency numbers and doesn't interfere with emergency call routing. Test that your number validation allows emergency numbers through without requiring country codes.
function isEmergencyNumber(phoneNumber) {
const cleaned = phoneNumber.replace(/\D/g, '');
const emergencyNumbers = ['119', '112', '117', '198'];
return emergencyNumbers.includes(cleaned);
}
function validatePhoneOrEmergency(phoneNumber) {
if (isEmergencyNumber(phoneNumber)) {
return { valid: true, type: 'emergency', formatted: phoneNumber };
}
return validateWithFeedback(phoneNumber);
}VoIP Emergency Services Requirements:
INCM mandates that telecommunications operators must be equipped with emergency communications systems ensuring minimum services during emergencies. Specific requirements include:
- Emergency Communications Systems: VoIP operators must maintain alternative power supplies, transmission systems, and mobile radio base stations to ensure network availability during emergencies.
- Privileged Network Access: Operators must provide prioritized network access to government-designated users during emergencies.
- Implementation Timeline: Telecom operators have 180 days from regulatory notification to establish compliant emergency communications systems.
- ITU Standards: According to ITU DataHub 2021 data, VoIP providers in Mozambique are subject to universal service/access contributions but specific emergency access requirements for VoIP services are still evolving.
Sources: INCM Resolution October 23, 2023; 360 Mozambique November 2023; ITU DataHub 2021; Club of Mozambique.
VoIP Compliance Checklist:
- Verify E911/emergency call routing capabilities
- Implement automatic location identification (ALI) for emergency calls
- Ensure alternative power sources for emergency communications
- Register privileged access list with INCM
- Test emergency call completion rates quarterly
- Maintain 180-day compliance timeline for system deployment
Future Developments in Mozambique Telecommunications
INCM is focused on:
- Infrastructure Enhancement: Network expansion and 5G readiness. Vodacom has begun 5G deployment in major urban centers.
- Security Framework: Improved fraud detection and threat monitoring through the biometric registration system (NUTEL).
- Service Quality: Enhanced network performance standards and customer experience improvements. INCM has published quality of service reports identifying operator performance gaps.
- Number Portability: While not officially announced, MNP implementation may be considered as the market matures.
Source: Developing Telecoms September 2024.
Stay updated with INCM announcements for changes that may impact your implementations.
Developer Implementation Checklist
- Implement E.164 format validation with NSN length check (9 digits) and operator prefix validation (82-87, excluding 81/89)
- Configure emergency number handling (119, 117, 198, 112) without blocking, bypassing standard validation
- Design database schema with appropriate indexing strategy (B-tree on full number, consider partial indexes for active users)
- Implement data protection controls per Electronic Transactions Law: encryption at rest/transit, consent collection, audit logging
- Plan for future number portability implementation (HLR lookup capability, operator identification abstraction layer)
- Implement NUTEL verification integration (when applicable for user registration and compliance with Decree 13/2023)
- Establish compliance monitoring and reporting aligned with Decree 13/2023 and INCM regulations
- Handle reserved prefixes (81, 89) appropriately in validation logic, rejecting as invalid until officially allocated
- Test number formatting for international (+258), national (0XX), and local (XX) display formats
- Implement operator identification logic based on current prefix allocation with fallback for future changes
- Create comprehensive test suite covering valid/invalid cases, edge cases, and emergency numbers
- Implement Portuguese (pt) localization for error messages and user-facing content
- For VoIP services: verify emergency communications system compliance, alternative power, and 180-day deployment timeline
Acceptance Criteria:
- ✓ Validation accepts all valid operator prefixes (82, 83, 84, 85, 86, 87) and landline area codes (21-29, 251-252, 258)
- ✓ Validation rejects reserved prefixes (81, 89) until officially allocated
- ✓ Emergency numbers bypass validation and route correctly
- ✓ E.164 format storage implemented with appropriate indexing
- ✓ Data encryption and consent mechanisms active
- ✓ Test coverage >90% with automated test suite
- ✓ Portuguese error messages implemented
- ✓ INCM monitoring process established with quarterly review schedule
Always refer to the official INCM documentation at https://www.incm.gov.mz for the most current regulations and technical specifications. Contact lrego@incm.gov.mz for technical inquiries regarding the national numbering plan.
Additional Resources
- ITU-T Recommendation E.164: International public telecommunication numbering plan
- INCM Official Portal: https://www.incm.gov.mz (Portuguese language)
- Decree 13/2023: SIM registration regulation (available through INCM)
- libphonenumber: Google's open-source library for phone number handling and validation (https://github.com/google/libphonenumber)
- libphonenumber-js: JavaScript port of libphonenumber (https://www.npmjs.com/package/libphonenumber-js)
- react-phone-number-input: React component with international phone input (https://www.npmjs.com/package/react-phone-number-input)
- INCM Technical Contact: lrego@incm.gov.mz for numbering plan inquiries
- ITU Mozambique Country Data: https://www.itu.int/en/ITU-D/Statistics/Pages/stat/default.aspx?code=mz
Community & Developer Resources:
- INTIC (National Institute of Technologies and Communication): https://intic.gov.mz – Central authority for ICT policy, cybersecurity, and data governance
- BuddeComm Mozambique Telecoms Market Report: Comprehensive market analysis updated regularly (subscription required)
- Developing Telecoms: Industry news source covering Mozambique telecommunications developments
- African Telecommunications Union (ATU): Regional standards and best practices
Code Examples & Implementations:
- Search GitHub for "mozambique phone validation" for community implementations
- Refer to libphonenumber metadata for official Mozambique rules: https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml (search for country code 258)
Last Updated: January 2025. Regulatory landscape subject to change. Verify current requirements with INCM.