Back to Blog

Italian Region Codes: Complete ISO 3166-2 Guide

Complete list of Italian region and province codes (ISO 3166-2:IT). All 20 regions with codes, plus key provinces and TypeScript examples.

Italian Region Codes: Complete ISO 3166-2 Guide

Italy is divided into 20 regions and over 100 provinces, all with standardized ISO 3166-2 codes. These codes are used in address forms, shipping, tax calculations, and e-commerce applications serving the Italian market.

This page lists every Italian region, highlights key provinces, and shows how to work with them using @koshmoney/countries.

All 20 Italian Regions

Italy's 20 regions are the primary administrative divisions. Five of them have special autonomous status (marked below).

Northern Regions

CodeNameCapitalAutonomous
IT-21PiemonteTurinNo
IT-23Val d'AosteAostaYes
IT-25LombardiaMilanNo
IT-32Trentino-Alto AdigeTrentoYes
IT-34VenetoVeniceNo
IT-36Friuli-Venezia GiuliaTriesteYes
IT-42LiguriaGenoaNo
IT-45Emilia-RomagnaBolognaNo

Central Regions

CodeNameCapitalAutonomous
IT-52ToscanaFlorenceNo
IT-55UmbriaPerugiaNo
IT-57MarcheAnconaNo
IT-62LazioRomeNo

Southern Regions

CodeNameCapitalAutonomous
IT-65AbruzzoL'AquilaNo
IT-67MoliseCampobassoNo
IT-72CampaniaNaplesNo
IT-75PugliaBariNo
IT-77BasilicataPotenzaNo
IT-78CalabriaCatanzaroNo

Islands

CodeNameCapitalAutonomous
IT-82SiciliaPalermoYes
IT-88SardegnaCagliariYes

Key Provinces

Italy has over 100 provinces (type "Province" in ISO 3166-2). Here are the most commonly referenced:

CodeProvinceRegion
IT-RMRomaLazio
IT-MIMilanoLombardia
IT-NANapoliCampania
IT-TOTorinoPiemonte
IT-FIFirenzeToscana
IT-BOBolognaEmilia-Romagna
IT-GEGenovaLiguria
IT-VEVeneziaVeneto
IT-PAPalermoSicilia
IT-BABariPuglia
IT-CACagliariSardegna
IT-BZBolzanoTrentino-Alto Adige
IT-TNTrentoTrentino-Alto Adige
IT-TSTriesteFriuli-Venezia Giulia

Understanding Italian Subdivision Codes

Italy uses two different code patterns:

Regions use 2-digit numeric codes:

ComponentExampleMeaning
Country prefixITItaly
Separator-Standard delimiter
Region number62Lazio
Full codeIT-62Lazio, Italy

Provinces use 2-letter alphabetic codes:

ComponentExampleMeaning
Country prefixITItaly
Separator-Standard delimiter
Province codeRMRoma
Full codeIT-RMRoma (Province), Italy

[!NOTE] Region codes use non-contiguous numbers (21, 23, 25, 32, 34...) that reflect historical administrative numbering, not a sequential count.

Using Italian Codes in Code

Look Up a Subdivision

import { subdivision } from '@koshmoney/countries';
 
// Region
subdivision.whereCode('IT-25');
// { code: 'IT-25', name: 'Lombardia', type: 'Region', countryCode: 'IT' }
 
// Province
subdivision.whereCode('IT-MI');
// { code: 'IT-MI', name: 'Milano', type: 'Province', countryCode: 'IT' }

Get All Italian Subdivisions

import { subdivision } from '@koshmoney/countries';
 
const allIT = subdivision.forCountry('IT');
 
// Filter by type
const regions = allIT.filter(s => s.type === 'Region');
console.log(regions.length);  // 20
 
const provinces = allIT.filter(s => s.type === 'Province');
console.log(provinces.length);  // 100+

Validate a Code

import { subdivision } from '@koshmoney/countries';
 
subdivision.isValidCode('IT-25');    // true (Lombardia)
subdivision.isValidCode('IT-RM');    // true (Roma)
subdivision.isValidCode('IT-XX');    // false
 
subdivision.isValidRegion('IT', 'MI');  // true (Milano)

Tree-Shaking for Italian Data Only

import '@koshmoney/countries/subdivision/IT';
import { whereCode, forCountry } from '@koshmoney/countries/subdivision';
 
const lombardia = whereCode('IT-25');
const allIT = forCountry('IT');

Postal Code System

Italy uses a 5-digit postal code (CAP -- Codice di Avviamento Postale). The first two digits indicate the province:

First DigitsProvince / Area
00Roma
10Torino
20Milano
30Venezia, Padova
40Bologna
50Firenze
60Ancona
70Bari
80Napoli
90Palermo
import { postalCode } from '@koshmoney/countries';
 
postalCode.isValid('IT', '00100');  // true (Roma)
postalCode.isValid('IT', '20121');  // true (Milano)
postalCode.isValid('IT', '1234');   // false (only 4 digits)

EU Membership and Currency

Italy is a founding EU member and uses the Euro:

import { membership } from '@koshmoney/countries/membership';
import { currency } from '@koshmoney/countries/currency';
 
membership.getMemberships('IT');
// { EU: true, SEPA: true, EEA: true, Eurozone: true, Schengen: true }
 
currency.getCurrency('IT');
// { code: 'EUR', symbol: '\u20ac', name: 'Euro' }

Common Use Cases

Address Forms

Italian address forms require the province code (sigla provincia). This is the 2-letter ISO code:

import { subdivision } from '@koshmoney/countries';
 
const provinces = subdivision.forCountry('IT')
  .filter(s => s.type === 'Province');
 
const dropdown = provinces.map(p => ({
  label: `${p.name} (${p.code.split('-')[1]})`,
  value: p.code,
}));
// [{ label: 'Agrigento (AG)', value: 'IT-AG' }, ...]

E-Commerce and Codice Fiscale

The Italian tax code (Codice Fiscale) encodes the province of birth. Province codes from ISO 3166-2 align with the codes used in official documents:

import { subdivision } from '@koshmoney/countries';
 
function validateProvince(provinceCode: string): boolean {
  return subdivision.isValidCode(`IT-${provinceCode}`);
}
 
validateProvince('RM');  // true
validateProvince('XX');  // false

North/South Regional Analysis

Italian economic data is often analyzed by macro-region. Region codes help classify:

const northRegions = new Set(['IT-21', 'IT-23', 'IT-25', 'IT-32', 'IT-34', 'IT-36', 'IT-42', 'IT-45']);
const centralRegions = new Set(['IT-52', 'IT-55', 'IT-57', 'IT-62']);
const southRegions = new Set(['IT-65', 'IT-67', 'IT-72', 'IT-75', 'IT-77', 'IT-78', 'IT-82', 'IT-88']);
 
function getMacroRegion(regionCode: string): string {
  if (northRegions.has(regionCode)) return 'north';
  if (centralRegions.has(regionCode)) return 'central';
  if (southRegions.has(regionCode)) return 'south';
  return 'unknown';
}