Saltar al contenido principal
VeriFactu

Errores de VeriFactu con el formato del envío: XML ilegible, UTF-8 y peticiones vacías

Antes de comprobar ninguna factura, la AEAT tiene que poder leer lo que le llega: un XML bien formado, en UTF-8, por el método correcto y con los nodos que espera. Si algo de eso falla, no hay factura que valga. Estos ocho códigos son los de esa primera puerta, y casi todos rechazan la petición completa.

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

Lo que la AEAT no puede leer

CódigoTexto de la AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.

Los seis están en el apartado de la lista que rechaza el envío completo. Los otros dos códigos de esta página rechazan solo un registro: el 1100, Valor o tipo incorrecto del campo., el más genérico de la lista, y el 1251, para un IDVersion incorrecto.

Tarjeta de los códigos de formato del envío de VeriFactu
En rojo, los seis que rechazan la petición entera; en ámbar, el 1100 y el 1251, que rechazan un registro.

Cómo envía Odoo cada petición

El módulo manda cada envío como un POST SOAP 1.1 por TLS mutuo, con el certificado de la empresa. El cuerpo es XML en UTF-8, con su declaración de codificación, y la cabecera HTTP lo anuncia como text/xml en UTF-8. Los textos se normalizan a la forma NFC, para que una misma letra con tilde llegue siempre con los mismos bytes. Cada registro lleva IDVersion 1.0, y antes de salir pasa por la validación contra el esquema oficial que lleva el módulo.

Con esa forma de enviar, los fallos de esta página no tendrían que verse: no hay GET, no hay peticiones vacías y la codificación es siempre la misma.

El caso del GET

El 4135 es el único de esta página que se ve a menudo, y tiene una explicación muy sencilla: alguien ha abierto la dirección del servicio de la AEAT en un navegador. Un navegador pide las páginas con GET, y el servicio solo acepta POST. Si lo ves al probar la dirección a mano, no indica ningún problema con tus envíos: la cola de Odoo nunca pide con GET.

Cola de envío a la AEAT agrupada por estado
La cola de envío en Odoo agrupada por estado: los rechazos de la petición completa quedan en Failed. Captura de Odoo 20 con datos de demostración; las respuestas de la AEAT son simuladas.

Qué hacer

  • Con un 4103, 4119 o 4138 en un envío del módulo, guarda la respuesta del campo Raw Response y escríbenos a comercial@flexigobe.com: queremos ver qué factura iba en ese envío.
  • Con un 4136 o 4137, igual. El módulo construye esos nodos para cada alta y cada anulación.
  • Con un 1100, el mensaje no dice qué campo: la respuesta completa sí suele dejar ver a qué registro afecta.

Cuando sepamos la causa, los envíos en Failed se reenvían desde Envío a AEAT › Errores AEAT con Reintentar Selección. Los del 1100 y el 1251 la cola ya los reintenta, pero con los mismos datos.

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ódigoTexto de la AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.
1100Valor o tipo incorrecto del campo.
1251El valor del campo IdVersion tiene un valor incorrecto

Los errores de esquema, cuando falta un campo obligatorio, tienen su propia página: el error 4102.

Sigue leyendo

Error 4102 de VeriFactu: «El XML no cumple el esquema. Falta informar campo obligatorio»El error 4102 de VeriFactu rechaza el envío entero porque falta un campo obligatorio. Cómo lo frena antes Odoo 17, 18, 19 y 20 y qué hacer si aun así llega de la AEAT.Errores 4113 y 4114 de VeriFactu: demasiados registros en un mismo envíoLos errores 4113 y 4114 de VeriFactu: demasiados registros en un envío. El límite de 1000 por petición, el de cada bloque y cómo lo respeta Odoo 17 a 20.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