SAFTCheck
Documentação / header-dates
header.dates

Datas do cabeçalho — StartDate, EndDate, FiscalYear, DateCreated

Invariantes temporais que a AT impõe no bloco Header do SAF-T.

O que a AT verifica

O bloco Header do ficheiro SAF-T descreve o período que o ficheiro cobre e quando foi gerado. A AT impõe algumas invariantes sobre estas datas:

CampoRestrição
StartDateA primeira data coberta pelo ficheiro.
EndDateTem de ser estritamente posterior a StartDate.
FiscalYearTem de ser igual ao ano civil de StartDate.
DateCreatedDeve ser igual ou posterior a EndDate — não se pode gerar um ficheiro antes do fim do período que cobre.

Sub-regras que o SAFTCheck aplica

  • header.dates.range — dispara quando StartDate ≥ EndDate.
  • header.dates.fiscal_year_mismatch — dispara quando FiscalYear não corresponde ao ano de StartDate (aviso).
  • header.dates.created_before_end — dispara quando DateCreated < EndDate (aviso; a AT ainda pode aceitar).
  • header.dates.future_end — dispara quando EndDate está no futuro (aviso).

Erros comuns

  • Mudança de ano. Um ficheiro de janeiro com FiscalYear=2025 mas StartDate=2026-01-01. O ERP virou o ano num campo mas não no outro.
  • Unidade de período errada. Submeter um trimestre quando a AT espera um mês — ou vice-versa. As datas declaram a unidade; o desencontro com a janela de submissão é uma verificação separada do lado da AT.
  • DateCreated definido em testes. Ficheiros exportados durante a configuração do ERP carregam por vezes uma DateCreated no passado ou no futuro em relação ao momento real de geração.

Como corrigir

  1. Verifique a seleção do período de exportação no ERP: a maioria dos problemas vem de escolher o mês de início/fim errado.
  2. Se as datas estão certas e só o FiscalYear está mal, edite a definição de ano fiscal da empresa no ERP e volte a exportar. Para submissões pontuais, o editor inline consegue corrigir FiscalYear diretamente na página do resultado.
  3. Se DateCreated está no futuro ou antes de EndDate, corrija o relógio do sistema do ERP e volte a exportar — ou use o editor inline para o ficheiro imediato.

O aviso combinado header.dates.range (StartDate vs EndDate) não é editável como campo único — corrija StartDate ou EndDate individualmente com o editor inline, ou volte a exportar.

Relacionado

Outras regras

Usamos um cookie de sessão para autenticação, um cookie de idioma para a preferência linguística e o Tawk.to para o widget de chat ao vivo (que define os seus próprios cookies quando abre o chat). O Google Analytics (GA4) só é carregado depois de aceitar, com anonimização de IP; sem rastreadores publicitários. Consulte a nossa Política de Privacidade.