Validazione del codice fiscale: che cosa viene controllato davvero
Validare un codice fiscale significa applicare cinque controlli in sequenza (lunghezza e forma, caratteri ammessi posizione per posizione, coerenza della data, carattere di controllo ed esistenza del comune), nessuno dei quali dimostra che quel codice sia stato attribuito a una persona. Ogni livello superato restringe il campo; l’ultimo passo, l’attribuzione, resta fuori dalla portata di qualunque calcolo.
Che cosa significa validare
«Codice fiscale valido» è un’espressione che indica due cose molto diverse a seconda di chi la usa. Per un modulo, per un gestionale o per una libreria significa costruito secondo le regole: un giudizio che si formula guardando il solo codice, senza consultare nulla. Per l’ufficio che riceve quel codice significa attribuito a un contribuente: un giudizio che richiede un archivio.
Questa pagina descrive il primo dei due, che è l’unico realizzabile con un calcolo. È utile scomporlo, perché un validatore si ferma quasi sempre molto prima di quanto chi lo usa immagini.
I cinque livelli, in ordine
I controlli sono cumulativi: ciascuno intercetta una classe di errori che il precedente lascia passare. La terza colonna è la più istruttiva, perché dice che cosa si sta ancora accettando dopo aver superato quel livello.
| # | Livello | Che cosa lascia comunque passare |
|---|---|---|
| 1 | Lunghezza e formasedici caratteri disposti secondo lo schema posizionale | una lettera che non corrisponde ad alcun mese |
| 2 | Caratteri ammessi per posizionequali lettere e quali cifre sono lecite in ciascuna posizione | una data impossibile, come il giorno 99 |
| 3 | Coerenza della datache mese, giorno e anno formino una data realmente esistita | un carattere di controllo sbagliato |
| 4 | Carattere di controllola coerenza interna dei primi quindici caratteri | un codice di comune che non esiste |
| 5 | Esistenza del comuneche il codice Belfiore sia presente nel registro | un codice mai attribuito ad alcuna persona |
1. Lunghezza e forma
Il codice fiscale di una persona fisica è lungo esattamente sedici caratteri, disposti in una successione fissa: sei lettere, due cifre, una lettera, due cifre, una lettera, tre cifre e una lettera finale. Prima di misurare la lunghezza conviene normalizzare l’ingresso (tutto in maiuscolo, spazi e punteggiatura rimossi), altrimenti un codice trascritto a gruppi viene respinto per un motivo che non ha nulla a che vedere con la sua validità.
Un codice di undici cifre non va respinto come «errato»: appartiene a un altro formato, che questi controlli non riguardano.
2. Caratteri ammessi per posizione
La forma da sola non basta, perché non tutte le lettere sono lecite ovunque. In nona posizione, quella del mese, sono ammesse soltanto dodici lettere:
Le altre quattordici lettere dell’alfabeto, in quella posizione, rendono il codice non valido, ed è un errore che nessun controllo di sola forma intercetta. La tabella completa delle lettere dei mesi.
Nelle sette posizioni numeriche (la 7, la 8, la 10, la 11, la 13, la 14 e la 15) le cifre non sono gli unici caratteri leciti. L’omocodia sostituisce le cifre con dieci lettere ben precise (L M N P Q R S T U V), e i codici che ne risultano sono attribuiti dall’Agenzia delle Entrate: un validatore che li rifiuta sta segnalando come errato un codice legittimo. È una causa ricorrente di falsi negativi.
3. Coerenza della data
Con i caratteri giusti al posto giusto si può leggere la data, e qui i controlli diventano tre. La lettera del mese deve corrispondere a un mese reale. Il giorno deve cadere fra 01 e 31 per gli uomini e fra 41 e 71 per le donne, al cui giorno di nascita si sommano quaranta. E la data risultante deve essere esistita davvero: il 31 aprile e il 30 febbraio superano entrambi i primi due controlli.
L’anno è indicato con due sole cifre, quindi il secolo non è scritto nel codice. Un validatore serio non può dedurlo, ma può escludere l’assurdo: una data di nascita successiva a oggi va riportata al secolo precedente, altrimenti si finisce per attribuire a una persona un’età negativa.
4. Carattere di controllo
Il sedicesimo carattere è calcolato sui primi quindici con due tabelle distinte, una per le posizioni dispari e una per quelle pari. È l’unico controllo che verifica la coerenza interna del codice e non solo la plausibilità dei suoi pezzi: intercetta sempre il singolo carattere sbagliato, lettera o cifra che sia, e, grazie alle due tabelle, quasi sempre anche lo scambio di due caratteri adiacenti.
È anche il controllo che più facilmente viene omesso: capita che uno strumento online restituisca la data di nascita anche quando il sedicesimo carattere è sbagliato, senza alcuna segnalazione. Come si calcola, passo per passo.
5. Esistenza del comune
Le posizioni dalla 12 alla 15 contengono il codice Belfiore del luogo di nascita: una lettera seguita da tre cifre. Il carattere di controllo non se ne accorge se quel codice non corrisponde a nulla, perché il calcolo funziona su qualunque combinazione. Serve un registro: l’elenco ISTAT dei comuni italiani ne conta 7.896, ai quali si aggiungono i codici che iniziano per Z, riservati agli Stati esteri.
Il limite invalicabile
Superati tutti e cinque i livelli, quello che si è dimostrato è che il codice è costruito correttamente. Non che esista.
La ragione è nell’algoritmo stesso: il codice fiscale è una funzione di cognome, nome, data di nascita, sesso e comune, e la funzione si applica a qualunque insieme di dati, inventati compresi. Un codice generato da una persona che non esiste supera tutti i controlli, perché non c’è nulla di irregolare nel modo in cui è stato costruito.
L’unico soggetto che può dire se un codice fiscale è stato attribuito è l’Agenzia delle Entrate, attraverso il proprio servizio di verifica. Vale la pena notare che nemmeno quel servizio restituisce il nominativo: conferma l’esistenza, non l’identità. Perché il nome non è ricavabile.
Prova un codice
Lo strumento applica i primi quattro livelli mentre scrivi e dichiara quale fallisce: se il carattere di controllo non torna riporta sia quello trovato sia quello atteso, e se incontra una sostituzione da omocodia la segnala anziché respingere il codice. Sul quinto si ferma un passo prima: risolve il codice Belfiore nel comune corrispondente e, quando non lo trova nel registro, lo mostra così com’è invece di dichiarare il codice errato. La stessa lettura, sui sedici caratteri completi, è quella della pagina di calcolo del codice fiscale inverso.
Se devi implementarlo
Una sola avvertenza, che riassume tutto: un’espressione regolare copre i primi due livelli e non oltre. È la scelta giusta per filtrare l’ingresso di un modulo, ma chiamarla «validazione del codice fiscale» è ciò che porta a considerare validi codici con la data sbagliata e a rifiutare quelli omocodici. L’espressione regolare corretta e i suoi limiti.
Se devi controllare molti codici in una volta, la verifica multipla accetta un elenco incollato e applica a ogni riga gli stessi controlli, con lo stesso comportamento sul quinto livello.
Domande frequenti
Fonte: DM 23 dicembre 1976 (Ministero delle Finanze) per lo schema e il carattere di controllo · ISTAT, elenco dei comuni italiani, per i codici Belfiore · Agenzia delle Entrate per la verifica dell’attribuzione. Fonti e metodo