Cyprus VAT Number Validation
Format, pattern, and checksum algorithm for CY VAT numbers
Cyprus VAT numbers consist of 8 digits followed by a check letter, using a lookup table algorithm for validation.
Format vs. Active Validation
This checks format and checksum only, not if a VAT number is really registered. Use VatDB's API to verify if a number is really registered and active. VatDB checks official EU and national datasources.
Format Overview
| Property | Value |
|---|---|
| Country Code | CY |
| Local Name | Αριθμός Εγγραφής Φ.Π.Α. (ΦΠΑ) |
| Format | 8 digits + 1 letter |
| Length | 9 characters (11 characters with CY country prefix) |
| Examples | CY99000230P CY10044933H CY10107548N |
Regex Pattern
^CY[0-9]{8}[A-Z]$
Restrictions
- Cannot start with "12"
Checksum Algorithm
Cyprus uses a lookup table combined with MOD 26:
def validate_cy_vat(number):
if number.startswith('CY'):
number = number[2:]
if len(number) != 9:
return False
# Cannot start with 12
if number.startswith('12'):
return False
digits = number[:8]
check_letter = number[8]
if not digits.isdigit() or not check_letter.isalpha():
return False
# Lookup table for odd positions
table = [1, 0, 5, 7, 9, 13, 15, 17, 19, 21]
total = 0
for i, d in enumerate(digits):
digit = int(d)
if i % 2 == 0: # Odd position (1-indexed)
total += table[digit]
else: # Even position
total += digit
expected = chr(ord('A') + (total % 26))
return check_letter == expected
Important Notes
- The domestic Cyprus VAT number body is 9 characters, for example
10259033P. The EU/VIES form adds theCYcountry prefix, for exampleCY10259033P. - Cyprus also uses 9-character Tax Identification Numbers / Tax Identification Codes (TIN/TIC). These can look similar to VAT numbers, but a Cyprus TIN/TIC is not automatically a VAT registration number.
- A Cyprus VAT number can pass format and checksum checks but still be inactive, deregistered, not issued, or not activated for intra-EU transactions. Use VatDB to check whether the number is active for EU-wide commerce.
- Company and registry identifiers such as
HE123456,C273730, orEE123456are not Cyprus VAT numbers. They should not be normalized into theCYVAT format.
Frequently Asked Questions
How do I verify a Cyprus VAT number?
Cyprus VAT numbers have 8 digits + 1 check letter. Validate using the lookup table algorithm with MOD 26. Use VatDB's API for official verification against EU and national databases.
What does a Cyprus VAT number look like?
A Cyprus VAT number has the format CY12345678A - CY followed by 8 digits and a single check letter (A-Z). The letter is calculated using a special lookup table algorithm.
How many digits are in a Cyprus VAT number?
A Cyprus VAT number contains 8 digits plus 1 check letter. The total length is 11 characters including the CY country code: CY + 8 digits + 1 letter.
Why can't Cyprus VAT numbers start with 12?
The prefix '12' is reserved in the Cyprus numbering system and not assigned to any VAT registrations. Numbers starting with '12' should be considered invalid.
How can I check a Cyprus company's VAT registration?
Verify Cyprus VAT numbers using VatDB's API, which checks against official EU and Cyprus databases. Get instant validation with company details.
What's the difference between format validation and checking if a VAT number is active?
Format and checksum checks verify structure only - they can't detect fake or deregistered numbers. For proof of actual VAT registration, use VatDB's API.
Which real Cypriot VAT numbers can I use to test validation?
Three live Cypriot (CY) VAT numbers to experiment with: CY99000230P, CY10044933H, CY10107548N.