Partita IVA & Codice Fiscale validator
Check Italian VAT numbers (11 digits) and fiscal codes (16 characters) in bulk, or pull them out of a page footer. Italian sites are legally required to show the Partita IVA, so it is usually there.
Nothing yet. Paste numbers or a page on the left, or load the sample.
Runs entirely in your browser. A passing check means the number is well-formed, not that it is registered or active. Categories are inferred from the number format.
What gets checked
- Partita IVA: an 11-digit number whose last digit is a Luhn-style check digit.
- Digits 1-7 are the taxpayer serial; digits 8-10 are the issuing tax-office code.
- Codice Fiscale: 16 characters, with the check letter computed from odd/even position tables. Day of birth plus 40 means female.
- Extraction looks for labels such as P.IVA, Partita IVA, C.F. and Codice Fiscale.
To confirm a number is registered and active, use Agenzia delle Entrate. The Agenzia delle Entrate's VerificaPIVA service and VIES confirm whether a Partita IVA is active.
What the number tells you
| 11 digits | Partita IVA: business or self-employed VAT number |
| Digits 8-10 = 001-100 | Issued by a provincial tax office |
| Digits 8-10 = 888 / 999 | Special central assignments |
| 16 characters | Codice Fiscale of an individual (sex, birth date, place code) |
Run the same checks in your own code
def partita_iva_ok(p: str) -> bool:
p = p.replace(" ", "").upper().removeprefix("IT")
if len(p) != 11 or not p.isdigit():
return False
total = 0
for i, d in enumerate(map(int, p[:10])):
if i % 2 == 0:
total += d
else:
x = d * 2
total += x - 9 if x > 9 else x
return (10 - total % 10) % 10 == int(p[10])
p = "00743110157"
print(partita_iva_ok(p), "office", p[7:10]) # True office 015Collect the numbers from company websites
A browser can't fetch other sites for you. Irmu fetches the page, handles rendering and blocking, and ai_query (+5 credits) returns the fields you ask for.
# Fetch a company's legal page with Irmu and let ai_query pull the IDs out,
# then validate them locally with the functions above.
import os, requests
resp = requests.get(
"https://app.irmu.com/api/crawl",
headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"},
params={
"url": "https://example.com/legal",
"js": "true",
"ai_query": "Find the company name, Partita IVA and REA number on this page (usually in the footer). Return JSON: {name, partita_iva, rea}.",
},
timeout=120,
)
resp.raise_for_status()
print(resp.json()["data"])Build a verified company database
Fetch legal pages at scale with one API. 200 free credits every month, no card required.