Free tool

European company identifier validator

Check a Spanish NIF, French SIREN, Polish NIP, Norwegian organisation number, Finnish Y-tunnus, Swedish organisationsnummer, Croatian MBS or OIB, Belgian enterprise number, Danish CVR number, Estonian registry code, Slovak IČO, Swiss UID, Latvian registration number, Cypriot registration number, Romanian CUI, UK company number, Irish CRO number or EU VAT number. No signup, and nothing leaves your browser.

Updated 6 November 2026

Which identifiers actually have a check digit

This is the distinction most validators blur, and it matters: "well-formed" and "exists" are different claims. A check digit proves a number is internally consistent — it does not prove the number was ever issued to a real company.

The full table, for every live country: company identifier formats by country lists the shape, regex, check digit, normalised form and API parameter of each identifier, generated from the validators on this page, with a JSON and a CSV download.

IdentifierCheck digit?Algorithm
Spain — NIF / CIF / NIEYesLetter from mod 23 (personal), or weighted digit sum (company)
France — SIRENYesLuhn over 9 digits
France — SIRETYesLuhn over 14 digits (La Poste is a documented exception)
Poland — NIPYesWeighted sum mod 11
Poland — REGONYesWeighted sum mod 11 (9 and 14-digit forms)
Norway — organisasjonsnummerYesWeighted sum mod 11
Finland — Y-tunnusYesWeighted sum mod 11 over seven digits (weights 7, 9, 10, 5, 8, 4, 2); a remainder of 1 is never issued
Sweden — organisationsnummerYesLuhn check digit over all ten digits; the third digit is 2 or higher, because a personal identity number (personnummer) never has one
Croatia — OIBYesISO 7064 MOD 11,10 check digit over the first ten of eleven digits; it gates
Croatia — MBSAdvisoryNine digits with the same MOD 11,10 check digit, but the court register documents a few legacy numbers that fail it, so a mismatch is a warning and not a rejection
Belgium — enterprise numberYesMod 97 over ten digits starting with 0 or 1: the last two digits are 97 minus the first eight digits modulo 97
Denmark — CVR numberAdvisoryEight digits with a mod-11 check (weights 2, 7, 6, 5, 4, 3, 2, 1; the sum should divide by 11), but the API validates the eight-digit format, so a mismatch is a warning and not a rejection
Estonia — registry codeYesEight digits, the first being 1, 7, 8 or 9, with a mod-11 check digit over the first seven (weights 1 to 7, then 3 to 9 when the result is 10); it gates
Slovakia — IČOAdvisoryEight digits (six or seven are read with leading zeros) with a mod-11 check (weights 8, 7, 6, 5, 4, 3, 2), but the API validates the format, so a mismatch is a warning and not a rejection
Switzerland — UIDEnforcedCHE plus nine digits (separators and a MWST, TVA or IVA suffix are optional) with a mod-11 check digit (weights 5, 4, 3, 2, 7, 6, 5, 4); a wrong one is rejected
Latvia — registration numberEnforced11 digits starting 4 to 9 (an LV prefix is optional) with a mod-11 check (weights 9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1; the sum must leave 3); a wrong one is rejected. The oldest 9-digit codes carry no check digit
Cyprus — registration numberFormat onlyHE (company) or AE (overseas company) and up to nine digits without a leading zero; bare digits mean HE. No check digit exists, so a well-formed number does not confirm the company
Romania — CUIAdvisory2 to 10 digits without a leading zero (an RO, CUI or CIF prefix is accepted); the last digit is a check digit (weights 7, 5, 3, 2, 1, 7, 5, 3, 2) but a few genuine numbers fail it, so a mismatch is a warning. A 13-digit number is a personal code and is refused
UK — company numberNoFormat only — 8 digits, or 2 letters + 6 digits
Ireland — CRO numberNoFormat only — a plain sequential integer
EU VATVariesPer-country structure, plus the national check digit where one exists

So for the UK and Ireland this tool reports well-formed, never valid. If a validator tells you a UK company number is "valid", it is overstating what it checked.

Why this is free

Because it costs nothing to run. It is arithmetic — no lookup, no database, no API key, and no request leaving your browser. There is no honest reason to put that behind a signup.

What it cannot tell you is whether the company exists, what it is called, who its directors are, or whether it is in insolvency proceedings. That needs the registry. The Prometiam API answers the first two across Spain, France, the UK, Ireland, Poland, Norway, Finland, Sweden, Belgium, Croatia, Denmark, Estonia, Slovakia, Switzerland, Latvia, Cyprus, Romania, Lithuania, Canada, Australia, Japan, Israel, Singapore, Colombia, Taiwan, Czech Republic, Germany, Argentina, Ukraine, Serbia, Ecuador, Chile, Mexico, the Netherlands, Brazil and the United States from one key, with 500 free credits over 14 days and card required, nothing charged for 14 days. Directors are served for Spain, France, the UK, Norway, Poland and the Czech Republic (Polish natural persons are masked by the register itself; Czech natural persons are the name and the month and year of birth only), and corporate insolvency notices for France, Germany, the UK, Austria, Switzerland, Norway, Finland, the US, the Netherlands, Denmark, Croatia, Sweden, Spain, Latvia and Estonia.

# validate the shape locally first, then look it up
curl -H "Authorization: Bearer rk_live_..." \
  "https://api.prometiam.com/functions/v1/risk-api/companies/search?name=telefonica&country=ES"

FAQ

Does this send my data anywhere?
No. Every calculation runs locally in your browser — no network request, no logging, no key.

Does a valid check digit mean the company exists?
No. It proves the number is internally consistent, nothing more. A well-formed number that was never issued still passes.

Can you validate an EU VAT number offline?
Only its structure, plus the national check digit where one exists. Whether it is registered and active only VIES can answer, and that needs a server-side call.

Why does the UK result say "format only"?
Because Companies House numbers carry no check digit. There is no arithmetic that could distinguish a real one from a plausible-looking fake.

Related

Frequently asked questions

Which European company identifiers have a check digit?
Spain (NIF, CIF and NIE), France (SIREN and SIRET, both Luhn), Poland (NIP and REGON), Norway (organisasjonsnummer, modulo 11), Finland (Y-tunnus, modulo 11), Sweden (organisationsnummer, Luhn), Croatia (the OIB, ISO 7064 MOD 11,10) and Belgium (the enterprise number, mod 97) all carry a real check digit, so a typo can be caught offline. The Croatian MBS uses the same algorithm, but its check digit is advisory because the court register documents a few legacy numbers that fail it. The Danish CVR number has a mod-11 check (weights 2, 7, 6, 5, 4, 3, 2, 1) that is advisory too: a mismatch is a warning, not a rejection. UK company numbers and Irish CRO numbers carry no check digit at all - for those, only the format can be checked.
Does this tool send my data anywhere?
No. Every calculation is pure arithmetic running in your browser. There is no network request, no logging and no API key involved.
Does a valid check digit mean the company exists?
No, and this is the important limitation. A check digit only proves the number is internally consistent - it says nothing about whether that number was ever issued to a real company. To know that, you have to look it up in the registry.
Can you validate an EU VAT number offline?
Only its structure, plus the national check digit where one exists (Spain, Poland, Finland, Sweden, the OIB inside a Croatian VAT number, the enterprise number inside a Belgian VAT number, the CVR number inside a Danish VAT number (advisory), and the SIREN inside a French VAT number). Whether the number is registered and active can only be confirmed against VIES, the EU VAT information exchange system, which requires a server-side call.