phone number standards
phone number standards
Peru Phone Numbers: +51 Country Code, Format & Validation Guide
Master Peru phone number formats with +51 country code. Complete guide to landline/mobile validation, area codes, E.164 format, OSIPTEL regulations, and implementation code for developers.
Peru Phone Numbers: Format, Area Code & Validation Guide
Learn Peru phone number formats, validation rules, and implementation best practices—from understanding Peru's +51 country code to mastering OSIPTEL regulations and E.164 standards.
Understanding Peru's Telecommunications System: Key Background
Peru's telecommunications sector transformed from a state-owned monopoly to a competitive market since the 1990s. OSIPTEL (Organismo Supervisor de Inversión Privada en Telecomunicaciones) now regulates the system. Key milestones:
- 1994: Privatization begins. The government auctions state-owned companies Compañía Peruana de Teléfonos S.A. (CPT) and Entel Perú to Telefónica de España. Entel Perú merges into CPT, becoming Telefónica del Perú S.A. (TdP).
- 2010: Mobile number portability (MNP) launches January 1, 2010, allowing consumers to switch carriers while retaining their numbers. The initial process takes seven business days with no fees.
- 2014: OSIPTEL relaunches mobile number portability July 16, 2014, reducing porting time from seven business days to 24 hours. Fixed number portability (FNP) launches July 26, 2014, extending portability to landlines. This coincides with 9-digit mobile number standardization and a streamlined MNP process.
- 2024: OSIPTEL approves regulatory improvements via Board of Directors Resolution No. 00030-2024-CD/OSIPTEL to enhance telecommunications regulation quality. A public contest selects the centralized number porting database manager for April 2024–April 2029.
These reforms fostered competition, improved service quality, and expanded consumer choice. As of December 2024, Peru's mobile market reached 42.70 million lines – 3.28% growth from 2023.
Source: OSIPTEL, El Peruano (Official Gazette), December 2024
Peru Phone Number Format: Landline vs Mobile Structure
Peruvian phone numbers follow distinct structures depending on whether you're dialing a landline or mobile phone. Understanding these formats is essential for proper validation and international calling.
Peru Landline Number Format
Landline numbers consist of 9 digits total (including the national prefix):
0 + [Area Code (1-2 digits)] + [Local Number (6-7 digits)]
The leading 0 is the national prefix for domestic long-distance calls, followed by a 1 or 2-digit area code and the local number.
Important distinction:
- Lima and Callao (area code 1): Local numbers are 7 digits
- All other regions: Local numbers are 6 digits
Example:
- Lima landline:
01 234 5678(area code 1 + 7-digit local number) - Arequipa landline:
054 123456(area code 54 + 6-digit local number)
Source: Wikipedia "Telephone numbers in Peru"; Ministry of Transport and Communications
Peru Mobile Phone Number Format
Mobile numbers consist of 9 digits:
9 + [Subscriber Number (8 digits)]
All mobile numbers begin with 9, followed by an 8-digit subscriber number. Since September 4, 2010, Peru's Mobile Virtual Area (MVA) makes all mobile numbers non-geographical – not attached to any region.
Source: Ministry of Transport and Communications, September 4, 2010
Special Number Categories
In addition to standard landline and mobile numbers, Peru uses several special number categories:
- Toll-Free:
0800+ 5 digits. - Premium Rate:
0805+ 5 digits for voting, entertainment, and professional consultations. - Shared Cost:
0801+ 5 digits for services where caller and receiver share costs (customer service, technical support). - Emergency Services:
- 105 – Police (National Police emergency number)
- 106 – Ambulance (SAMU – Sistema de Atención Móvil de Urgencia, Ministry of Health)
- 116 – Fire (Cuerpo General de Bomberos Voluntarios del Perú)
- 911 – Emergency switchboard (connects to police and other emergency services)
- 115 – Peruvian Red Cross (for large-scale emergencies and disasters)
- Government Services: Often use
1800series numbers for priority routing. - Operator Services: Typically use
100series numbers for customer service and technical support. - Information Services: 103 for telephone information.
Note: All emergency calls are free of charge.
Source: Wikipedia "Telephone numbers in Peru"; New Peruvian emergency services guide
Phone Number Validation and Implementation for Developers
Implementing Peru phone number validation requires understanding specific patterns for different number types. Below are production-ready code examples for handling Peruvian phone numbers in your applications.
Input Sanitization
Sanitize user input before validation. Remove common formatting characters users may enter:
function sanitizePhoneNumber(input) {
// Remove spaces, dashes, parentheses, and dots
return input.replace(/[\s\-\(\)\.]/g, '');
}
// Example usage:
console.log(sanitizePhoneNumber('(01) 234-5678')); // '011234567'
console.log(sanitizePhoneNumber('987 654 321')); // '987654321'
console.log(sanitizePhoneNumber('+51 54 123456')); // '+5154123456'Convert international format to national:
function normalizeToNational(number) {
// Remove all non-digit characters except leading +
let cleaned = number.replace(/[^\d+]/g, '');
// If starts with +51, remove it to get national format
if (cleaned.startsWith('+51')) {
cleaned = cleaned.substring(3);
} else if (cleaned.startsWith('51') && cleaned.length >= 11) {
// Starts with 51 without +
cleaned = cleaned.substring(2);
}
return cleaned;
}
// Example usage:
console.log(normalizeToNational('+51 1 234567')); // '1234567'
console.log(normalizeToNational('51987654321')); // '987654321'
console.log(normalizeToNational('01-234-5678')); // '011234567'Source: Best practices for phone number handling
Validation
Validate Peruvian phone numbers with regular expressions:
const peruPhoneRegex = {
landlineLima: /^(0)(1)\d{7}$/, // Lima/Callao: 01 + 7 digits
landlineProvince: /^(0)([2-9][0-9])\d{6}$/, // Provinces: 0 + 2-digit code + 6 digits
mobile: /^9\d{8}$/,
tollFree: /^0800\d{5}$/,
premium: /^0805\d{5}$/,
sharedCost: /^0801\d{5}$/
};
function validatePeruPhoneNumber(number, type) {
// First sanitize the input
const cleaned = sanitizePhoneNumber(number);
if (!peruPhoneRegex[type]) {
return { valid: false, error: 'Invalid number type' };
}
const isValid = peruPhoneRegex[type].test(cleaned);
return {
valid: isValid,
error: isValid ? null : `Invalid ${type} number format`
};
}
// Example usage:
console.log(validatePeruPhoneNumber('011234567', 'landlineLima')); // { valid: true, error: null }
console.log(validatePeruPhoneNumber('054123456', 'landlineProvince')); // { valid: true, error: null }
console.log(validatePeruPhoneNumber('987654321', 'mobile')); // { valid: true, error: null }
console.log(validatePeruPhoneNumber('080012345', 'tollFree')); // { valid: true, error: null }
console.log(validatePeruPhoneNumber('123', 'mobile')); // { valid: false, error: 'Invalid mobile number format' }Handle errors and edge cases:
function validatePeruPhoneNumberWithDetails(number) {
try {
// Handle null/undefined
if (!number) {
return { valid: false, error: 'Phone number is required', type: null };
}
// Sanitize input
const cleaned = sanitizePhoneNumber(number);
// Check minimum length
if (cleaned.length < 9) {
return { valid: false, error: 'Phone number too short', type: null };
}
// Check maximum length (E.164 allows max 15 digits, Peru uses max 9 domestic)
if (cleaned.length > 15) {
return { valid: false, error: 'Phone number too long', type: null };
}
// Detect type and validate
if (peruPhoneRegex.mobile.test(cleaned)) {
return { valid: true, error: null, type: 'mobile' };
} else if (peruPhoneRegex.landlineLima.test(cleaned)) {
return { valid: true, error: null, type: 'landlineLima' };
} else if (peruPhoneRegex.landlineProvince.test(cleaned)) {
return { valid: true, error: null, type: 'landlineProvince' };
} else if (peruPhoneRegex.tollFree.test(cleaned)) {
return { valid: true, error: null, type: 'tollFree' };
} else if (peruPhoneRegex.premium.test(cleaned)) {
return { valid: true, error: null, type: 'premium' };
} else if (peruPhoneRegex.sharedCost.test(cleaned)) {
return { valid: true, error: null, type: 'sharedCost' };
}
return { valid: false, error: 'Invalid Peru phone number format', type: null };
} catch (e) {
return { valid: false, error: 'Validation error: ' + e.message, type: null };
}
}
// Example usage with edge cases:
console.log(validatePeruPhoneNumberWithDetails(null)); // Error: required
console.log(validatePeruPhoneNumberWithDetails('')); // Error: required
console.log(validatePeruPhoneNumberWithDetails('12')); // Error: too short
console.log(validatePeruPhoneNumberWithDetails('999999999')); // Valid mobile
console.log(validatePeruPhoneNumberWithDetails('01 234 5678')); // Valid Lima landlineSource: JavaScript validation best practices
Peru Area Codes Reference
Peru has 23 area codes (established March 1, 2003). Use this table when validating landline numbers:
| Area Code | Region/Department | Example Number |
|---|---|---|
| 1 | Lima and Callao | 01 234 5678 |
| 41 | Amazonas | 041 123456 |
| 42 | San Martín | 042 123456 |
| 43 | Ancash | 043 123456 |
| 44 | La Libertad | 044 123456 |
| 51 | Puno | 051 123456 |
| 52 | Tacna | 052 123456 |
| 53 | Moquegua | 053 123456 |
| 54 | Arequipa | 054 123456 |
| 56 | Ica | 056 123456 |
| 61 | Ucayali | 061 123456 |
| 62 | Huánuco | 062 123456 |
| 63 | Pasco | 063 123456 |
| 64 | Junín | 064 123456 |
| 65 | Loreto | 065 123456 |
| 66 | Ayacucho | 066 123456 |
| 67 | Huancavelica | 067 123456 |
| 72 | Tumbes | 072 123456 |
| 73 | Piura | 073 123456 |
| 74 | Lambayeque | 074 123456 |
| 76 | Cajamarca | 076 123456 |
| 82 | Madre de Dios | 082 123456 |
| 83 | Apurímac | 083 123456 |
| 84 | Cusco | 084 123456 |
Source: Wikipedia "Telephone numbers in Peru", Ministry of Transport and Communications (March 1, 2003)
Area code validation implementation:
const validPeruAreaCodes = [
1, 41, 42, 43, 44, 51, 52, 53, 54, 56,
61, 62, 63, 64, 65, 66, 67, 72, 73, 74,
76, 82, 83, 84
];
function validateAreaCode(areaCode) {
return validPeruAreaCodes.includes(parseInt(areaCode));
}
function extractAndValidateAreaCode(landlineNumber) {
// Remove leading 0 if present
const cleaned = landlineNumber.replace(/^0/, '');
// Try 1-digit area code (Lima)
const oneDigitCode = parseInt(cleaned.substring(0, 1));
if (oneDigitCode === 1 && cleaned.length === 8) {
return { valid: true, areaCode: 1, localNumber: cleaned.substring(1) };
}
// Try 2-digit area code (provinces)
const twoDigitCode = parseInt(cleaned.substring(0, 2));
if (validateAreaCode(twoDigitCode) && cleaned.length === 8) {
return { valid: true, areaCode: twoDigitCode, localNumber: cleaned.substring(2) };
}
return { valid: false, areaCode: null, localNumber: null };
}
// Example usage:
console.log(extractAndValidateAreaCode('011234567')); // { valid: true, areaCode: 1, localNumber: '1234567' }
console.log(extractAndValidateAreaCode('0541234')); // { valid: true, areaCode: 54, localNumber: '123456' }
console.log(extractAndValidateAreaCode('0991234567')); // { valid: false, ... } - Invalid area codeSource: OSIPTEL area code regulations
Best Practices:
- Validate area codes: Cross-reference with OSIPTEL's official list. Peru has 23 area codes: 1 for Lima/Callao, 2-digit codes for other regions.
- Check number length: Verify digits based on type and region – 7 for Lima/Callao landlines, 6 for provincial landlines, 9 for mobile.
- Verify prefixes: Ensure prefix matches service type (
9for mobile,0800for toll-free). - Account for Mobile Virtual Area: Mobile numbers are non-geographical since September 2010 – area codes don't apply.
Understanding E.164 International Phone Number Format
E.164 is the ITU-T (International Telecommunication Union) standard for phone number formats. It ensures every phone number is globally unique and routeable.
E.164 Format Structure:
- Starts with
+ - Country code: 1–3 digits (Peru: 51)
- Subscriber number: up to 12 digits (area code + local number)
- Maximum: 15 digits
Peru E.164 Examples:
- Lima landline:
+511234567(country code 51 + area code 1 + 7-digit local number) - Arequipa landline:
+5154123456(country code 51 + area code 54 + 6-digit local number) - Mobile:
+51987654321(country code 51 + 9-digit mobile number)
Source: ITU-T Recommendation E.164 (11/2010)
Convert to E.164 format:
function toE164(number, defaultCountryCode = '51') {
// Sanitize input
let cleaned = number.replace(/[^\d+]/g, '');
// Already in E.164 format
if (cleaned.startsWith('+')) {
return cleaned;
}
// Remove country code if present without +
if (cleaned.startsWith('51') && cleaned.length >= 11) {
return '+' + cleaned;
}
// National format with leading 0 (landline)
if (cleaned.startsWith('0')) {
// Remove the leading 0 and add +51
return '+' + defaultCountryCode + cleaned.substring(1);
}
// Mobile number (starts with 9)
if (cleaned.startsWith('9') && cleaned.length === 9) {
return '+' + defaultCountryCode + cleaned;
}
// If we can't determine format, return as-is with country code
return '+' + defaultCountryCode + cleaned;
}
// Example usage:
console.log(toE164('011234567')); // '+511234567'
console.log(toE164('054123456')); // '+5154123456'
console.log(toE164('987654321')); // '+51987654321'
console.log(toE164('+51 1 234567')); // '+511234567'
console.log(toE164('51987654321')); // '+51987654321'Convert from E.164 format:
function fromE164(e164Number, format = 'national') {
// Remove the + and country code
let cleaned = e164Number.replace(/^\+51/, '');
if (format === 'national') {
// Mobile numbers stay as-is
if (cleaned.startsWith('9')) {
return cleaned;
}
// Landlines get leading 0
return '0' + cleaned;
}
if (format === 'international') {
return '+51 ' + cleaned;
}
return cleaned;
}
// Example usage:
console.log(fromE164('+511234567', 'national')); // '011234567'
console.log(fromE164('+5154123456', 'national')); // '054123456'
console.log(fromE164('+51987654321', 'national')); // '987654321'
console.log(fromE164('+511234567', 'international')); // '+51 1234567'Source: Twilio E.164 documentation, ITU-T Recommendation
Formatting
Format numbers for readability:
function formatPeruPhoneNumber(number, type) {
if (type === 'mobile') {
return number.replace(/(\d{3})(\d{3})(\d{3})/, '$1 $2 $3');
} else if (type === 'landlineLima') {
return number.replace(/(\d{2})(\d{3})(\d{4})/, '$1 $2 $3');
} else if (type === 'landlineProvince') {
return number.replace(/(\d{3})(\d{6})/, '$1 $2');
}
return number; // Return as is for other types
}
// Example usage:
console.log(formatPeruPhoneNumber('987654321', 'mobile')); // 987 654 321
console.log(formatPeruPhoneNumber('011234567', 'landlineLima')); // 01 123 4567
console.log(formatPeruPhoneNumber('054123456', 'landlineProvince')); // 054 123456Parse formatted numbers to raw format:
function unformatPeruPhoneNumber(formattedNumber) {
// Remove all non-digit characters except leading +
return formattedNumber.replace(/[^\d+]/g, '');
}
// Example usage:
console.log(unformatPeruPhoneNumber('987 654 321')); // '987654321'
console.log(unformatPeruPhoneNumber('01 123 4567')); // '011234567'
console.log(unformatPeruPhoneNumber('(054) 123-456')); // '054123456'
console.log(unformatPeruPhoneNumber('+51 987 654 321')); // '+51987654321'Source: Phone number formatting best practices
How to Call Peru from Abroad: International Dialing Guide
Dial a Peruvian number from another country using this format:
+51 + [Number without the national prefix (0)]
Examples:
- To call a Lima landline (
01 234 5678) from abroad, dial+51 1 234 5678. - To call an Arequipa landline (
054 123456) from abroad, dial+51 54 123456. - To call a mobile number (
987 654 321) from abroad, dial+51 987 654 321.
International Dialing from Peru:
Peru uses a "call by call" system – choose carriers with 4-digit prefixes (19XX):
- Americatel: 1977
- Claro: 1912
- Movistar: 1911
- Entel: 1990 (valid only for Entel customers)
- Bitel: 1968
- IDT: 1914
- Convergia: 1960
Format: 19XX + 00 + country code + area code + phone number
Note: The 19XX prefix is mandatory from fixed lines. Mobile users can dial with + instead.
Source: Wikipedia "Telephone numbers in Peru"
Best Phone Number Validation Libraries and Tools
Use established libraries instead of custom regex for production:
libphonenumber (Google)
libphonenumber is Google's library for parsing, formatting, and validating international phone numbers (Java, C++, JavaScript).
Key features:
- Parsing and formatting for all countries
- Full validation using length and prefix information
- Phone number type detection (mobile, fixed-line, toll-free, etc.)
- As-you-type formatting
- Carrier and geographic information
- Number portability detection
JavaScript Example:
// Using libphonenumber-js (lightweight JavaScript port)
import { parsePhoneNumber } from 'libphonenumber-js';
const phoneNumber = parsePhoneNumber('987654321', 'PE');
console.log(phoneNumber.isValid()); // true
console.log(phoneNumber.format('E.164')); // '+51987654321'
console.log(phoneNumber.format('INTERNATIONAL')); // '+51 987 654 321'
console.log(phoneNumber.format('NATIONAL')); // '987 654 321'
console.log(phoneNumber.getType()); // 'MOBILE'Links:
- GitHub: https://github.com/google/libphonenumber
- JavaScript port: https://github.com/catamphetamine/libphonenumber-js
- Documentation: https://github.com/google/libphonenumber/blob/master/README.md
Source: Google libphonenumber repository
Twilio Lookup API
For server-side validation with real-time carrier and portability information:
// Using Twilio Lookup API
const client = require('twilio')(accountSid, authToken);
client.lookups.v1.phoneNumbers('+51987654321')
.fetch()
.then(phone_number => {
console.log(phone_number.phoneNumber); // '+51987654321'
console.log(phone_number.nationalFormat); // '987 654 321'
console.log(phone_number.countryCode); // 'PE'
});Features:
- Real-time validation
- Carrier information
- Number portability status
- Phone number type detection
Source: Twilio Lookup API documentation
Database Storage Best Practices
Store phone numbers in E.164 format.
Benefits:
- Globally unique
- No ambiguity
- Easy validation
- Efficient indexing
Schema recommendations:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
phone_e164 VARCHAR(15) NOT NULL UNIQUE, -- E.164 format: +51987654321
phone_country_code VARCHAR(3) DEFAULT 'PE',
phone_type VARCHAR(20), -- 'mobile', 'landline', 'tollfree', etc.
created_at TIMESTAMP DEFAULT NOW()
);
-- Create index for fast lookups
CREATE INDEX idx_phone_e164 ON users(phone_e164);Storage Tips:
- Store in E.164 format (with +) as
VARCHAR(15) - Index phone number column
- Store phone type separately
- Validate before storing
- Store original input separately for display preferences
Source: Database design best practices for phone numbers
Peru Mobile Operators: Market Share and Coverage (2024)
Peru's telecommunications market has four major operators (December 2024):
- Claro: 12.83 million lines (30.05%), full services. 2.75% YoY growth.
- Movistar: 11.35 million lines (26.57%), full services, extensive legacy infrastructure. 1.95% YoY decline.
- Entel: 9.66 million lines (22.61%), mobile and data, known for quality. 3.94% YoY growth.
- Bitel: 8.75 million lines (20.49%), mobile and data, expanding rural coverage. Strongest growth: 12.39% YoY.
All four operators hold 20–30% market share. Bitel gains rapidly; Movistar loses share despite infrastructure advantages.
Source: OSIPTEL, December 2024
Future Trends: 5G and IoT in Peru's Telecommunications
OSIPTEL shapes Peru's numbering plan to accommodate:
- 5G deployment: Requires S/18,000 million (~$4.8B USD) investment by 2025 from public and private sectors.
- IoT integration: Meeting growing demand for connected device numbers.
- Enhanced portability: Streamlining and securing processes. Centralized database contract runs through April 2029.
- Digital convergence: Adapting to telecommunications and digital service integration.
- Fraud prevention: Strengthening security against stolen phone fraud.
OSIPTEL manages number allocation through structured application, evaluation, and implementation phases – ensuring efficient use of limited resources. Telecommunications investments increased 3.4% in 2024, with operating revenues reaching S/21,129 million (1.1% increase from 2023).
Source: OSIPTEL, 2024-2025 reports
Additional Resources
- OSIPTEL Official Website: https://www.osiptel.gob.pe – The primary source for regulations and official information.
- Number Portability Verification System: https://www.osiptel.gob.pe/portabilidad – Verify the portability status of a number.
- OSIPTEL Regulations: Access official resolutions, technical standards, and numbering plan documentation.
- libphonenumber Library: https://github.com/google/libphonenumber – Google's phone number handling library.
- ITU-T E.164 Standard: https://www.itu.int/rec/T-REC-E.164/en – International numbering plan specification.
Consult OSIPTEL's official documentation for the most up-to-date information and regulations.
Common Questions About Peru Phone Numbers (FAQ)
What is Peru's country code for international calls?
Peru's country code is +51. Call Peru from abroad by dialing your country's international access code (e.g., 00 from most countries, 011 from the US/Canada), followed by 51, then the area code and local number. For example, to call a Lima landline (01 234 5678) from the US, dial 011-51-1-2345678. Mobile numbers don't require an area code – dial +51 followed by the 9-digit mobile number starting with 9.
How do I format Peru phone numbers correctly?
Peru phone numbers follow specific formats: Landlines use 0 + area code (1-2 digits) + local number (6-7 digits). Lima/Callao landlines have 7-digit local numbers (e.g., 01 234 5678), while provincial landlines have 6-digit local numbers (e.g., 054 123456 for Arequipa). Mobile numbers are 9 digits starting with 9 (e.g., 987 654 321). For international format, use +51 followed by the number without the leading 0 for landlines.
What are the main area codes in Peru?
Peru has 23 area codes. Lima and Callao use area code 1. Major provincial codes include: 54 (Arequipa), 84 (Cusco), 44 (Trujillo/La Libertad), 73 (Piura), 74 (Chiclayo/Lambayeque), 76 (Cajamarca), 51 (Puno), 64 (Huancayo/Junín), 43 (Huaraz/Ancash), and 65 (Iquitos/Loreto). All provincial area codes are 2 digits long. Mobile numbers don't use area codes since the creation of the Mobile Virtual Area (MVA) in September 2010.
How can I validate Peru phone numbers in my application?
Validate Peru phone numbers using regex patterns that account for format differences. For Lima/Callao landlines, use /^(0)(1)\d{7}$/ (01 + 7 digits). For provincial landlines, use /^(0)([2-9][0-9])\d{6}$/ (0 + 2-digit code + 6 digits). For mobile numbers, use /^9\d{8}$/ (9 + 8 digits). Always sanitize input first (remove spaces, dashes, parentheses) and cross-reference area codes against OSIPTEL's official list. For production use, consider Google's libphonenumber library for comprehensive validation.
What is number portability in Peru and how does it work?
Number portability in Peru allows you to switch telecommunications operators while keeping your phone number. Mobile number portability (MNP) launched January 1, 2010, and was relaunched July 16, 2014 with 24-hour porting time. Fixed number portability (FNP) launched July 26, 2014. The process is free, managed through a centralized database (contract period: April 2024–April 2029), and regulated by OSIPTEL. Verify portability status at https://www.osiptel.gob.pe/portabilidad.
What are Peru's emergency phone numbers?
Peru's emergency numbers are: 105 (Police – National Police emergency), 106 (Ambulance – SAMU, Ministry of Health), 116 (Fire – Bomberos Voluntarios), 911 (Emergency switchboard connecting to police and other services), and 115 (Peruvian Red Cross for large-scale emergencies). 103 provides telephone information. All emergency calls are free of charge. These numbers work from both landlines and mobile phones throughout Peru.
Who are the major mobile operators in Peru?
As of December 2024, Peru has four major operators: Claro (30.05% market share, 12.83 million lines), Movistar (26.57%, 11.35 million lines), Entel (22.61%, 9.66 million lines), and Bitel (20.49%, 8.75 million lines). Bitel shows the strongest growth at 12.39% year-over-year, while Movistar declined 1.95%. The total market reached 42.70 million lines in December 2024, growing 3.28% from 2023. All operators offer mobile number portability.
How do I call internationally from Peru?
Peru uses a "call by call" system where you select a carrier using a 4-digit prefix (19XX format): Claro (1912), Movistar (1911), Bitel (1968), Americatel (1977), Entel (1990), IDT (1914), or Convergia (1960). Format: 19XX + 00 + country code + area code + number. The 19XX prefix is mandatory from fixed lines but optional from mobile phones. Mobile users can alternatively dial + followed by the country code.
What is the Mobile Virtual Area (MVA) in Peru?
Peru's Mobile Virtual Area (MVA) launched September 4, 2010, making all mobile numbers non-geographical – not attached to any specific region. All mobile numbers became 9 digits long (format: 9XX XXX XXX) and area codes no longer apply to mobile numbers. This means you dial mobile numbers the same way anywhere in Peru (just the 9-digit number), and mobile-to-mobile calls don't require area codes or prefixes.
Do Lima and provincial landlines have different formats?
Yes. Lima and Callao (area code 1) use 7-digit local numbers (format: 01 XXX XXXX), totaling 9 digits with the leading 0. All other regions use 6-digit local numbers with 2-digit area codes (format: 0XX XXXXXX), also totaling 9 digits. This distinction is critical for validation – your regex patterns must account for both formats. From abroad, dial +51-1-XXXXXXX for Lima or +51-XX-XXXXXX for provinces.
What is E.164 format and why should I use it?
E.164 is the international standard for phone number formats (ITU-T Recommendation). It ensures globally unique, unambiguous phone numbers. Format: + followed by country code (51 for Peru) and subscriber number, maximum 15 digits total. Example: +51987654321 for a Peru mobile. Benefits: eliminates ambiguity, enables international routing, simplifies validation, recommended for database storage. Use libphonenumber library to convert between E.164 and national formats.