Telephone numbers in Ukraine

2009 dialing plan.
On 14 October 2009, Ukraine switched to the dialing conventions common in the European Union.
In order to call abroad, users need to dial 00 before the country code. For instance, to call Vancouver, Canada, from Kyiv, users dial 00 1 604 xxx xxxx.
Calling nationwide requires dialing 0 and then the region code followed by the local number. For instance, to call Kyiv from Odesa, users dial 0 44 xxx xxxx. The same convention was adopted for mobile operators.
For local calls, users can still dial the local number without a 0 and the area code. Mobile users must dial the full 0-prefixed number, although operators may implement local dialing in cities.
The in-country sequence for ordinary zones consists of a 2-digit zone code, an optional subzone code (never used for the capital of the geographic region corresponding to a phone zone), an optional filler (0 to 2 "2"s, used to make the whole in-country sequence contain exactly 9 digits) and the local phone number (5 to 7 digits). When dialing from cell phones, the in-country dial sequence (with the 0 XX prefix) is used even for phones of the same provider. Otherwise a call may be placed in the nearest geographic area.
Area codes correspond to geographic regions ("oblasts") with exception of Kyiv and formerly Sevastopol which utilize their own area code. See Area codes in Ukraine for current list.
Cell phone numbers can be assigned both within the cell phone provider zone and within a geographic zone. The latter arrangement is used mainly for CDMA phones and for GSM operators selling their connectivity within one city, like GoldenTelecom GSM. Allocation of new GSM cell phone numbers within a geographic zone is very rare now because law requires all incoming calls to be free, including incoming calls to a cell phone.
Some examples of dialed sequences:
 xxx-xx-xx (two PSTN phones within Kyiv, local number is 7 digits long)
 050 xxx-xx-xx (from any Ukraine mobile not roaming or PSTN phone to 
 Vodafone, cell phone provider)
 067 xxx-xx-xx (from any Ukraine mobile not roaming or PSTN phone to 
 Kyivstar, cell phone provider)
 0800 xxx-xxx (from any Ukraine mobile not roaming or PSTN phone to toll-free number)
 044 xxx-xx-xx (from any Ukraine mobile not roaming or PSTN phone outside the Kyiv 
 phone zone to Kyiv)
 045 94x-xx-xx (from any Ukraine mobile not roaming or PSTN phone outside the
 Brovary region phone zone to Brovary)
 046 xxx-xx-xx (from any Ukraine mobile not roaming or PSTN phone outside 
 the Chernihiv phone zone to Chernihiv)
 032 2xx-xx-xx (from any Ukraine mobile not roaming or PSTN phone outside 
 the Lviv phone zone to Lviv; the local number is 6 digits long, 
 so "2" is used as a filler to make the whole in-country dial sequence 
 9 digits long)
 00 ... (mobile or fixed international call from Ukraine)
 +380 44 xxx-xx-xx (international call to Kyiv)
 +380 45 94x-xx-xx (international call to Brovary)
 +380 48 xxx-xx-xx (international call to Odesa)
 +380 48 2xx-xx-xx (international call to 6-digit numbers in Odesa)
 +380 32 xxx-xx-xx (international call to Lviv)
 +380 32 2xx-xx-xx (international call to 6-digit numbers in Lviv)
 +380 50 xxx-xx-xx (international call to Vodafone)
 +380 66 xxx-xx-xx (international call to Vodafone)
 +380 95 xxx-xx-xx (international call to Vodafone)
 +380 99 xxx-xx-xx (international call to Vodafone)
 +380 63 xxx-xx-xx (international call to lifecell)
 +380 73 xxx-xx-xx (international call to lifecell) 
 +380 93 xxx-xx-xx (international call to lifecell)
 +380 67 xxx-xx-xx (international call to Kyivstar)
 +380 68 xxx-xx-xx (international call to Kyivstar)
 +380 96 xxx-xx-xx (international call to Kyivstar)
 +380 97 xxx-xx-xx (international call to Kyivstar)
 +380 98 xxx-xx-xx (international call to Kyivstar)
 +380 91 xxx-xx-xx (international call to 3mob) 
 +380 92 xxx-xx-xx (international call to PEOPLEnet)
 +380 94 xxx-xx-xx (international call to Intertelecom)
Some mobile operators may support additional dialing plans. For example, Kyivstar also supports the following:
 xxx-xx-xx (local number at current location of Kyivstar mobile - i.e. if the 
 mobile is currently in Kyiv this will represent a Kyiv number)
 67-xxx-xx-xx (call from Kyivstar subscriber to Kyivstar subscriber)
Note that law explicitly prohibits trunk calls to a PSTN phone within the same local area in a geographic phone zone (e.g. from Kyiv to Kyiv), so one cannot dial 0~2 or 0~xx for this, unless the phone exchange is misconfigured or a special circumstance occurs.
The switch to a closed numbering plan, which will introduce seven digit-long numbers for all zones, should be complete in 2011-2012.
Notice, that when using older non-digital extensions for the inter-city, international calls as well as the calls made to the national mobile and sip-numbers, it may be necessary to wait for a continuous dial tone after the first 0. This applies to the old-style rotary phones (as opposed to modern digital dial phones). For example, to call a Chernihiv local landline number from Kyiv, one needs to dial 0, wait for a dial tone, then dial 46 (Chernivtsi regional code) and then dial the local number in that city. Similarly, when calling Vancouver, Canada, one needs to dial 0, wait for the dial tone, dial another 0 to access international line, then dial 1 (for Canada and the USA), followed by 778 (one of the area codes for British Columbia), followed by the 7-digit local number.
Due to the last digit of the country code (+380) being identical to the trunk prefix (0), international format numbers are often mistakenly presented as +38 0..., e.g. as in the (fictional) Kyiv number +38 044 555 1234, because people tend to mistakenly think that the last digit of the country code and the trunk prefix are the same number just being swapped around. +38 belonged to Yugoslavia before its disintegration in the early 1990s, and the +38 code was broken up and distributed amongst the former republics. +380 went to Ukraine, which previously used the +7 code.
Previous dialing plan.
Ukraine (similarly to most of ex-Soviet Union countries) used to have a four-level (local, zone, country, international) open dialing plan. For all non-local numbers, the required trunk prefix was '8' followed by an auxiliary dial tone after it (optional on digital exchanges), with the following '2' for in-zone calls, followed by an area code, and '10' for international calls.
Russian invasion.
Following the 2022 Russian invasion of Ukraine, the Russian-occupied regions of the Donetsk, Luhansk and Kherson "people's republics" have been issued with the Russian telephone code (+7).