Cómo leer un mensaje de Portugal SAF-T (PT) File Checks
Cada aviso trae un texto que en muchos casos termina en %s o lleva %d en medio. Ese hueco es donde el módulo inserta el dato concreto: el detalle del fallo, el valor que tienes guardado, una dirección o el número de intentos. Cuando veas los dos puntos seguidos de un texto, esa parte es la que te dice qué ha pasado en tu caso.
En la tabla de abajo los mensajes aparecen tal como los escribe el módulo, con %s y %d en su sitio. En tu pantalla verás el dato real en lugar de esos marcadores.
Tabla de errores: mensaje, cuándo sale y qué hacer
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
SAF-T generation failed: %s | Falla la generación del archivo SAF-T. | Lee el detalle tras los dos puntos y corrige lo que indique antes de volver a generar. |
No SAF-T file generated. Run generation first. | Aún no hay archivo SAF-T generado. | Genera el archivo primero, como pide el mensaje. |
SAF-T validation failed. Check validation log for details. | La validación del archivo SAF-T no pasa. | Abre el registro de validación (validation log) y revisa el detalle. |
SAF-T validation failed: %s | La validación falla y el mensaje trae el motivo. | Lee el motivo tras los dos puntos. |
Failed to fetch SAF-T schema from %s: %s | No se puede obtener el esquema SAF-T desde una dirección. | El mensaje muestra la dirección y el detalle: revisa ambos. |
SAF-T file must be an XML file | El archivo SAF-T no es un XML. | Usa un archivo XML. |
Period start must be before period end | El inicio del período no es anterior al fin. | Corrige las fechas para que el inicio quede antes que el fin. |
XML export failed: %s | Falla la exportación a XML. | Lee el detalle tras los dos puntos. |
CSV export failed: %s | Falla la exportación a CSV. | Lee el detalle tras los dos puntos. |
Annual statistics generation failed: %s | Falla la generación de estadísticas anuales. | Lee el detalle tras los dos puntos. |
NIF must be exactly 9 digits. Current value: %s | El NIF no tiene exactamente 9 dígitos. | El mensaje enseña el valor actual: déjalo con exactamente 9 dígitos. |
Invalid ATCUD endpoint URL format | El formato de la URL del endpoint ATCUD no es válido. | Revisa cómo está escrita la URL del endpoint. |
ATCUD certificate and key must be configured in SAF-T settings | El certificado y la clave de ATCUD no están configurados. | Configúralos en los ajustes de SAF-T. |
ATCUD rejected the submission. Check error log for details. | ATCUD rechaza el envío. | Revisa el registro de errores (error log). |
Failed to contact ATCUD after %d attempts. Try again later. | No se logra contactar con ATCUD tras varios intentos; el mensaje dice cuántos. | Inténtalo más tarde. |
ATCUD submission failed. Please try again later. | Falla el envío a ATCUD. | Inténtalo más tarde. |
Submission can only be retried from error state | Intentas reintentar un envío que no está en estado de error. | Reintenta solo envíos en estado de error. |
No submissions found for this company | No hay envíos para esa empresa. | Comprueba que es la empresa que querías consultar. |
No email configured for company | La empresa no tiene correo configurado. | Configura el correo de la empresa. |
Email test failed: %s | Falla la prueba de correo. | Lee el detalle tras los dos puntos. |
Several contacts match "%s": enter the email or the tax ID of the data subject. | Varios contactos coinciden con lo que has indicado. | Escribe el email o el identificador fiscal (tax ID) del interesado. |
DSAR processing failed: %s | Falla el procesamiento DSAR. | Lee el detalle tras los dos puntos. |
NIF, URL, correo y certificado: los avisos de datos
Un grupo de mensajes tiene que ver con datos que rellenas tú. El del NIF es el más directo: pide exactamente 9 dígitos y te enseña lo que hay guardado (Current value: %s), así ves de un vistazo qué sobra o qué falta. El de la URL (Invalid ATCUD endpoint URL format) solo dice que el formato no es válido, así que lo que toca es revisar cómo está escrita esa dirección.
Para enviar a ATCUD, el módulo pide certificado y clave en los ajustes de SAF-T: si no están, sale ATCUD certificate and key must be configured in SAF-T settings. Con el correo pasa algo parecido: No email configured for company indica que la empresa no tiene correo, y Email test failed: %s aparece cuando la prueba de correo no sale bien, con el detalle al final.

Los que te mandan al log o a esperar
Dos mensajes no traen el detalle dentro y te remiten a otro sitio: SAF-T validation failed. Check validation log for details. te manda al registro de validación, y ATCUD rejected the submission. Check error log for details. al registro de errores. En esos casos, la causa no está en la ventana del aviso, sino en el log que nombra el mensaje.
Otros dos solo piden paciencia: Failed to contact ATCUD after %d attempts. Try again later. y ATCUD submission failed. Please try again later. El primero te dice cuántos intentos ha hecho el módulo. En ambos, lo que indica el texto es volver a intentarlo más tarde.

Invoicing › SAF-T Error Logs: cinco registros con fecha, tipo, severidad y mensaje, y el indicador de resuelto sin marcar.Generar, validar y reintentar: el orden que marcan los mensajes
Algunos avisos te dicen en qué orden trabajar. No SAF-T file generated. Run generation first. deja claro que primero hay que generar el archivo SAF-T. Submission can only be retried from error state marca que el reintento de un envío solo vale desde el estado de error. Y Period start must be before period end te obliga a que el inicio del período sea anterior al fin.
Si lo que te falla es el archivo en sí, fíjate en SAF-T file must be an XML file y en los de exportación (XML export failed: %s, CSV export failed: %s), que llevan el detalle al final. Para ver qué ajustes y estados recorre cada registro, tienes la puesta en marcha del módulo, y para los menús y tareas, cómo funciona por dentro.

Invoicing › SAF-T Accounting › Generate SAF-T Files: seis registros en Draft, Generated, Validated, Validation Failed y Submitted, con tamaño de archivo y transacciones a cero.
Draft o Exported) a la lista de errores y a la de archivos SAF-T generados.Cómo te ayuda FlexigoTech
Si un mensaje te deja bloqueado o quieres revisar la configuración antes de enviar, en FlexigoTech implantamos Odoo 17, 18, 19 y 20 y desarrollamos conectores e integraciones a medida. El módulo cuesta 9 € por versión de Odoo en Odoo Apps, pago único sin IVA, para 17, 18, 19 y 20 (ficha en Odoo Apps); el servicio local de FlexigoTech Cloud son 29 €/mes o 290 €/año sin IVA. Tienes todos los detalles en la página del módulo.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_annual_statistics.py
- Código del módulo: flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_config.py
- Código del módulo: flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_dsar_request.py
- Código del módulo: flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_exporter.py
- Código del módulo: flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_submission.py
- apps.odoo.com/apps/modules/20.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/17.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/18.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/19.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
