French VAT Number Validation
Format, pattern, SIREN checksum, and MOD 97 key algorithm for FR VAT numbers
French VAT numbers (Numéro de TVA intracommunautaire) consist of a 2-character key followed by the 9-digit SIREN company registration number.
Format vs. Active Validation
This checks format 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 | FR |
| Format | 2 characters + 9 digits (SIREN) |
| Length | 11 characters |
| Examples | FR27552032534 FR81775670417 FR33855200507 |
Regex Pattern
^FR[0-9A-HJ-NP-Z]{2}[0-9]{9}$
Note: The first 2 characters can be alphanumeric, except for letters O and I.
Checksum Algorithm (SIREN + MOD 97 key)
def validate_fr_vat(number):
if number.startswith('FR'):
number = number[2:]
if len(number) != 11:
return False
key = number[:2]
siren = number[2:]
if not siren.isdigit():
return False
if siren.startswith('000'):
# Some FR VAT allocations (for example Monaco-style prefixes)
# do not follow mainland SIREN checksum semantics.
siren_valid = True
else:
siren_valid = luhn(siren)
if not siren_valid:
return False
if key.isdigit():
siren_num = int(siren)
expected_key = (12 + 3 * (siren_num % 97)) % 97
return int(key) == expected_key
# Alphanumeric FR keys exist. Keep strict rejection only for
# confidently invalid characters (e.g. O / I). Otherwise accept
# as not confidently invalid; validate active status via VatDB.
return True
Important Notes
- SIREN is the 9-digit company registration number
- SIREN checksum is validated strictly for non-
000prefixes - Numeric FR keys are validated strictly with MOD 97
- Alphanumeric FR keys are accepted as not confidently invalid
- Letters O and I are not used to avoid confusion with 0 and 1
Frequently Asked Questions
How do I verify a French VAT number?
French VAT numbers have a 2-character key + 9-digit SIREN. First validate the SIREN checksum (non-000 prefixes), then if the key is numeric apply MOD 97: key = (12 + 3 × (SIREN mod 97)) mod 97. Alphanumeric keys are treated as not confidently invalid; for active status validation, use VatDB.
What does a French VAT number look like?
A French VAT number has the format FR12345678901 or FRXX123456789 - 'FR' followed by 2 characters (the validation key) and then the 9-digit SIREN number. Total length is 13 characters.
How many digits are in a French VAT number?
A French VAT number has 11 characters after the FR prefix: a 2-character key (can be letters or digits) plus the 9-digit SIREN company registration number.
What is the SIREN number in a French VAT number?
The SIREN (Système d'Identification du Répertoire des Entreprises) is the last 9 digits of the French VAT number. It's the official company registration number assigned by INSEE to French businesses and it carries a checksum.
Why does my French VAT number have letters in it?
The first 2 characters after 'FR' are a validation key that can be alphanumeric. Letters O and I are excluded to avoid confusion with 0 and 1. Numeric keys are strictly checked; alphanumeric keys are accepted and active status is validated via VatDB.
How can I look up a French company by VAT number?
VatDB provides real-time VAT validation against official EU and national databases. Includes company details with each verification.
What's the difference between format validation and checking if a VAT number is active?
A valid format doesn't mean the company exists or is VAT-registered. Companies close, deregister, or merge. VatDB's API checks for current, active status.
What are some real French (FR) VAT numbers I can test with?
These French (FR) VAT numbers are real and currently registered: FR27552032534, FR81775670417, FR33855200507.