SAFTCheck

totals.reconciliation

Los totales de bloque cuadran con los documentos hijos

NumberOfEntries cuenta todos los documentos (anulados incluidos); TotalDebit y TotalCredit deben igualar los importes de las líneas sin IVA, sin los documentos anulados, con tolerancia de 0,01.

Qué comprueba

Cada total a nivel de bloque dentro de SourceDocuments debe cuadrar con los documentos por debajo:

  • NumberOfEntries = número de documentos de la sección (Invoice / WorkDocument / Payment), anulados incluidos.
  • TotalDebit = suma del DebitAmount de las líneas, y TotalCredit = suma del CreditAmount de las líneas. Son importes sin IVA, no el GrossTotal de los documentos. Los documentos anulados quedan fuera: estado A o F en SalesInvoices, A en WorkingDocuments y Payments.
  • MovementOfGoods.TotalQuantityIssued = suma de la Quantity de las líneas, sin los movimientos anulados.

La tolerancia es de 0,01. Fuente: Portaria n.º 302/2016, que define estos campos como sumas de control.

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

CampoDeclaradoRealVeredicto
SalesInvoices.NumberOfEntries1212 (incluido 1 anulado)✓
SalesInvoices.NumberOfEntries1112✗ falta un documento en el recuento
SalesInvoices.TotalCredit1234,561234,56 (líneas sin IVA)✓
SalesInvoices.TotalCredit1518,511234,56✗ IVA incluido por error
SalesInvoices.TotalCredit1234,571234,56✓ dentro de la tolerancia de 0,01

Cómo corregir

  1. Vuelve a ejecutar la extracción SAF-T desde tu ERP tras cerrar cualquier borrador.
  2. Si tu ERP permite anular manualmente los agregados de bloque, ajústalos a los valores "reales" reportados por SAFTCheck.
  3. 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.

Otras reglas