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:
| Campo | Restrição |
|---|---|
StartDate | A primeira data coberta pelo ficheiro. |
EndDate | Tem de ser estritamente posterior a StartDate. |
FiscalYear | Tem de ser igual ao ano civil de StartDate. |
DateCreated | Deve 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 quandoStartDate ≥ EndDate.header.dates.fiscal_year_mismatch— dispara quandoFiscalYearnão corresponde ao ano deStartDate(aviso).header.dates.created_before_end— dispara quandoDateCreated < EndDate(aviso; a AT ainda pode aceitar).header.dates.future_end— dispara quandoEndDateestá no futuro (aviso).
Erros comuns
- Mudança de ano. Um ficheiro de janeiro com
FiscalYear=2025masStartDate=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
DateCreatedno passado ou no futuro em relação ao momento real de geração.
Como corrigir
- 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.
- 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
FiscalYeardiretamente na página do resultado. - Se
DateCreatedestá no futuro ou antes deEndDate, 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
- Editor inline — corrigir FiscalYear / EndDate / DateCreated no lugar.
- Passo a passo: prazos de submissão SAF-T e fluxo de rejeição da AT