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'sDocumentTotals.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
| Field | Declared | Actual | Verdict |
|---|---|---|---|
| SalesInvoices.NumberOfEntries | 12 | 12 | ✓ |
| SalesInvoices.NumberOfEntries | 11 | 12 | ✗ off by one |
| SalesInvoices.TotalCredit | 1 234.55 € | 1 234.56 € | ✗ 1 cent over tolerance |
| Payments.NumberOfEntries | 0 | 0 | ✓ (block absent or empty is fine) |
How to fix
- Re-run the SAF-T extract from your ERP after closing any drafts.
- If your ERP allows manual override of the block aggregates, set them to the SAFTCheck-reported "actual" values.
- 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.