SAFTCheck
Docs / invoice-date-range
invoice.date.out_of_range

Document date inside the Header reporting window

Every Invoice / Payment / WorkDocument / StockMovement date must fall inside Header.StartDate – Header.EndDate.

What this checks

Every <Invoice>, <Payment>, <WorkDocument> and <StockMovement> must carry a document date that falls inside the Header's reporting window:

Header.StartDate ≤ DocumentDate ≤ Header.EndDate

The "document date" tag varies by element:

  • Invoice.InvoiceDate
  • Payment.TransactionDate
  • WorkDocument.WorkDate
  • StockMovement.MovementDate

Why AT cares

The Header declares the reporting period. A document dated outside that window is either a cross-month leak (your ERP scooped up something it shouldn't have) or a wrong fiscal-year extract. AT rejects either way.

Examples

Header windowDocument dateVerdict
2026-01-01 → 2026-01-312026-01-15
2026-01-01 → 2026-01-312025-12-30✗ before StartDate
2026-01-01 → 2026-01-312026-02-01✗ after EndDate

How to fix

  1. Confirm the Header period matches the SAF-T extract you actually meant to ship.
  2. If the document date is wrong, correct it in your ERP and re-export.
  3. If the document genuinely belongs to a different period, extract that month's SAF-T separately.

Related

Other rules

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.