Qué hace en cada pasada
La tarea busca las cadenas activas y, para cada una, llama a la verificación de integridad. Todo lo importante ocurre dentro de esa verificación: recalcula la huella de cada registro y la compara con la que se guardó. La huella es un SHA-256 del registro encadenado con el anterior, y la AEAT la recalcula por su cuenta: si no casa, acepta el registro con un error que hay que subsanar.
La tarea existe en todas las ramas publicadas del módulo (17.0, 18.0, 19.0 y 20.0), que está publicado en Odoo Apps para esas cuatro versiones. Este esquema resume la tarea y el menú desde el que se abren las cadenas:

Detalles que no se ven en la ficha
Solo revisa las cadenas activas, una por una
La tarea no recorre todas las cadenas que existan: busca únicamente las activas y lanza la verificación de cada una por separado. Cada cadena pertenece a una empresa. En la ficha de Todos los Estados de Cadena (Asesoría) (All Chain States (Asesoría)) tienes el campo Empresa (Company) para saber de cuál se trata.
Lee la cadena entera en cada pasada
La verificación hace una consulta que junta los registros de alta y los de anulación de la empresa y los ordena por número de registro. Después los recorre de principio a fin. El código no parte de un punto intermedio: cada pasada empieza por el primer registro.
Recalcula cada huella desde lo que hay guardado
Para cada registro de alta, el código reconstruye la huella con estos datos guardados: NIF del emisor, número de serie, fecha de expedición, tipo de factura (F1 si está vacío), cuota total calculada a partir de las bases imponibles, importe total, huella del registro anterior y fecha y hora de generación con su huso horario. El primer registro parte de una huella anterior vacía.
El NIF del emisor se usa sin el prefijo ES. Si la empresa tiene un NIF propio para Verifactu, el código lo prefiere al número de IVA general. Un cambio en cualquiera de esos datos después de generar el registro hace que la huella recalculada ya no coincida con la guardada.
Las anulaciones se calculan con otras etiquetas
Los registros de anulación usan su propia fórmula: no llevan tipo de factura, cuota ni importe, y sus etiquetas son las de la factura anulada. El código admite además las anulaciones generadas antes de la versión 1.3.4 del módulo, que se calcularon con las etiquetas de los registros de alta: si la huella guardada coincide con ese cálculo antiguo, la da por buena.
Se detiene en la primera rotura y avisa
En cuanto una huella guardada no coincide con la recalculada, la verificación para: no sigue con los registros siguientes de esa cadena. Devuelve cuántos registros había comprobado hasta ahí y el primer registro roto, con su número de registro, su número de serie, la huella esperada y la guardada.
Ese mismo paso lanza el aviso de rotura de cadena para la empresa, con el número de registro y el número de serie donde se rompió. Si la cadena entera casa, la verificación devuelve que ha pasado, junto con el total de registros comprobados.
La frecuencia es una vez al día, y en Odoo 17 se repite sin fin
La tarea corre una vez al día y viene activa al instalar. En Odoo 17.0 está configurada además para repetirse sin fin.
Si parece que no hace nada
Antes de sospechar de la tarea, repasa esto:
- ¿Hay alguna cadena activa? Si no hay ninguna, la búsqueda no devuelve nada y no hay nada que verificar.
- ¿Sigue activa la tarea? Viene activa al instalar, así que si no corre, comprueba que sigue activa.
- ¿Qué cabe esperar de una pasada correcta? La tarea solo llama a la verificación de cada cadena, y una cadena íntegra devuelve que ha pasado con su total de registros comprobados. Una rotura es lo que lanza el aviso de rotura de cadena.
- ¿Ves el menú? Las fichas de cada cadena se abren desde
Verifactu / SIF › Registros de Cumplimiento › Estado de la Cadena(Verifactu / SIF › Compliance Records › Chain State). Cada tramo pide permisos distintos.

Los permisos del menú, tramo a tramo
Si no tienes el permiso de un tramo, no ves ese tramo. Estos son los que pide cada uno:
| Tramo del menú | Permisos que lo muestran |
|---|---|
Verifactu / SIF | Contable (Accountant), Operador de Asesoría (Asesoría Operator), Auditor (solo lectura) (Auditor (read-only)), Responsable de Privacidad (Privacy Officer), Gestor SIF (SIF Manager) |
Registros de Cumplimiento (Compliance Records) | Contable, Auditor (solo lectura), Gestor SIF |
Estado de la Cadena (Chain State) | Auditor (solo lectura), Gestor SIF |
Con solo el permiso Contable se ven los dos primeros tramos, pero no Estado de la Cadena. Si alguien dice que no encuentra el menú, mira primero sus permisos.
Más lecturas y ayuda
Si estás implantando Odoo y quieres que VeriFactu encaje con tu facturación, FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Puedes ver el módulo en su ficha de Odoo Apps.
Sigue leyendo
Comprobado en el código del módulo (versión 17.0 y 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_spain_verifactu 20.0 (1fdc980f): data/verifactu_crons.xml
- Código del módulo: flexigo_spain_verifactu 17.0 (8d43d727): data/verifactu_crons.xml
- Código del módulo: flexigo_spain_verifactu 20.0 (1fdc980f): models/verifactu_cadena.py
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- flexigotech.com/en/services.html
