Partita IVA
Italy · Companies
Paste or type the number — punctuation is optional.
Other identifiers
Europe
Asia and the Middle East
Oceania
What this check does — and what it cannot do
This tool checks the number's structure and its check digit, using the published algorithm for that document. A number that passes is well formed: it is arithmetically consistent and could have been issued.
It cannot tell you whether the number was actually issued, whether it is active, or who it belongs to. Only the issuing tax authority can confirm that, through its own lookup service. Treat a passing result as "worth submitting", never as proof of identity.
The generator produces numbers that satisfy the same checksum, for filling forms while developing and testing software. They are arithmetic, not records: they are not drawn from any register and do not correspond to a real holder. No generator is offered for the US Social Security Number.
Calculated in your browser. Nothing you enter is sent anywhere.
The Luhn check has exactly one blind spot, and it is swapping 0 with 9
Partita IVA uses the Luhn algorithm, which catches every single-digit error. Transpositions are different: testing 180,000 adjacent swaps let 2.20% through, and every one of them was a 0 and a 9 changing places. No other digit pair slips past. So 09 typed as 90 in an Italian VAT number will validate cleanly and still be the wrong company.
How it works
- Runs the Luhn checksum over all eleven digits.
- Reads the registered province from digits 8 to 10.
- Shows the EU VAT form, which is IT followed by the same eleven digits.
double every second digit from the right; subtract 9 if the result exceeds 9 sum all digits; the number is valid when the total is divisible by 10 digits 1-7 progressive number · 8-10 province · 11 check digit
Worked example
Why 0 and 9 are interchangeable under Luhn.
- an undoubled 0 contributes 0; an undoubled 9 contributes 9
- a doubled 0 contributes 0; a doubled 9 gives 18, then 18 − 9 = 9
- so both digits contribute the same value whether doubled or not
- swapping them therefore leaves the total unchanged
- measured over 180,000 swaps: 2.20% undetected, all of them 0 against 9
A checksum that is strong against mistyping and has one specific, well-known weakness. Worth knowing when you are reading a number off a document by eye.
Reading the result
- Compare Spain's DNI, which uses modulo 23 and caught every transposition in the same style of test. Luhn is popular because it is easy to compute by hand, not because it is the strongest option available.
- A valid partita IVA is not an active one. Italian VAT numbers are closed when a business ceases, and the digits do not change when that happens — only the register knows the current status, so check there before invoicing.
- The province code covers the first registration, not the current address. A company that has moved keeps its original code, so the province tells you where it started rather than where it is now.
- A generator is offered here because filling a test system with well-formed company numbers is ordinary work. Every number it emits satisfies the checksum and belongs to no real business.
Common questions
- How do I check whether a partita IVA is active?
- The Agenzia delle Entrate has a free online service that shows whether a partita IVA is active or has been closed. For invoicing within the EU, the VIES service checks the IT-prefixed form, but it only lists numbers enabled for intra-EU transactions. This tool checks the checksum and cannot see either register.
- What is the difference between partita IVA and codice fiscale?
- The partita IVA is the 11-digit VAT number of anyone carrying on a business, trade or profession. For companies the codice fiscale is also an 11-digit number and is often the same as the partita IVA. A sole trader or freelancer keeps their 16-character personal codice fiscale and receives a separate 11-digit partita IVA, so the two should not be mixed up on invoices.
- Why does my partita IVA fail validation?
- It must have exactly eleven digits; a leading IT, spaces and dashes are ignored, but leading zeros must be kept. If the length is right, the Luhn check digit does not match, which points to a mistyped digit. The reverse also happens: a 0 and a 9 swapped next to each other still pass, so a valid result does not rule out that particular slip.