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 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.