SAFTCheck
Documentación / header-dates
header.dates

Fechas de la cabecera — StartDate, EndDate, FiscalYear, DateCreated

Invariantes temporales que la AT impone sobre el bloque Header del SAF-T.

Qué comprueba la AT

El bloque Header del fichero SAF-T describe el periodo que cubre el fichero y cuándo se generó. La AT impone unas cuantas invariantes sobre estas fechas:

CampoRestricción
StartDateLa primera fecha que cubre el fichero.
EndDateDebe ser estrictamente posterior a StartDate.
FiscalYearDebe ser igual al año natural de StartDate.
DateCreatedDebe ser igual o posterior a EndDate — no se puede generar un fichero antes de que termine el periodo que cubre.

Subreglas que aplica SAFTCheck

  • header.dates.range — se dispara cuando StartDate ≥ EndDate.
  • header.dates.fiscal_year_mismatch — se dispara cuando FiscalYear no coincide con el año de StartDate (aviso).
  • header.dates.created_before_end — se dispara cuando DateCreated < EndDate (aviso; la AT todavía puede aceptarlo).
  • header.dates.future_end — se dispara cuando EndDate está en el futuro (aviso).

Errores comunes

  • Cambio de año. Un fichero de enero con FiscalYear=2025 pero StartDate=2026-01-01. El ERP cambió el año en un campo pero no en el otro.
  • Unidad de periodo incorrecta. Enviar un trimestre cuando la AT espera un mes — o al revés. Las fechas declaran la unidad; la incoherencia con la ventana de envío es otra comprobación del lado de la AT.
  • DateCreated establecida en pruebas. Los ficheros exportados durante la configuración del ERP a veces traen una DateCreated en el pasado o en el futuro respecto al momento real de generación.

Cómo corregir

  1. Revisa la selección del periodo de exportación en el ERP: la mayoría de los problemas vienen de elegir el mes de inicio/fin equivocado.
  2. Si las fechas están bien y solo FiscalYear está mal, edita el ajuste de año fiscal de la empresa en el ERP y vuelve a exportar. Para envíos puntuales, el editor en línea puede corregir FiscalYear directamente en la página del resultado.
  3. Si DateCreated está en el futuro o antes de EndDate, ajusta el reloj del sistema del ERP y vuelve a exportar — o usa el editor en línea para el fichero inmediato.

El aviso combinado header.dates.range (StartDate frente a EndDate) no se puede editar como un único campo — corrige StartDate o EndDate por separado con el editor en línea, o vuelve a exportar.

Relacionado

Otras reglas

Usamos una cookie de sesión para iniciar sesión, una cookie de idioma para la preferencia lingüística y Tawk.to para el widget de chat en vivo (que establece sus propias cookies al abrir el chat). Google Analytics (GA4) se carga solo después de que aceptes, con anonimización de IP; sin rastreadores publicitarios. Consulta nuestra Política de Privacidad.