Country Guide10 min readAlberto García

Italian VAT Number Validation: Partita IVA Format, VIES, and Code Examples

Italian Partita IVA numbers follow IT + 11 digits. The last digit is a computed check digit, and Italy's VIES endpoint is one of the less reliable in the EU — here is everything you need to build a resilient integration.

italyitpartita-iva

Italy is the EU's third-largest economy and a significant source of B2B customers for European platforms — particularly in manufacturing, fashion, food, and professional services. Validating Italian VAT numbers, the Partita IVA (abbreviated P.IVA or codice IVA), follows a simple numeric format, but Italy's VIES endpoint has historically been one of the less reliable in the EU, with higher downtime frequency than Germany or France. This guide covers the format, check digit structure, common errors, VIES behaviour specific to Italy, and complete code examples.

Note

Italian VAT numbers (Partita IVA) are issued and managed by the Agenzia delle Entrate. VIES routes Italian validation requests to the Agenzia delle Entrate system in real time. Italy participates fully in the EU VIES system.

The Italian VAT Number Format (Partita IVA)

An Italian VAT number consists of the prefix IT followed by exactly 11 digits — 13 characters in total. There are no letters after the prefix, no separators, and no variable length. A valid example is IT12345678901. The 11-digit number is entirely numeric and includes a check digit as the final (11th) character.

The check digit is computed using a variant of the Luhn algorithm applied to the first 10 digits. Implementing check digit validation client-side provides immediate feedback on structurally invalid numbers before making an API call. The TaxID API performs both format validation and check digit validation locally before making the VIES call — numbers with a failing check digit return format_invalid immediately without consuming your monthly quota.

One important distinction: the Partita IVA (for businesses) is different from the Codice Fiscale (for individuals). The Codice Fiscale is an alphanumeric personal tax code of 16 characters (letters and digits) and is not a VAT number. Italian sole traders (ditte individuali) have both a Codice Fiscale and a Partita IVA — the Partita IVA is what you need for VIES validation. If a customer provides a 16-character alphanumeric code, they have submitted their Codice Fiscale rather than their P.IVA.

PropertyValue
PrefixIT
Total length13 characters (IT + 11 digits)
FormatIT followed by 11 numeric digits
ExampleIT12345678901
Regex^IT[0-9]{11}$
VIES country codeIT
National authorityAgenzia delle Entrate
Local namePartita IVA (P.IVA / codice IVA)

Common Italian VAT Format Errors

  • Codice Fiscale submitted instead of P.IVA: the Codice Fiscale is 16 alphanumeric characters (e.g., RSSMRA80A01H501T). If you receive a 16-char alphanumeric string, ask the customer for their Partita IVA instead.
  • Missing IT prefix: '12345678901' instead of 'IT12345678901' — the most common input error.
  • Wrong digit count: Italian numbers are always 11 digits after IT. '1234567890' (10 digits) or '123456789012' (12 digits) are invalid.
  • Spaces or dots: inputs like 'IT 123 456 789 01' — strip all non-alphanumeric characters before validation.
  • Lowercase: 'it12345678901' — normalise to uppercase. The TaxID API handles this automatically.
  • P.IVA used for personal transactions: some Italian customers provide their personal Codice Fiscale for invoicing. Explain that only the Partita IVA (starting with IT + 11 digits) is valid for B2B reverse charge.

Italian Company Types and VAT Registration

The most common Italian legal forms for B2B customers are S.r.l. (Società a responsabilità limitata — equivalent to a GmbH or LLC), S.p.A. (Società per azioni — public company), S.a.s. (Società in accomandita semplice — limited partnership), S.n.c. (Società in nome collettivo — general partnership), and ditta individuale (sole trader). All VAT-registered entities, including sole traders operating above the forfettario (flat-rate) threshold, have a Partita IVA.

Italian sole traders and freelancers (liberi professionisti) operating under the regime forfettario — a flat-rate simplified tax regime with a revenue threshold of €85,000 in 2026 — are VAT-exempt and do not charge or reclaim VAT. They do have a Partita IVA for identification purposes, but it operates differently from an ordinary VAT registration. If a forfettario customer provides their P.IVA for reverse charge, VIES may return a result but their invoices to you will include a note stating they are not subject to VAT. Validate the number via VIES, but be aware that the reverse charge mechanism may not apply in the same way as for ordinarily registered businesses.

VIES and Italy's Agenzia delle Entrate: What to Expect

Italy's VIES endpoint has historically been one of the less reliable in the EU. The Agenzia delle Entrate system experiences unannounced downtime more frequently than the German BZST or French DGFiP systems, particularly around tax filing periods (end of quarter), August (when Italy effectively shuts down for the Ferragosto holiday period), and around the year-end reporting deadline. During these periods, service_unavailable responses for Italian validations are not unusual.

Italy generally returns company name via VIES, but address data is returned less consistently than Germany or France. For recently registered businesses or newly issued Partita IVA numbers, VIES may return valid: true but null for company_name while the registration propagates through the system. Wait 24-48 hours before concluding that a genuine Italian VAT number has no name data. Italian VAT validation via TaxID caches active results for 24 hours and inactive results for 1 hour.

Warning

