phone number standards
phone number standards
How to Call Ukraine: Phone Number Format, +380 Country Code & Validation 2025
Master Ukrainian phone number formatting with +380 country code, E.164 standards, mobile operator codes (Kyivstar, Vodafone, Lifecell), and emergency numbers. Includes code examples for developers.
Ukraine Phone Numbers: Format, Area Code & Validation Guide
Master the Ukrainian phone numbering system with this complete guide to calling Ukraine internationally. Learn the +380 country code, proper phone number format, mobile operator codes (Kyivstar, Vodafone, Lifecell), emergency numbers, and validation best practices for developers building SMS and calling applications.
How to Dial Ukraine Phone Numbers Internationally
To call Ukraine from abroad, dial your country's exit code (011 from USA, 00 from Europe, or + from mobile), followed by 380 (Ukraine's country code), then the 2-digit area or operator code, and finally the 7-digit local number. Example: +380 67 123 4567 for a Kyivstar mobile number or +380 44 123 4567 for a Kyiv landline.
Quick dialing format: +380 XX XXXXXXX (9 digits after country code)
Emergency Services in Ukraine
Ukraine modernized its emergency response system with the European Union's standard 112. This transition impacts how you handle emergency numbers in your applications.
The 112 System: EU Integration Completed
Ukraine completed 112 implementation as the universal emergency number by end of 2024, achieving nationwide coverage. The EU provided €52 million in support (€40 million EIB loan, €10 million investment grant, €2 million technical assistance), aligning Ukraine with EU emergency service standards (source: European Commission). The system unifies ambulance (103), police (102), fire brigade (101), and emergency gas services (104) under a single number.
System Capabilities (2025):
- State-of-the-art call centers with advanced IT infrastructure
- Video call support for people with disabilities using sign language
- Coordinated emergency response across all service types
- Full operational status across all regions including Kyiv, Lviv, Dnipro, and surrounding areas
Support both systems: While 112 operates nationwide, traditional emergency numbers (101, 102, 103, 104) remain functional. Configure your applications to support both 112 and legacy numbers for maximum compatibility and user accessibility. For more information on emergency number validation in other countries, see our guides on international phone number formats and E.164 standards.
Emergency Number Validation Example:
function isUkrainianEmergencyNumber(number) {
const emergencyNumbers = ['112', '101', '102', '103', '104'];
const cleanNumber = number.replace(/\D/g, '');
return emergencyNumbers.includes(cleanNumber);
}
// Example usage:
console.log(isUkrainianEmergencyNumber("112")); // true
console.log(isUkrainianEmergencyNumber("103")); // true
console.log(isUkrainianEmergencyNumber("999")); // falseThis validation ensures your application recognizes all active emergency numbers in Ukraine, supporting both 112 and legacy numbers.
Existing Emergency Numbers: Maintaining Functionality
Despite the 112 rollout, traditional emergency numbers remain operational and vital for your applications. Ensure your systems recognize and process these numbers:
| Service Type | Number | Response Time | Availability |
|---|---|---|---|
| Fire Emergency | 101 | Immediate | 24/7 |
| Police | 102 | Immediate | 24/7 |
| Ambulance | 103 | Immediate | 24/7 |
| Gas Emergency | 104 | Immediate | 24/7 |
Display these numbers prominently in applications handling emergency services or location-based assistance in Ukraine.
Essential Service Numbers
Beyond emergency services, other essential numbers provide public information. Add these to your applications where relevant:
Directory Assistance: 109
Time Service: 190
Weather Updates: 191These numbers provide public utility information and enhance application functionality.
Ukraine's Mobile Network Operators: Know Your Options
Ukraine's mobile market has three primary operators with approximately 47.5 million mobile subscriptions as of mid-2025. Understand their market share, network codes, and coverage to build robust applications.
Kyivstar: The Market Leader
Kyivstar leads Ukraine's mobile market with approximately 22.4 million subscriptions and 47% market share (mid-2025). The operator provides extensive coverage across populated areas with 4G/LTE and VoLTE technology.
- Network Codes: 67, 68, 96, 97, 98
- Market Share: 47% (2025)
- Subscribers: ~22.4 million
- Technology: 4G/LTE, VoLTE
Prioritize compatibility with Kyivstar's network codes given their market dominance and largest subscriber base.
Vodafone Ukraine: A Strong Contender
Vodafone Ukraine (formerly MTS Ukraine) holds 35% market share with approximately 15–16 million subscribers (2025). The operator provides substantial coverage with 4G/LTE and NB-IoT technology.
- Network Codes: 50, 66, 95, 99
- Market Share: 35% (2025)
- Subscribers: ~15–16 million
- Technology: 4G/LTE, NB-IoT
Support Vodafone Ukraine to reach over one-third of the Ukrainian mobile market.
Lifecell: Growing Third Player
Lifecell, the third-largest operator, holds 17% market share with approximately 7–10 million users (2025). The operator provides 4G/LTE and various digital services. Note: Lifecell merged with Datagroup-Volia to create a stronger integrated operator, though brands operate separately.
- Network Codes: 63, 73, 93
- Market Share: 17% (2025)
- Subscribers: ~7–10 million
- Technology: 4G/LTE, Digital Services
Lifecell offers Mobile Number Portability (MNP), allowing users to switch carriers while keeping their number. Consider this factor when designing number validation and handling systems.
Ensure compatibility with all three operators: Support all three major operators to maximize your application's usability with Ukrainian phone numbers.
Operator Detection by Network Code:
function detectUkrainianOperator(phoneNumber) {
// Extract the operator code (first 2 digits after country code)
const cleaned = phoneNumber.replace(/\D/g, '');
const operatorCode = cleaned.slice(3, 5); // After '380'
const operators = {
'67': 'Kyivstar', '68': 'Kyivstar', '96': 'Kyivstar',
'97': 'Kyivstar', '98': 'Kyivstar',
'50': 'Vodafone', '66': 'Vodafone', '95': 'Vodafone', '99': 'Vodafone',
'63': 'Lifecell', '73': 'Lifecell', '93': 'Lifecell'
};
return operators[operatorCode] || 'Unknown operator';
}
// Example usage:
console.log(detectUkrainianOperator("+380671234567")); // Output: Kyivstar
console.log(detectUkrainianOperator("+380501234567")); // Output: VodafoneImportant: Due to Mobile Number Portability (MNP), the original network code may not reflect the current operator. For accurate operator identification, query an MNP database (see section below on MNP).
Coverage and Connectivity (2025): Mobile and Internet coverage in Ukraine reached approximately 98% (excluding temporarily occupied territories) as of 2025, with Internet speeds averaging 31.23 Mbps (source: Ministry of Digital Transformation).
Note on Temporarily Occupied Territories: Account for potential connectivity issues in temporarily occupied regions. As of 2025, approximately 19% of Ukrainian territory remains under temporary occupation, where Ukrainian mobile operators may have limited or no coverage. Russian occupation authorities imposed restrictions on Ukrainian telecommunications infrastructure in these areas, including internet shutdowns and blocking of Ukrainian mobile services. Implement graceful error handling and consider alternative communication methods for users in affected regions.
Ukraine integrates into the EU Roaming area on January 1, 2026, impacting roaming-related functionality for applications handling cross-border communications.
Implementing Ukrainian Phone Numbers: A Developer's Guide
Implement Ukrainian phone number handling with these practical guidelines.
Formatting Ukrainian Phone Numbers
Use the correct format for accurate processing and optimal user experience. The International Telecommunication Union (ITU) assigned Ukraine country code +380 under the E.164 standard. Format Ukrainian phone numbers as +380 XX XXXXXXX, where:
+380is the country codeXXis the two-digit network/area codeXXXXXXXis the seven-digit subscriber number- Total length: 9 digits after the country code (cannot exceed 15 digits total per E.164)
Example: +380 44 123 4567 (Kyiv landline) or +380 67 123 4567 (Kyivstar mobile)
Here's an enhanced JavaScript function to format and validate a Ukrainian phone number:
const formatUkrainianNumber = (number) => {
// Remove all non-digit characters except the leading '+'
const cleanedNumber = number.replace(/[^\d+]/g, '');
// Validate the format
if (!cleanedNumber.match(/^\+?380\d{9}$/)) {
throw new Error('Invalid Ukrainian phone number format. Expected: +380XXXXXXXXX');
}
// Ensure it starts with +380
const normalized = cleanedNumber.startsWith('+') ? cleanedNumber : '+' + cleanedNumber;
// Format: +380 XX XXXXXXX
return normalized.replace(/(\+380)(\d{2})(\d{7})/, '$1 $2 $3');
};
// Example usage with error handling:
try {
console.log(formatUkrainianNumber("+380671234567")); // Output: +380 67 1234567
console.log(formatUkrainianNumber("380671234567")); // Output: +380 67 1234567
console.log(formatUkrainianNumber("+38067123")); // Throws error: Invalid format
} catch (error) {
console.error(error.message);
}This function validates number format, handles missing '+' signs, and provides clear error messages for invalid inputs.
Handle input variations: Users might input numbers in various formats. Build your system to handle these variations and cleanse the input before processing. Common input variations include:
+380 67 123 4567 (spaces)
+380-67-123-4567 (hyphens)
+380 (67) 123-45-67 (mixed separators with parentheses)
380671234567 (missing '+' sign)
0671234567 (local format with leading zero)Complete Input Normalization Example:
function normalizeUkrainianNumber(input) {
// Remove all formatting characters
let cleaned = input.replace(/[\s\-\(\)\.]/g, '');
// Handle local format (starting with 0)
if (cleaned.match(/^0\d{9}$/)) {
cleaned = '380' + cleaned.substring(1);
}
// Add '+' if missing
if (cleaned.match(/^380\d{9}$/)) {
cleaned = '+' + cleaned;
}
// Validate final format
if (!cleaned.match(/^\+380\d{9}$/)) {
return null; // Invalid number
}
return cleaned;
}
// Example usage:
console.log(normalizeUkrainianNumber("+380 67 123 4567")); // +380671234567
console.log(normalizeUkrainianNumber("0671234567")); // +380671234567
console.log(normalizeUkrainianNumber("+380-67-123-45-67")); // +380671234567
console.log(normalizeUkrainianNumber("123")); // null (invalid)Validation with Regular Expressions
For robust validation, use the following regex pattern based on community standards:
// Comprehensive Ukrainian phone number validation
const ukrainianPhoneRegex = /^\+380[3-9]\d{8}$/;
function validateUkrainianPhone(phoneNumber) {
const normalized = normalizeUkrainianNumber(phoneNumber);
if (!normalized) {
return { valid: false, error: 'Invalid format' };
}
// Check if it matches the pattern
if (!ukrainianPhoneRegex.test(normalized)) {
return { valid: false, error: 'Invalid Ukrainian phone number' };
}
// Extract operator code for additional validation
const operatorCode = normalized.substring(4, 6);
const validCodes = ['39', '44', '50', '63', '66', '67', '68', '73', '93', '95', '96', '97', '98', '99'];
if (!validCodes.includes(operatorCode)) {
return { valid: false, error: 'Invalid operator code' };
}
return {
valid: true,
normalized: normalized,
operator: detectUkrainianOperator(normalized)
};
}
// Example usage:
console.log(validateUkrainianPhone("+380671234567"));
// Output: { valid: true, normalized: '+380671234567', operator: 'Kyivstar' }
console.log(validateUkrainianPhone("+380221234567"));
// Output: { valid: false, error: 'Invalid operator code' }Dialing Formats: Local vs. International
Account for different dialing scenarios within your application:
- Same Area (Landline): 7 digits
- Different Area (Landline): 0 + area code + number
- Mobile: 0 + operator code + number
- International: +380 + operator code + number
Use a TypeScript interface to define and convert between these formats:
interface DialingFormat {
sameArea: string; // 7 digits
diffArea: string; // 0 + area code + number
mobile: string; // 0 + operator code + number
international: string; // +380 + operator code + number
}
function convertToDialingFormats(phoneNumber: string): DialingFormat | null {
const normalized = normalizeUkrainianNumber(phoneNumber);
if (!normalized || !normalized.match(/^\+380\d{9}$/)) {
return null;
}
const digits = normalized.substring(4); // Remove '+380'
const areaCode = digits.substring(0, 2);
const subscriberPart = digits.substring(2);
return {
sameArea: subscriberPart.substring(0, 7),
diffArea: '0' + digits,
mobile: '0' + digits,
international: normalized
};
}
// Example usage:
const formats = convertToDialingFormats("+380671234567");
console.log(formats);
// Output: {
// sameArea: "1234567",
// diffArea: "0671234567",
// mobile: "0671234567",
// international: "+380671234567"
// }This structured approach improves code readability and maintainability while supporting multiple dialing scenarios.
Number Portability (MNP): Seamless Switching
Ukraine implemented Mobile Number Portability (MNP), allowing users to switch operators while keeping their number. The NCEC regulates this system. Do not rely solely on network codes to determine the operator – numbers can be ported across networks.
Querying MNP Status via API:
Use an MNP lookup service to accurately determine the current serving operator. Several commercial providers offer MNP lookup APIs, including BSG World MNP API:
// Example MNP lookup using HTTP API
async function lookupMNPStatus(phoneNumber) {
const normalized = normalizeUkrainianNumber(phoneNumber);
const msisdn = normalized.substring(1); // Remove '+' sign
try {
const response = await fetch(`https://mnp.bsg.world:5010/msisdn/${msisdn}`, {
method: 'GET',
// Note: Requires IP-based authentication configured with provider
});
const data = await response.json();
if (data.rc === '000') {
return {
success: true,
operator: data.cn, // Current operator name
country: data.cc, // Country code
mcc: data.mcc, // Mobile Country Code
mnc: data.mnc, // Mobile Network Code
ported: data.npi, // Number portability indicator (true/false)
numberType: data.nt // 'mobile' or 'landline'
};
} else {
return { success: false, error: `Error code: ${data.rc}` };
}
} catch (error) {
return { success: false, error: error.message };
}
}
// Example usage:
const mnpResult = await lookupMNPStatus("+380671234567");
console.log(mnpResult);
// Output: {
// success: true,
// operator: "Kyivstar",
// country: "UA",
// mcc: "255",
// mnc: "03",
// ported: false,
// numberType: "mobile"
// }MNP API Response Fields:
| Field | Description |
|---|---|
cn | Current operator name |
npi | Number Portability Indicator (true = ported, false = not ported) |
mcc | Mobile Country Code (255 for Ukraine) |
mnc | Mobile Network Code identifying current operator |
nt | Number Type (mobile or landline) |
rc | Reason Code ('000' = success) |
Best Practices for MNP:
- Cache MNP lookup results with appropriate TTL (e.g., 24-48 hours) to reduce API calls
- Implement fallback logic using network code detection when MNP API is unavailable
- Consider MNP status for SMS delivery routing and billing optimization
- Regularly consult the NCEC website for regulatory updates
Vodafone offers discounts for users porting their numbers, demonstrating the competitive landscape and MNP's importance for developers.
Account for number portability: Implement Ukrainian phone numbers with careful attention to formatting, dialing variations, and number portability implications.
The Role of NCEC: Regulation and Oversight
The National Commission for the State Regulation of Electronic Communications, Radiofrequency Spectrum and the Provision of Postal Services (NCEC, also known as NKEK) regulates the telecommunications market. The NCEC reorganized from the former NCCIR and operates under the Law of Ukraine "On Electronic Communications" No. 1089-IX dated January 16, 2020.
The NCEC manages Ukraine's telecommunications landscape. The commission oversees number allocation, service management, emergency service routing, and maintains the register of electronic communication networks and service providers. Stay informed about NCEC regulations. The NCEC coordinated the 112 emergency number rollout, achieving nationwide coverage by end of 2024.
Accessing NCEC Resources:
Access official telecommunications information and regulatory updates through these channels:
- Official Website: nkek.gov.ua – regulatory decisions, numbering plans, and operator registers
- Legal Framework: Law on Electronic Communications No. 1089-IX – complete legal text
- Operator Register: Available through NCEC website – official list of licensed telecom providers
- Contact: For technical inquiries regarding number allocation and regulatory compliance, contact NCEC through their official website
While NCEC does not currently provide a public developer API for number validation, their website contains authoritative reference materials including official operator code allocations and numbering plan documentation.
Number Allocation and Assignment
The NCEC manages geographic distribution of numbers and their assignment to operators. The commission allocates special number ranges for specific purposes and maintains the official register of telecom providers.
Service Management and Quality
The NCEC routes emergency services, manages number portability, and monitors telecommunications service quality. Recent 2025 legislation simplified the process for mobile operators to obtain land leases for mobile base station construction, with NCEC maintaining oversight of the network infrastructure register.
Consult NCEC for updates: The NCEC provides authoritative telecommunications regulations in Ukraine. Visit nkek.gov.ua for the latest information. For SMS integration with Ukrainian numbers, explore our SMS API documentation and international SMS pricing guides.
Ukrainian Phone Number Validation: Complete Patterns
Use these comprehensive regex patterns for validation across different contexts:
Basic Pattern (E.164 format):
^\+380[3-9]\d{8}$Flexible Pattern (accepts various input formats):
^(\+?38)?[\s\.\-\(]?0?[\s\.\-\)]?[3-9]\d[\s\.\-]?\d{3}[\s\.\-]?\d{2}[\s\.\-]?\d{2}$Strict Mobile-Only Pattern:
^\+380(39|50|63|66|67|68|73|93|95|96|97|98|99)\d{7}$Validation Summary Table:
| Format | Example | Pattern |
|---|---|---|
| E.164 International | +380671234567 | ^\+380[3-9]\d{8}$ |
| Local Mobile | 0671234567 | ^0[3-9]\d{8}$ |
| Formatted | +380 67 123 4567 | Normalize first, then validate |
| Emergency | 112, 101-104 | ^1(12|0[1-4])$ |
Troubleshooting Common Issues
Issue 1: Validation fails for correctly formatted numbers
- Cause: Input contains hidden Unicode characters or non-breaking spaces
- Solution: Use
.replace(/[^\d+]/g, '')to strip all non-digit characters except '+'
Issue 2: Operator detection returns incorrect results
- Cause: Number has been ported (MNP)
- Solution: Implement MNP lookup API to get current operator
Issue 3: Numbers work domestically but fail for international SMS
- Cause: Missing country code or incorrect E.164 formatting
- Solution: Always store numbers in E.164 format (+380XXXXXXXXX) in your database
Issue 4: Emergency number validation inconsistent
- Cause: Not supporting both 112 and legacy numbers (101-104)
- Solution: Maintain array of all valid emergency numbers and check against it
Issue 5: Connectivity issues for certain numbers
- Cause: Numbers in temporarily occupied territories
- Solution: Implement graceful error handling and provide user feedback about potential connectivity limitations
Frequently Asked Questions About Ukraine Phone Numbers
What is the country code for Ukraine?
The country code for Ukraine is +380. To call Ukraine from the United States, dial 011-380 followed by the area code and local number. From Europe, dial 00-380 plus the area code and local number. From mobile phones worldwide, dial +380 directly followed by the 9-digit phone number (2-digit area/operator code + 7-digit subscriber number). Total format: +380 XX XXXXXXX.
How do I format a Ukrainian phone number correctly?
Format Ukrainian phone numbers as +380 XX XXXXXXX, where:
- +380 = country code for Ukraine
- XX = 2-digit area code (44 for Kyiv, 32 for Lviv) or mobile operator code (67/68/96/97/98 for Kyivstar, 50/66/95/99 for Vodafone, 63/73/93 for Lifecell)
- XXXXXXX = 7-digit subscriber number
Examples: +380 67 123 4567 (Kyivstar mobile) or +380 44 123 4567 (Kyiv landline). This follows the international E.164 standard with 9 digits after the country code.
What are the emergency numbers in Ukraine?
Ukraine uses 112 as the universal emergency number (EU standard, completed nationwide rollout end of 2024). You can call 112 for all emergencies: fire, police, ambulance, and gas emergencies.
Legacy emergency numbers remain operational:
- 101 - Fire emergency
- 102 - Police
- 103 - Ambulance
- 104 - Gas emergency
Both systems work 24/7. Support both 112 and legacy numbers (101-104) in your applications for maximum compatibility.
Which mobile operators work in Ukraine?
Ukraine has three major mobile operators serving 47.5 million mobile subscriptions (2025):
- Kyivstar - Market leader with 47% share (22.4M subscribers). Network codes: 67, 68, 96, 97, 98
- Vodafone Ukraine - 35% market share (15-16M subscribers). Network codes: 50, 66, 95, 99
- Lifecell - 17% market share (7-10M subscribers). Network codes: 63, 73, 93
All three operators support 4G/LTE and mobile number portability (MNP), meaning users can switch carriers while keeping their phone number.
Does Ukraine support mobile number portability?
Yes. Ukraine implemented Mobile Number Portability (MNP), allowing users to switch carriers while keeping their number. Do not rely solely on network codes to determine the operator – numbers can be ported across networks. For SMS applications, MNP affects routing decisions. Use an MNP lookup API to identify the current serving operator for optimal delivery rates and accurate billing. Ported numbers retain their original prefix but route to the new operator's network.
When will Ukraine join the EU Roaming area?
Ukraine is scheduled to integrate into the EU Roaming area effective January 1, 2026 (source: European Commission, June 2025). This integration follows Ukraine's notification in June 2025 of full alignment with EU roaming legislation.
What developers need to prepare for EU roaming:
- Billing Systems: Update billing logic to recognize EU roaming zone; Ukrainian numbers in EU should not incur roaming charges, and vice versa
- Rate Plans: Implement "Roam Like at Home" (RLAH) pricing where domestic rates apply across Ukraine-EU border
- Network Quality: Ensure QoS monitoring supports equal network quality standards in both Ukraine and EU countries
- Emergency Services: Verify emergency calling (112) works without charge across the roaming area
- User Notifications: Update roaming notifications to reflect Ukraine as part of EU roaming zone (effective January 1, 2026)
- API Integration: If using SMS APIs, verify provider support for EU-Ukraine roaming rates
- Documentation: Update user-facing documentation about international usage and roaming policies
The integration extends internal market treatment to Ukraine. Ukrainian users traveling to any of the 27 EU countries can use calls, SMS, and data at domestic rates with the same network quality and speed as at home.
What is the E.164 format for Ukrainian numbers?
The E.164 format is the international standard for phone numbers. For Ukraine, the E.164 format is +380XXXXXXXXX (plus sign, country code 380, followed by 9 digits with no spaces or special characters). Example: +380671234567. The International Telecommunication Union (ITU) assigned Ukraine country code +380. Ukrainian numbers contain exactly 9 digits after the country code, well within the E.164 maximum of 15 total digits. Use E.164 format for SMS APIs, international calling, and database storage.
Who regulates telecommunications in Ukraine?
The National Commission for the State Regulation of Electronic Communications, Radiofrequency Spectrum and the Provision of Postal Services (NCEC/NKEK) regulates telecommunications. The commission operates under the Law of Ukraine "On Electronic Communications" No. 1089-IX dated January 16, 2020. Visit nkek.gov.ua for official regulatory information.