SAFTCheck
Docs / totals-reconciliation
totals.reconciliation

Block totals reconcile against child documents

NumberOfEntries and TotalDebit+TotalCredit on each section must match the documents underneath, within 0.01 €.

What this checks

Each block-level total inside SourceDocuments must reconcile with the documents underneath:

  • NumberOfEntries = count of child documents (Invoice / Payment / WorkDocument / StockMovement).
  • TotalDebit + TotalCredit = sum of every child document's DocumentTotals.GrossTotal, within 0.01 € tolerance.

Covers four blocks: SalesInvoices, Payments, WorkingDocuments, MovementOfGoods.

Why AT cares

The block totals are the integrity checksum AT validates on intake. An off-by-one count is usually a draft document that didn't flush; a sub-cent drift is a rounding mismatch between the ERP's line-level engine and the SAF-T aggregator.

Examples

FieldDeclaredActualVerdict
SalesInvoices.NumberOfEntries1212
SalesInvoices.NumberOfEntries1112✗ off by one
SalesInvoices.TotalCredit1 234.55 €1 234.56 €✗ 1 cent over tolerance
Payments.NumberOfEntries00✓ (block absent or empty is fine)

How to fix

  1. Re-run the SAF-T extract from your ERP after closing any drafts.
  2. If your ERP allows manual override of the block aggregates, set them to the SAFTCheck-reported "actual" values.
  3. If the discrepancy is a known per-line rounding bug in your ERP, escalate it with the vendor — these aggregates are computed downstream of the lines.

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.