Saltar al contenido principal
VeriFactu

Error 2004 de VeriFactu: la hora de tu registro va por delante de la de la AEAT

Cada registro de facturación lleva el momento exacto en que se generó, con su huso horario. La AEAT lo compara con la hora de sus propios sistemas y, si el tuyo viene del futuro más allá de un margen, contesta con el 2004. Es de los pocos errores que la AEAT acepta sin pedir que lo subsanes, pero dice algo de tu servidor.

FlexigoTech · Responsable: Víctor Gómez · Actualizado el 4 de noviembre de 2026

Lo esencial

Módulo
VeriFactu
Versiones
Odoo 17, 18, 19 y 20
Comprobado
en el código del módulo, versión 20.0 · en las fuentes enlazadas al final
Lectura
3 min

El campo y lo que comprueba la AEAT

El campo se llama FechaHoraHusoGenRegistro y guarda fecha, hora y huso del momento en que el sistema generó el registro, con la forma AAAA-MM-DDThh:mm:ss más el desfase horario. El documento de validaciones de la AEAT dice que tiene que ser menor o igual que la fecha del sistema de la AEAT, admitiendo un margen de error. Si lo supera, devuelve un aviso sin rechazo.

El texto del 2004 en la lista de la AEAT es «El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:» y termina ahí: la lista no publica cuántos segundos o minutos son ese margen.

Tarjeta del 2004 y de los códigos 1243, 1244 y 1268
El 2004, en azul porque la AEAT acepta el registro, y los tres códigos del mismo campo que sí lo rechazan, en ámbar.

Los cuatro códigos de este campo

CódigoTexto de la AEATEfecto
2004El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:Aceptado; la AEAT no pide subsanar.
1243Error técnico al obtener el cálculo de la fecha del huso horario.Rechaza el registro por un fallo técnico de la AEAT.
1244El campo FechaHoraHusoGenRegistro tiene un formato incorrecto.Rechaza el registro.
1268La longitud del campo FechaHoraHusoGenRegistro no cumple con las especificaciones.Rechaza el registro.

En su lista de errores admisibles, la AEAT marca este caso como uno de los dos que no hace falta subsanar. El otro es la ClaveRegimen vacía con el impuesto IPSI.

De dónde sale la hora en Odoo

El módulo toma el momento en que generó el registro de facturación, al publicar la factura, con su desfase horario. Ese momento queda guardado y no se puede modificar después, igual que la huella, porque forma parte de lo que se encadena. El formato lo arma el propio módulo siempre igual, así que un 1244 o un 1268 con un envío de nuestro módulo no debería aparecer: si lo ves, mándanoslo.

Para el 2004, la pregunta es si el reloj del servidor de Odoo iba adelantado cuando se publicó la factura. El módulo trae un cron, Verifactu: Clock Drift Check, que cada 1 hora compara la hora de Odoo con la de su base de datos PostgreSQL, y un botón para hacerlo cuando quieras. No la compara con ninguna hora externa: si Odoo y la base de datos están en la misma máquina, o van adelantados los dos, no avisa. La hora real se comprueba contra un servidor NTP.

Estado de la cadena en Odoo con los botones Verificar Integridad y Check Clock Drift
En Estado de la Cadena están los dos botones: Verificar Integridad y Check Clock Drift, el que compara la hora de Odoo con la de la base de datos. Captura de Odoo 20 con datos de demostración.

Qué hacer en cada caso

  • Con un 2004, nada sobre la factura: está registrada. Pide a quien administre el servidor que compare su hora con un servidor NTP y la sincronice si va adelantada. Check Clock Drift no sirve para esto: solo compara Odoo con su base de datos.
  • Con un 1243, espera: es un error técnico del lado de la AEAT y la cola ya reintenta sola, con esperas de 2 minutos a 12 horas, hasta el sexto intento.
  • Con un 1244 o un 1268, escríbenos a comercial@flexigobe.com con la respuesta del envío.

En Odoo, un 2004 deja el registro como «Aceptado con errores (subsanar)», la misma etiqueta de todos los códigos 2xxx. Para este código en concreto, la AEAT dice que no hace falta subsanar: puedes dejarlo así.

¿Un reloj atrasado da error?

La regla de la AEAT solo mira si tu hora es mayor que la suya más el margen. Un registro con la hora por detrás no salta por este control.

Sigue leyendo

Error 2000 de VeriFactu: la AEAT recalcula tu huella y no le coincideEl error 2000 de VeriFactu: la AEAT recalcula la huella SHA-256 y no le sale la tuya. Por qué la factura queda registrada igual y qué hacer en Odoo 17, 18, 19 y 20.Error 2007 de VeriFactu: la AEAT ya tenía facturas tuyas y le llega otro «primer registro»El error 2007 de VeriFactu: la AEAT ya tiene facturas de tu NIF con el mismo sistema y le llega otro primer registro. De dónde sale en Odoo 17, 18, 19 y 20 y qué hacer.Errores técnicos de VeriFactu: cuando el problema está en los sistemas de la AEATErrores técnicos de VeriFactu del lado de la AEAT (4108, 4110, 4111, 4118, 4128, 3500, 3501, 1129, 1256, 1288): cuáles reintenta Odoo y cuáles reenvías tú.
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas

Fuentes