Operatore inserisce nuovo cliente, scrive P.IVA: "01234567890". 10 cifre. Salva. Settimane dopo, fattura emessa, SDI la rifiuta: "P.IVA non valida". Cliente non riceve fattura, contestazione, ritardo pagamento. Tutto evitabile con validazione real-time al momento dell'inserimento.
I 3 livelli di validazione P.IVA
1. Formato
P.IVA italiana: 11 cifre esatte.
Validation: regex semplice /^\d{11}$/. Blocca subito errori grossolani.
2. Check digit (ISO 7064)
L'undicesima cifra è calcolata dalle prime 10 con algoritmo specifico:
- Somma cifre dispari posizione (1-3-5-7-9).
- Doppio cifre pari posizione (2-4-6-8-10), somma cifre risultanti.
- Somma totale modulo 10 → cifra di controllo.
"01234567890" fallisce questo check (cifra 11 non corrisponde). Sistema rifiuta immediatamente.
3. Esistenza reale (VIES)
VIES (VAT Information Exchange System): servizio UE per verificare P.IVA.
API gratuita: invii P.IVA italiana o europea, ricevi:
- P.IVA esiste? Sì/No.
- Ragione sociale registrata.
- Indirizzo registrato.
- Stato (attiva/cessata).
Validation più rigorosa: blocca P.IVA formalmente corrette ma cessate o mai esistite.
Validation italian + UE
Per clienti UE non italiani:
- Prefisso paese (DE, FR, ES, ecc.) + numero variabile.
- VIES verifica anche queste.
- Importante per fatturazione intracomunitaria (reverse charge).
Cosa succede senza validazione
| Errore | Conseguenza |
|---|---|
| P.IVA 10 cifre invece di 11 | SDI rifiuta fattura |
| Check digit errato | SDI rifiuta fattura |
| P.IVA cessata | SDI rifiuta + sanzione fiscale potenziale |
| P.IVA fittizia | Frode involontaria |
Costo medio fattura rifiutata: 50-200 € in tempo + ritardo incasso.
UX validation real-time
Best practice in modulo Anagrafiche:
Durante digitazione
- Counter cifre: "10/11".
- Colore campo: rosso se non valido, verde se valido.
Al blur del campo (uscita)
- Validation check digit.
- Eventuale chiamata VIES (con loader).
- Toast con risultato: "P.IVA verificata su VIES" o "Cessata, controlla".
Auto-completamento
Se VIES restituisce ragione sociale + indirizzo, suggerisci di auto-completare i campi anagrafica.
Casi limite
P.IVA pubblica amministrazione
Pubblica amministrazione ha P.IVA + Codice IPA. Validation entrambi.
Privati senza P.IVA
Solo Codice Fiscale. Validation algoritmo CF (16 caratteri).
Aziende estere extra-UE
VIES non copre. Validation solo formato e manuale.
Nuove aziende
P.IVA appena registrata può non essere ancora in VIES. Caching VIES per evitare false negative.
Configurazione strict vs warning
Modalità strict
P.IVA invalida: blocca salvataggio. Operatore deve correggere.
Adatto a aziende con disciplina forte.
Modalità warning
P.IVA invalida: avvertimento, ma permette salvataggio. Flag "anagrafica da verificare".
Adatto a aziende con casistica complessa (es. dati arrivati incompleti, da completare dopo).
I moduli Gestya correlati
Scopri Gestya con validation P.IVA real-time.