Qué lleva el bloque Encadenamiento
- El primer registro
- Lleva PrimerRegistro con valor S y nada más. Si la AEAT ya tenía registros tuyos con el mismo sistema, responde con el 2007, que tiene su propia página.
- Todos los demás
- Llevan RegistroAnterior: el NIF del emisor, el número y la fecha de la factura anterior, y su huella.
La huella es un SHA-256 escrito en hexadecimal y en mayúsculas, de 64 caracteres. La del registro anterior tiene que cumplir ese formato; si no, la AEAT da un aviso sin rechazo.

Los que aceptan el registro
| Código | Texto de la AEAT |
|---|---|
| 2002 | La longitud de huella del registro anterior no cumple con las especificaciones. |
| 2003 | El contenido de la huella del registro anterior no cumple con las especificaciones. |
| 2008 | El valor de la huella del registro anterior debe ser diferente a la huella del registro actual. |
Con estos tres la factura queda registrada y en Odoo aparece como «Aceptado con errores (subsanar)».
Los que lo rechazan
- Datos del registro anterior: 1174 para su fecha, 1175 para su número y 1269 para un RegistroAnterior mal informado.
- Bloques: 1180 es el error genérico de Encadenamiento y 1274 un valor incorrecto en PrimerRegistro.
- Huellas: 1291 y 1292 cuando el hash, del anterior o del actual, no es alfanumérico; 1247 para un tipo de huella incorrecto.
- Longitudes: 1262 de la huella, 1263 del tipo de huella, 1264 del campo de primer registro, 1265 del tipo de factura, 1266 de la cuota total y 1267 del importe total.
Cómo encadena Odoo
El módulo encadena cada registro al publicar la factura, en orden y con un número de registro consecutivo por empresa. Para el bloque Encadenamiento busca el registro con el número inmediatamente anterior, sea un alta o una anulación, y copia su NIF, su número, su fecha y su huella. Si no lo encuentra, no envía nada y para con «Record … is chained to a previous record that does not exist.».
La huella y la huella anterior se guardan al encadenar y no se pueden modificar después. La cola manda los registros de cada empresa en orden de cadena, y cada día el cron Verifactu: Nightly Integrity Check recorre la cadena entera para comprobar que sigue íntegra.

Qué hacer con uno de estos códigos
- Abre Registros de Cumplimiento › Estado de la Cadena y pulsa Verificar Integridad. Si la cadena local está rota, deja de facturar desde esa empresa y escríbenos.
- Si la cadena local está bien, el problema está en cómo llegó a la AEAT. Guarda la respuesta del envío, el campo Raw Response de la cola.
- Escríbenos a comercial@flexigobe.com con las dos cosas. Los registros encadenados no se tocan a mano: ni se borran ni se editan.
Los códigos de esta página, con el texto de la AEAT
Cada código con su texto literal, tal como lo da la lista de errores de la AEAT:
| Código | Texto de la AEAT |
|---|---|
| 1174 | El valor del campo FechaExpedicionFactura del bloque RegistroAnteriores incorrecto. |
| 1175 | El valor del campo NumSerieFactura del bloque RegistroAnterior es incorrecto. |
| 1180 | Error en el bloque de Encadenamiento. |
| 1247 | El valor del campo TipoHuella es incorrecto. |
| 1262 | La longitud de huella no cumple con las especificaciones. |
| 1263 | La longitud del tipo de huella no cumple con las especificaciones. |
| 1264 | La longitud del campo primer Registro no cumple con las especificaciones. |
| 1265 | La longitud del campo tipo factura no cumple con las especificaciones. |
| 1266 | La longitud del campo cuota total no cumple con las especificaciones. |
| 1267 | La longitud del campo importe total no cumple con las especificaciones. |
| 1269 | El bloque Registro Anterior no esta informado correctamente. |
| 1274 | Valor incorrecto campo primer registro |
| 1291 | El HASH del Registro anterior no es alfanumérico. |
| 1292 | El HASH no es alfanumérico. |
| 2002 | La longitud de huella del registro anterior no cumple con las especificaciones. |
| 2003 | El contenido de la huella del registro anterior no cumple con las especificaciones. |
| 2008 | El valor de la huella del registro anterior debe ser diferente a la huella del registro actual. |
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): data/verifactu_crons.xml
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_registro.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
