phone number standards

Sent logo
Sent TeamMar 8, 2026 / phone number standards / Article

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:

javascript
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"));  // false

This 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 TypeNumberResponse TimeAvailability
Fire Emergency101Immediate24/7
Police102Immediate24/7
Ambulance103Immediate24/7
Gas Emergency104Immediate24/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:

plaintext
Directory Assistance: 109
Time Service: 190
Weather Updates: 191

These 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:

javascript
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: Vodafone

Important: 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:

  • +380 is the country code
  • XX is the two-digit network/area code
  • XXXXXXX is 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:

javascript
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:

plaintext
+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:

javascript
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:

javascript
// 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:

typescript
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:

javascript
// 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:

FieldDescription
cnCurrent operator name
npiNumber Portability Indicator (true = ported, false = not ported)
mccMobile Country Code (255 for Ukraine)
mncMobile Network Code identifying current operator
ntNumber Type (mobile or landline)
rcReason 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):

regex
^\+380[3-9]\d{8}$

Flexible Pattern (accepts various input formats):

regex
^(\+?38)?[\s\.\-\(]?0?[\s\.\-\)]?[3-9]\d[\s\.\-]?\d{3}[\s\.\-]?\d{2}[\s\.\-]?\d{2}$

Strict Mobile-Only Pattern:

regex
^\+380(39|50|63|66|67|68|73|93|95|96|97|98|99)\d{7}$

Validation Summary Table:

FormatExamplePattern
E.164 International+380671234567^\+380[3-9]\d{8}$
Local Mobile0671234567^0[3-9]\d{8}$
Formatted+380 67 123 4567Normalize first, then validate
Emergency112, 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):

  1. Kyivstar - Market leader with 47% share (22.4M subscribers). Network codes: 67, 68, 96, 97, 98
  2. Vodafone Ukraine - 35% market share (15-16M subscribers). Network codes: 50, 66, 95, 99
  3. 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:

  1. Billing Systems: Update billing logic to recognize EU roaming zone; Ukrainian numbers in EU should not incur roaming charges, and vice versa
  2. Rate Plans: Implement "Roam Like at Home" (RLAH) pricing where domestic rates apply across Ukraine-EU border
  3. Network Quality: Ensure QoS monitoring supports equal network quality standards in both Ukraine and EU countries
  4. Emergency Services: Verify emergency calling (112) works without charge across the roaming area
  5. User Notifications: Update roaming notifications to reflect Ukraine as part of EU roaming zone (effective January 1, 2026)
  6. API Integration: If using SMS APIs, verify provider support for EU-Ukraine roaming rates
  7. 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.