totals.reconciliation
Los totales de bloque cuadran con los documentos hijos
NumberOfEntries y TotalDebit+TotalCredit de cada sección deben coincidir con los documentos que contienen, dentro de 0,01 €.
Qué comprueba
Cada total a nivel de bloque dentro de SourceDocuments debe cuadrar con los documentos por debajo:
NumberOfEntries= recuento de documentos hijos (Invoice/Payment/WorkDocument/StockMovement).TotalDebit + TotalCredit= suma delDocumentTotals.GrossTotalde cada documento hijo, dentro de una tolerancia de 0,01 €.
Cubre cuatro bloques: SalesInvoices, Payments, WorkingDocuments, MovementOfGoods.
Por qué le importa a la AT
Los totales de bloque son el checksum de integridad que la AT valida a la entrada. Un off-by-one en el recuento suele ser un borrador que no se cerró; una desviación de céntimos es un desajuste de redondeo entre el motor por línea del ERP y el agregador SAF-T.
Ejemplos
| Campo | Declarado | Real | Veredicto |
|---|---|---|---|
| SalesInvoices.NumberOfEntries | 12 | 12 | ✓ |
| SalesInvoices.NumberOfEntries | 11 | 12 | ✗ off-by-one |
| SalesInvoices.TotalCredit | 1 234,55 € | 1 234,56 € | ✗ 1 céntimo por encima de la tolerancia |
| Payments.NumberOfEntries | 0 | 0 | ✓ (bloque ausente o vacío es OK) |
Cómo corregir
- Vuelve a ejecutar la extracción SAF-T desde tu ERP tras cerrar cualquier borrador.
- Si tu ERP permite anular manualmente los agregados de bloque, ajústalos a los valores "reales" reportados por SAFTCheck.
- Si la discrepancia es un bug conocido de redondeo por línea de tu ERP, escálalo con el proveedor — estos agregados se calculan aguas abajo de las líneas.