4 min de lectura
XSD del SAF-T (PT) 1.04_01: descarga oficial y qué cambió en 2022
Dónde descargar el esquema oficial del SAF-T (PT), la versión vigente en 2026, en qué se diferencia del fichero de 2016 que muchas herramientas aún incluyen y cómo validar con él.
La versión vigente: 1.04_01
La estructura del SAF-T (PT) vigente es la versión 1.04_01, aprobada por la Portaria n.º 302/2016, con efectos desde el 1 de enero de 2017. Su namespace XML es urn:OECD:StandardAuditFile-Tax:PT_1.04_01 y todos los ficheros enviados declaran <AuditFileVersion>1.04_01</AuditFileVersion> en la cabecera. En septiembre de 2026, la AT no ha anunciado ninguna versión 1.05.
Descarga oficial
La AT publica el esquema en el Portal das Finanças:
https://info.portaldasfinancas.gov.pt/apps/saft-pt04/SAFTPT1.04_01.xsd
Descárgalo siempre de ahí, y no de una copia incluida en una biblioteca o en un proyecto antiguo. El fichero está codificado en Windows-1252, igual que los propios ficheros SAF-T.
El mismo número de versión, dos ficheros distintos
La AT revisó el XSD el 17 de mayo de 2022 sin cambiar el número de versión. Muchas herramientas y bibliotecas todavía incluyen el fichero de 2016, y los dos no aceptan los mismos documentos:
| Qué | Fichero de 2016 | Fichero de 2022 (actual) |
|---|---|---|
Header/CompanyAddress | El código postal debe seguir el formato NNNN-NNN; el país es fijo en PT | Cualquier código postal de hasta 20 caracteres; cualquier código de país |
| Códigos de moneda | Sin SLE ni VED | La lista ISO 4217 incluye SLE y VED |
HashControl de documentos emitidos manualmente | La referencia después de M puede contener barras adicionales | Debe ser una única serie/número, sin barras adicionales ni espacios |
En la práctica, validar con el fichero de 2016 marca como inválidas las empresas con dirección en el extranjero o con un código postal fuera del formato habitual, aunque la AT las acepte. SAFTCheck valida con el fichero de 2022.
El ATCUD en el XSD
El esquema solo declara el ATCUD como texto de hasta 100 caracteres. No define el formato: este viene de la Portaria n.º 195/2020 (artículo 3), que exige el código de validación de la serie asignado por la AT (al menos 8 caracteres), un guion y el número secuencial del documento. Por eso un fichero puede pasar el XSD con un ATCUD mal formado y aun así ser rechazado. Comprueba un ATCUD o lee las reglas del formato y los errores habituales.
Validar con el XSD por tu cuenta
El fichero usa funciones de XSD 1.1: declara vc:minVersion="1.1" y contiene reglas xs:assert. Xerces de Java (en modo XSD 1.1) lo procesa. libxml2, en la que se basan PHP, lxml de Python y xmllint, no admite XSD 1.1. Con libxml2 hay que eliminar los elementos xs:assert y convertir el bloque xs:all de GeneralLedgerEntries (las Lines de los diarios) en un xs:choice ilimitado, porque libxml2 rechaza maxOccurs="unbounded" dentro de xs:all.
Esos asserts comprueban reglas de negocio reales, por ejemplo que una línea con tipo cero indique el motivo de exención. Un fichero que pasa un esquema simplificado puede ser rechazado igualmente.
La comprobación más rápida
Si solo necesitas saber si un fichero pasa, súbelo a SAFTCheck. Valida con el esquema actual de 2022 y además realiza las comprobaciones que el XSD no puede expresar: codificación, BOM, dígitos de control del NIF, ATCUD, fechas de la cabecera y totales. La primera validación es gratuita y no requiere cuenta, y los ficheros se eliminan en 60 minutos.
Relacionado: cómo validar un SAF-T (PT) antes de enviarlo a la AT y el error de codificación UTF-8.