Italy's VIES endpoint has above-average downtime frequency. For checkout flows accepting Italian B2B customers, the allow-and-re-validate pattern is especially important: allow the transaction when service_unavailable is returned and re-validate asynchronously within 24 hours. Blocking Italian customers at checkout due to VIES unavailability is a recurring pain point.

Italian VAT Rates

Italy applies a standard VAT rate of 22% to most goods and services. A 10% reduced rate applies to food and beverages for human consumption supplied by restaurants and catering, hotel accommodation, passenger transport, and certain construction services. A 5% reduced rate applies to specific social services, certain food products, and some agricultural goods. A super-reduced rate of 4% applies to essential food staples, books and newspapers, and certain accessibility equipment. Italy also applies specific exemptions to financial and insurance services.

For SaaS and digital services sold to Italian consumers (B2C), the applicable rate is 22%. For Italian B2B customers with a valid Partita IVA, zero-rate reverse charge applies. Italy fully participates in the EU OSS scheme — if your B2C EU revenue exceeds €10,000, use OSS rather than individual Italian VAT registration.

Code Examples

cURL

bash
# Validate an Italian VAT number (Partita IVA)
curl https://taxid.dev/api/v1/validate/IT/IT12345678901 \
  -H "Authorization: Bearer YOUR_API_KEY"

# Expected response:
# {
#   "valid": true,
#   "status": "active",
#   "vat": "IT12345678901",
#   "country_code": "IT",
#   "company_name": "Esempio S.r.l.",
#   "address": "Via Roma 1, 20121 Milano",
#   "cached": false,
#   "request_id": "req_01j..."
# }

Node.js / TypeScript

typescriptvalidate-italian-vat.ts
export async function validateItalianVat(vatNumber: string): Promise<{
  valid: boolean;
  companyName: string | null;
  address: string | null;
  status: string;
}> {
  const normalised = vatNumber.replace(/\s/g, '').toUpperCase();

  // IT + exactly 11 digits
  if (!/^IT[0-9]{11}$/.test(normalised)) {
    return { valid: false, companyName: null, address: null, status: 'format_invalid' };
  }

  const res = await fetch(
    `https://taxid.dev/api/v1/validate/IT/${normalised}`,
    {
      headers: { Authorization: `Bearer ${process.env.TAXID_API_KEY}` },
      signal: AbortSignal.timeout(8000), // Italy VIES can be slower
    }
  );

  const data = await res.json();
  return {
    valid: data.valid,
    companyName: data.company_name,
    address: data.address,
    status: data.status,
  };
}

Python

pythonvalidate_italian_vat.py
import re, os, requests
from dataclasses import dataclass
from typing import Optional

IT_PATTERN = re.compile(r'^IT[0-9]{11}$')

@dataclass
class ItalianVatResult:
    valid: bool
    company_name: Optional[str]
    address: Optional[str]
    status: str

def validate_italian_vat(vat: str) -> ItalianVatResult:
    normalised = vat.replace(' ', '').upper()
    if not IT_PATTERN.match(normalised):
        return ItalianVatResult(False, None, None, 'format_invalid')

    r = requests.get(
        f'https://taxid.dev/api/v1/validate/IT/{normalised}',
        headers={'Authorization': f'Bearer {os.environ["TAXID_API_KEY"]}'},
        timeout=8,  # Italy VIES can be slower
    )
    r.raise_for_status()
    d = r.json()
    return ItalianVatResult(
        valid=d['valid'],
        company_name=d.get('company_name'),
        address=d.get('address'),
        status=d['status'],
    )

Frequently Asked Questions

  • What is the difference between Partita IVA and Codice Fiscale? The Codice Fiscale is a 16-character alphanumeric personal tax code for individuals. The Partita IVA is the business VAT number (IT + 11 digits) used for VIES and reverse charge. Sole traders have both; only the Partita IVA is relevant for EU VAT validation.
  • Is IT always the VIES code for Italy? Yes. Italy uses IT as its ISO code and VIES prefix — no mismatch.
  • Does Italy's VIES always return company name and address? Company name is returned in most cases. Address is returned less consistently than in Germany or France. Newly registered numbers may have null company_name for 24-48 hours while registration propagates.
  • Why does Italy's VIES take longer than other countries? The Agenzia delle Entrate system is one of the slower and less reliable VIES endpoints. Response times of 600-1200ms are not unusual, and downtime is more frequent around Italian public holidays and tax filing periods.
  • What happens during Ferragosto (August)? August sees elevated VIES downtime for Italy specifically. Implement the allow-and-re-validate pattern and expect higher service_unavailable rates during the first three weeks of August.

Validating Italian VAT Numbers at Scale

Italy's VIES unreliability makes caching especially important at scale. TaxID caches active Italian VAT results for 24 hours, so repeated lookups for the same P.IVA number — common in B2B SaaS where the same customer triggers validation at signup, at each invoice, and at renewal — hit the cache rather than the Agenzia delle Entrate system. For bulk validation of Italian supplier records, run in off-peak hours (early morning CET) to avoid peak Agenzia delle Entrate load. Store the request_id from each API response as an audit trail. For the complete format reference and live validator, see validate-vat/it.

Start validating EU VAT numbers

Free plan — 100 validations/month. No credit card required.

AG
Alberto García

Founder, TaxID

Building EU VAT validation tools for developers. Obsessed with compliance automation and developer experience.