Irmu
Free tool

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.

0/0 valid
One number per line
Results

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.

How it works

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.

Categorisation

What the number tells you

11 digitsPartita IVA: business or self-employed VAT number
Digits 8-10 = 001-100Issued by a provincial tax office
Digits 8-10 = 888 / 999Special central assignments
16 charactersCodice Fiscale of an individual (sex, birth date, place code)
Code examples

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 015
With Irmu

Collect 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.

collect_ids.py
# 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"])
FAQ

Questions

Build a verified company database

Fetch legal pages at scale with one API. 200 free credits every month, no card required.