Aller au contenu principal
VeriFactu

Erreurs VeriFactu avec le format d'envoi : XML illisible, UTF-8 et requêtes vides

Avant de vérifier la moindre facture, l'AEAT doit pouvoir lire ce qui lui parvient : un XML bien formé, en UTF-8, par la bonne méthode et avec les nœuds attendus. Si l'une de ces conditions échoue, aucune facture ne compte. Ces huit codes relèvent de cette première étape, et presque tous rejettent la requête entière.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 4 novembre 2026

L'essentiel

Module
VeriFactu
Versions
Odoo 17, 18, 19 et 20
Vérifié
dans le code du module, version 20.0 · dans les sources citées à la fin
Lecture
3 min

Ce que l'AEAT ne peut pas lire

CodeTexte de l'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.

Les six figurent dans la section de la liste qui rejette l'envoi complet. Les deux autres codes de cette page ne rejettent qu'un enregistrement : le 1100, Valor o tipo incorrecto del campo., le plus générique de la liste, et le 1251, pour un IDVersion incorrect.

Fiche des codes de format d'envoi de VeriFactu
En rouge, les six qui rejettent la requête entière ; en ambre, le 1100 et le 1251, qui rejettent un enregistrement.

Comment Odoo envoie chaque requête

Le module envoie chaque envoi sous forme de POST SOAP 1.1 en TLS mutuel, avec le certificat de l'entreprise. Le corps est un XML en UTF-8, avec sa déclaration d'encodage, et l'en-tête HTTP l'annonce comme text/xml en UTF-8. Les textes sont normalisés en forme NFC, de sorte qu'une même lettre accentuée arrive toujours avec les mêmes octets. Chaque enregistrement porte IDVersion 1.0 et, avant de partir, passe par la validation contre le schéma officiel fourni avec le module.

Envoyé de cette façon, les échecs de cette page ne devraient pas apparaître : il n'y a pas de GET, pas de requête vide et l'encodage est toujours le même.

Le cas du GET

Le 4135 est le seul de cette page que l'on voit souvent, et son explication est très simple : quelqu'un a ouvert l'adresse du service de l'AEAT dans un navigateur. Un navigateur demande les pages en GET, et le service n'accepte que le POST. Si vous le voyez en testant l'adresse à la main, cela ne signale aucun problème avec vos envois : la file d'attente d'Odoo n'utilise jamais GET.

File d'envoi vers l'AEAT regroupée par état
La file d'envoi dans Odoo regroupée par état : les rejets complets de la requête restent en Failed. Capture d'écran d'Odoo 20 avec des données de démonstration ; les réponses de l'AEAT sont simulées.

Que faire

  • Avec un 4103, 4119 ou 4138 sur un envoi du module, conservez la réponse du champ Raw Response et écrivez à comercial@flexigobe.com : nous voulons voir quelle facture figurait dans cet envoi.
  • Avec un 4136 ou 4137, de même. Le module construit ces nœuds pour chaque inscription et chaque annulation.
  • Avec un 1100, le message n'indique pas le champ : la réponse complète permet généralement de voir à quel enregistrement il se rapporte.

Une fois la cause connue, les envois en Failed se renvoient depuis Envío a AEAT › Errores AEAT avec Reintentar Selección. Ceux du 1100 et du 1251, la file les réessaie déjà, mais avec les mêmes données.

Les codes de cette page, avec le texte de l'AEAT

Chaque code avec son texte littéral, tel que le donne la liste d'erreurs de l'AEAT :

CodeTexte de l'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

Les erreurs de schéma, lorsqu'un champ obligatoire manque, ont leur propre page : l'erreur 4102.

À lire aussi

Erreur 4102 de VeriFactu : « El XML no cumple el esquema. Falta informar campo obligatorio »L'erreur 4102 de VeriFactu rejette l'envoi entier car un champ obligatoire manque. Comment Odoo 17, 18, 19 et 20 la bloque en amont et que faire si l'AEAT la renvoie.Erreurs 4113 et 4114 de VeriFactu : trop d'enregistrements dans un même envoiLes erreurs 4113 et 4114 de VeriFactu : trop d'enregistrements dans un envoi. La limite de 1000 par requête, celle de chaque bloc et comment Odoo 17 à 20 la respecte.Erreurs techniques VeriFactu : quand le problème vient des systèmes de l'AEATErreurs techniques VeriFactu côté AEAT (4108, 4110, 4111, 4118, 4128, 3500, 3501, 1129, 1256, 1288) : lesquelles Odoo relance et lesquelles vous renvoyez.
Vérifié dans le code du module (version 20.0) et dans les sources citées

Sources