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

We use a session cookie for sign-in, a locale cookie for language preference, and Tawk.to for the live-chat widget (which sets its own cookies when you open the chat). Google Analytics (GA4) loads only after you accept, with IP anonymisation; no advertising trackers. See our Privacy Policy.