Cyprus (CY)

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 the CY country prefix, for example CY10259033P.
  • 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, or EE123456 are not Cyprus VAT numbers. They should not be normalized into the CY VAT 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.

Validate Cyprus VAT Numbers Instantly

Use our API for real-time CY VAT number validation

Try Free