4 min di lettura
XSD del SAF-T (PT) 1.04_01: download ufficiale e cosa è cambiato nel 2022
Dove scaricare lo schema ufficiale del SAF-T (PT), la versione in vigore nel 2026, in cosa differisce dal file del 2016 che molti strumenti includono ancora e come validare con esso.
La versione in vigore: 1.04_01
La struttura del SAF-T (PT) in vigore è la versione 1.04_01, introdotta dalla Portaria n.º 302/2016 con effetto dal 1° gennaio 2017. Il namespace XML è urn:OECD:StandardAuditFile-Tax:PT_1.04_01 e ogni file inviato dichiara <AuditFileVersion>1.04_01</AuditFileVersion> nell'intestazione. A settembre 2026 l'AT non ha annunciato alcuna versione 1.05.
Download ufficiale
L'AT pubblica lo schema sul Portal das Finanças:
https://info.portaldasfinancas.gov.pt/apps/saft-pt04/SAFTPT1.04_01.xsd
Scaricalo sempre da lì, non da una copia inclusa in una libreria o in un vecchio progetto. Il file è codificato in Windows-1252, come i file SAF-T stessi.
Stesso numero di versione, due file diversi
L'AT ha rivisto l'XSD il 17 maggio 2022 senza cambiare il numero di versione. Molti strumenti e librerie includono ancora il file del 2016, e i due non accettano gli stessi documenti:
| Cosa | File del 2016 | File del 2022 (attuale) |
|---|---|---|
Header/CompanyAddress | Il codice postale deve essere nel formato NNNN-NNN; il paese è fisso a PT | Qualsiasi codice postale fino a 20 caratteri; qualsiasi codice paese |
| Codici valuta | Senza SLE né VED | L'elenco ISO 4217 include SLE e VED |
HashControl dei documenti emessi manualmente | Il riferimento dopo M può contenere barre aggiuntive | Deve essere un'unica serie/numero, senza barre aggiuntive né spazi |
In pratica, la validazione con il file del 2016 segnala come non valide le aziende con indirizzo all'estero o con un codice postale in un formato insolito, anche se l'AT le accetta. SAFTCheck valida con il file del 2022.
L'ATCUD nell'XSD
Lo schema dichiara l'ATCUD solo come testo fino a 100 caratteri. Non ne definisce il formato: questo deriva dalla Portaria n.º 195/2020 (articolo 3), che richiede il codice di validazione della serie assegnato dall'AT (almeno 8 caratteri), un trattino e il numero sequenziale del documento. Un file può quindi superare l'XSD con un ATCUD malformato ed essere comunque rifiutato. Verifica un ATCUD o leggi le regole del formato e gli errori comuni.
Validare con l'XSD in autonomia
Il file usa funzionalità di XSD 1.1: dichiara vc:minVersion="1.1" e contiene regole xs:assert. Xerces di Java (in modalità XSD 1.1) lo gestisce. libxml2, su cui si basano PHP, lxml di Python e xmllint, non supporta XSD 1.1. Con libxml2 occorre rimuovere gli elementi xs:assert e trasformare il blocco xs:all in GeneralLedgerEntries (le Lines dei registri) in un xs:choice illimitato, perché libxml2 rifiuta maxOccurs="unbounded" dentro xs:all.
Quegli assert verificano regole di business reali, ad esempio che una riga ad aliquota zero indichi il motivo di esenzione. Un file che supera uno schema semplificato può comunque essere rifiutato.
Il controllo più rapido
Se ti serve solo sapere se un file passa, caricalo su SAFTCheck. Valida con lo schema attuale del 2022 ed esegue anche i controlli che l'XSD non può esprimere: codifica, BOM, cifre di controllo del NIF, ATCUD, date dell'intestazione e totali. La prima validazione è gratuita e non richiede un account, e i file vengono eliminati entro 60 minuti.
Correlati: come validare un SAF-T (PT) prima dell'invio all'AT e l'errore di codifica UTF-8.