Ce que répond l'AEAT
Chaque envoi contient entre 1 et 1 000 enregistrements. La réponse donne un état pour l'envoi entier (Correcto, ParcialmenteCorrecto ou Incorrecto), un état par enregistrement (Correcto, AceptadoConErrores ou Incorrecto) et le temps d'attente avant l'envoi suivant.
L'AEAT publie son catalogue officiel d'erreurs, avec 247 codes, en trois familles :
| Famille | Ce qu'elle signifie | Que faire |
|---|---|---|
| 4xxx : envoi entier rejeté | Rien de cet envoi n'a été enregistré. | Corrigez la cause et renvoyez l'envoi complet. |
| Enregistrement rejeté | Cet enregistrement n'est pas accepté ; le reste de l'envoi, si. | Corrigez cet enregistrement et renvoyez uniquement celui-là. |
| 2xxx : accepté avec erreurs | L'enregistrement est inscrit, mais quelque chose doit être corrigé. | Ne le renvoyez pas comme nouveau : corrigez ce que dit le code. |
Deux cas méritent d'être reconnus tout de suite. Le code 3000 signale un enregistrement en double : s'il apparaît déjà comme correct ou accepté avec erreurs, inutile de le renvoyer. Et l'empreinte, un SHA-256 chaîné à l'enregistrement précédent, est recalculée par l'AEAT : si elle ne correspond pas, l'enregistrement est accepté avec une erreur qu'il faut corriger.

Avant d'arriver à l'AEAT : le certificat
L'AEAT identifie l'émetteur grâce au certificat présenté à la connexion. Sans certificat, son service redirige vers la page d'erreur 4033, « aucun certificat détecté ». Avec un certificat qui ne se valide pas, vers 4011. Dans Odoo, ces cas sont arrêtés plus tôt :
No active certificate for company …: la société n'a pas de certificat actif. Téléversez-le dans Configuration › Certificates.The certificate … of company … has expired.: il a expiré. Une alerte quotidienne d'expiration est là pour que vous n'en arriviez pas là.
Ce que votre système bloque avant l'envoi
| Message | Ce qui manque | Solution |
|---|---|---|
Company … has no NIF for Veri*Factu. | La société n'a pas de NIF. | Renseignez-le dans les données de la société. |
Invalid NIF length: "…" (must be 9 chars) | Le NIF du client ne fait pas 9 caractères. | Vérifiez le NIF sur le contact. |
Invalid NIF digits: "…" | Le NIF contient des caractères non valides. | Corrigez-le sur le contact. |
Cannot post invoice: invalid counterparty identifier. | L'identifiant du client n'est pas valide. | Corrigez l'identifiant avant de comptabiliser. |
Record … has no tax breakdown (Desglose) to declare. | La facture n'a pas de ventilation des taxes. | Vérifiez les taxes sur les lignes. |
Record … is chained to a previous record that does not exist. | La chaîne d'enregistrements est rompue. | N'y touchez pas à la main : vérifiez l'état de la chaîne et écrivez-nous. |
The AEAT accepts at most 1000 records per request. | Un envoi avec plus d'enregistrements que permis. | La file les découpe ; si vous voyez ce message, prévenez-nous. |

Où regarder dans Odoo
La file d'envoi est traitée chaque minute et se trouve dans AEAT Submission › Submission Queue. Les erreurs renvoyées par l'AEAT ont leur propre liste dans AEAT Errors, et le catalogue complet des codes dans AEAT Error Catalogue. Ces trois écrans règlent la plupart des cas sans ouvrir le document technique de l'AEAT, même s'il est en lien plus bas au besoin.

Le module est publié pour Odoo 17, 18, 19 et 20. Si un code ne figure pas dans le catalogue, envoyez-nous le texte exact de la réponse : nous le retrouverons dans le document officiel des validations.
À lire aussi
Vérifié dans le code du module (version 20.0) et dans les sources citées
Sources
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/Sis
- sede.agenciatributaria.gob.es/Sede/errores/erro4033.html
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- Code du module : flexigo_spain_verifactu 20.0 (4dc42be4): models/account_move.py
- Code du module : flexigo_spain_verifactu 20.0 (4dc42be4): models/verifactu_aeat_client.py
- Code du module : flexigo_spain_verifactu 20.0 (4dc42be4): models/verifactu_nif_validator.py
- Code du module : flexigo_spain_verifactu 20.0 (4dc42be4): data/verifactu_crons.xml
- Code du module : flexigo_spain_verifactu 20.0 (4dc42be4): views/menu_views.xml
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
