C'est le module le plus lourd de tout notre socle, et celui qui porte l'obligation la plus datée : 322 champs ajoutés à l'instance pour faire circuler une facture entre votre comptabilité et une plateforme agréée.
Il connecte Odoo à cette plateforme pour interroger l'annuaire national, émettre vos factures et avoirs clients, recevoir les factures fournisseurs, et suivre le cycle de vie de chaque pièce par les statuts normalisés AFNOR/CDAR.
Résumé
C'est le module le plus lourd du socle — 10 modèles et 322 champs — et le seul qui porte une obligation datée : il connecte Odoo à une plateforme agréée pour interroger l'annuaire national, émettre, recevoir et suivre le cycle de vie des factures.
Trois points décident de son fonctionnement, et aucun n'est dans le module : les deux tâches planifiées désactivées à l'installation — cause de la quasi-totalité des « mes factures ne partent pas » —, le paramétrage de TVA, qui a son propre bouton de vérification, et les SIREN de vos clients.
L'essentiel
- 10 modèles créés, 7 étendus, 322 champs, 5 menus, 29 vues — relevé sur instance.
- Quatre écrans : lignes d'annuaire, flux, événements de facture, journaux techniques.
- Contrôles bloquants à la validation : une facture dont la ligne d'annuaire est inactive ne part pas.
- Avoir automatique en option sur un refus ou un rejet, avec annulation de la facture.
- Deux tâches planifiées désactivées par défaut — c'est le piège d'installation n° 1.
- Purge des journaux techniques après 600 jours par défaut, paramétrable.
Ce que le module ajoute à l'instance
| Élément | Nombre |
|---|---|
| Modèles créés | 10 |
| Modèles étendus | 7 |
| Champs ajoutés | 322 |
| Menus | 5 |
| Vues | 29 |
| Actions de fenêtre | 7 |
| Groupes de droits | 0 |
Les dix modèles décrivent le dispositif complet. Cinq suffisent à le comprendre :
| Modèle | Ce qu'il est |
|---|---|
fr.directory.line | Une ligne d'annuaire : par où joindre une entité (SIREN, SIRET, code de routage) |
fr.einvoicing.flow | Un flux : une transmission, entrante ou sortante, avec son état |
fr.einvoicing.event | Un événement : un statut du cycle de vie, reçu ou envoyé |
fr.einvoicing.log | Un journal technique : le détail INFO / WARNING / ERROR de chaque opération |
fr.einvoicing.token | Le jeton d'authentification auprès de la plateforme |
Les sept modèles étendus incluent account.move, account.move.line, account.journal, res.company et res.partner : c'est par eux que le dispositif s'insère dans votre comptabilité au lieu de vivre à côté.

Où le trouver dans Odoo
| Menu | Quand on l'ouvre |
|---|---|
| Facturation ▸ Configuration ▸ France - Facturation électronique | Le menu racine |
| … ▸ Lignes d'annuaire | Quand une facture ne trouve pas son destinataire |
| … ▸ Flux de facturation électronique | Pour vérifier qu'une facture est bien partie |
| … ▸ Événements de factures | Quand un client conteste avoir reçu une facture |
| … ▸ Journaux de facturation électronique | Quand il faut comprendre un rejet |
Et surtout, le module greffe des points d'entrée là où le travail se fait :
- Sur une facture ou un avoir : un onglet eInvoicing avec la ligne d'annuaire, le flux associé, l'historique des événements, un bouton New Event, et un bandeau « Click here to send it immediately ».
- Sur une fiche contact société : un groupe e-Invoicing for France avec le statut d'annuaire et un bouton Directory Sync.
- Sur le tableau de bord comptable, cartes des journaux Ventes et Achats : un lien Import from AP Now.
- Dans Facturation ▸ Configuration ▸ Paramètres, un bloc France eInvoicing, visible uniquement si le pays de la société est la France.
La liste des factures gagne aussi une colonne Flow State et une colonne Last Event : c'est l'écran de pilotage quotidien, et il ne demande pas d'ouvrir les menus de configuration.
Cas d'usage
Raccorder l'instance à la plateforme agréée
- Facturation ▸ Configuration ▸ Paramètres, bloc France eInvoicing.
- Choisir l'Accredited Platform.
- Choisir la méthode d'authentification : « Client Credentials » (saisir alors l'identifiant et le secret client) ou « Authorization Code » (cliquer sur Onboarding, qui redirige vers la page d'autorisation de la plateforme).
- Cliquer sur Test API pour vérifier la connexion.
- Cliquer sur Check config for EN16931 invoicing : ce bouton vérifie que vos taxes sont correctement configurées pour la génération des fichiers.
- Enregistrer.
L'étape 5 mérite d'exister, et son existence est révélatrice : un paramétrage de TVA approximatif est la première cause de rejet technique. Si la communauté a ajouté un bouton de vérification dédié, c'est que le problème est fréquent.
Enrôler sa société et synchroniser un client
- Dans le même bloc de paramètres, cliquer sur Company Directory Sync (visible si le statut n'est pas encore connu).
- Cliquer sur Directory Sync : Odoo interroge l'annuaire avec le SIREN de la société et détermine son statut — Private VAT Registered, Public Sector, Not Present…
- Si plusieurs lignes d'annuaire actives existent, choisir la ligne par défaut et valider.
- Pour un client : ouvrir sa fiche contact, groupe e-Invoicing for France, puis Directory Sync. Son statut et ses lignes actives sont mis à jour.
L'étape 1 est celle qu'on oublie : on s'occupe de ses clients et on néglige sa propre entité. Sans enrôlement de votre société, vos fournisseurs ne savent pas où vous adresser leurs factures — alors que l'obligation de réception court depuis le 1er septembre 2026.
Émettre une facture vers un destinataire identifié
- Créer la facture pour un client dont le Directory Status est « Private VAT Registered » ou « Public Sector ».
- Onglet eInvoicing : vérifier la Directory Line du destinataire et la Company Directory Line de l'émetteur.
- Cliquer sur Confirm : un flux est créé automatiquement.
- Un bandeau apparaît : pour ne pas attendre la tâche planifiée, cliquer sur Click here to send it immediately.
- Suivre le statut dans les Flux, ou dans la colonne Flow State de la liste des factures.
Un flux sortant passe par les états Created → Generated → Sent → Done, avec les boutons correspondants sur sa fiche : Generate File, Send to AP, Update Status. Un flux entrant passe par Created → Downloaded → Done, avec Download puis Import in Odoo.
Traiter un refus, et l'avoir automatique
- Un événement Refused arrive sur une facture client : il apparaît dans les Événements de factures, badge rouge.
- Si l'option Auto Reverse Invoice if Refused/Rejected est active, Odoo crée et valide automatiquement un avoir marqué Internal Refund, et annule la facture.
- Si l'annulation est manuelle, cliquer sur Annuler sur la facture : en l'absence d'événement de refus, l'assistant New Event s'ouvre avec le statut prérempli Refused.
- Renseigner le motif dans le tableau Reasons and Actions Requested, cocher Confirm, puis Send Event.

Le refus est définitif : la case Confirm et le bandeau d'avertissement en témoignent. L'assistant le rappelle explicitement avant l'envoi.
Les contrôles qui bloquent une facture — et pourquoi c'est souhaitable
À la validation d'une facture client, le module exécute une série de vérifications. Si l'une échoue, la facture ne se valide pas. Cela surprend, et c'est exactement ce qu'il faut.
- Si le statut du client dans l'annuaire est inconnu ou inactif, la synchronisation est déclenchée automatiquement.
- La ligne d'annuaire retenue est vérifiée : active, et cohérente avec le client.
- Pour une entité publique (Chorus Pro), présence du SIRET de votre société et d'un mode de paiement sur la facture.
Sans ces contrôles, la facture serait validée, comptabilisée, puis rejetée par la plateforme — et vous l'apprendriez plus tard, sur une pièce déjà dans vos comptes. Un blocage coûte trente secondes ; un rejet après comptabilisation coûte un avoir et une relance.
Deux blocages de gestion complètent l'ensemble, et ils sont la contrepartie logique d'un document transmis à l'administration :
- Une facture liée à un flux ne peut plus être supprimée.
- Elle ne peut plus revenir en brouillon, sauf contexte technique explicite.
Les deux tâches désactivées par défaut
C'est le piège d'installation numéro un de ce module, et il est silencieux.
Le module ajoute deux tâches planifiées — l'import des flux entrants et l'envoi puis le suivi des flux sortants — désactivées par défaut. C'est un choix prudent de la communauté : on n'active pas de transmission automatique sans que quelqu'un l'ait décidé.
Mais si personne ne les active, les factures restent à l'état Created sans que rien ne le signale. Vous découvrez le problème en analysant vos impayés, des semaines plus tard.
- Paramètres ▸ Technique ▸ Automatisation ▸ Actions planifiées.
- Activer la tâche d'import des flux entrants.
- Activer la tâche d'envoi et de suivi des flux sortants.
- Émettre une facture réelle et vérifier qu'elle passe à Sent sans intervention.
Trois automatisations facultatives méritent par ailleurs d'être examinées : l'avoir automatique sur refus ou rejet, l'envoi automatique de l'événement « prise en charge » à l'import d'une facture fournisseur, et l'envoi automatique de l'événement « approuvée » à sa validation. Les deux dernières informent votre fournisseur de l'avancement, et réduisent les appels de relance.
Les statuts du cycle de vie
Le modèle d'événement implémente l'ensemble des statuts définis par la norme AFNOR/CDAR, chacun associé à un code et à une couleur. Les voici, regroupés par ce qu'ils signifient pour vous :
| Nature | Statuts |
|---|---|
| Transmission en cours | Submitted, Issued by the Platform, Received by the Platform, Made Available |
| Pris en charge | In Hand, Completed |
| Accepté | Approved, Stamped |
| Réserve | Partially Approved, Disputed, Suspended |
| Refus ou échec | Refused, Rejected, Cancelled, Routing Error, Unacceptable |
| Paiement | Payment Sent, Payment Received, Direct Payment Query |
| Affacturage | Factored, Undisclosed Factored, Not Factored, Payment Entity Change |
Seuls quatre de ces statuts sont obligatoires dans la réforme — déposée, rejetée, refusée, encaissée. Les autres sont recommandés, et c'est leur présence qui donne la visibilité utile sur une facture en attente. Voir les quatre statuts obligatoires.
Côté saisie manuelle, l'assistant New Event n'autorise que certains statuts : Completed pour une pièce client, et Approved, Partially Approved, Disputed, Suspended ou Refused pour une pièce fournisseur. Les statuts à réserve ouvrent un tableau Reasons and Actions Requested où l'on précise le motif et l'action attendue — information complémentaire, facture rectificative, avoir total, avoir partiel, remboursement.
Limites connues et points d'exploitation
Le dépôt ne répertorie pas de défaut sur ce module. Cinq points d'exploitation déterminent en revanche s'il fonctionne chez vous.
- Les deux tâches planifiées sont désactivées à l'installation. C'est la cause de la quasi-totalité des « mes factures ne partent pas ».
- La bibliothèque Python
pyfrctcdoit être disponible sur le serveur : c'est elle qui dialogue avec la plateforme. - Les journaux techniques sont purgés après 600 jours par défaut, via l'autovacuum, réglable par le paramètre système
fr_einvoicing.log_days. Sur un fort volume, c'est un point à surveiller côté taille de base. - Le paramétrage de TVA conditionne tout. Le bouton de vérification dédié existe parce que c'est la première cause de rejet.
- Les SIREN de vos clients sont le vrai chantier. Aucun module ne les devinera, et une facture sans destinataire trouvé ne part pas.
Le cinquième point n'est pas technique et c'est le plus long : voir l'annuaire, les SIREN et le routage.
Identité technique
| Nom technique | l10n_fr_einvoicing |
| Dépôt OCA | fr-einvoicing, branche 18.0 |
| Dépendances | l10n_fr_account_invoice_en16931 |
| Dépendance Python | pyfrctc |
| Modules de liaison du même dépôt | l10n_fr_einvoicing_sale, _import, _purchase, _payment_batch_oca, _dashboard_banner |
| Version Odoo | 18.0 Community |
Le dépôt fr-einvoicing compte 9 modules documentés. Trois font partie de notre socle commun : le module central, celui qui porte la ligne d'annuaire depuis le devis, et celui qui transforme une facture fournisseur reçue en brouillon comptable.
Pour la vue d'ensemble côté métier plutôt que côté module, voir ce qu'Odoo couvre nativement sur la réforme.
Questions fréquentes
Pourquoi mes factures restent-elles à l'état « Created » ?
Parce que les deux tâches planifiées du module — import des flux entrants, envoi et suivi des flux sortants — sont désactivées par défaut à l'installation. Rien ne le signale : les factures s'accumulent sans partir. Activez-les dans Paramètres ▸ Technique ▸ Automatisation ▸ Actions planifiées, puis testez avec une facture réelle.
Que fait le bouton « Check config for EN16931 invoicing » ?
Il vérifie que les taxes de votre société sont correctement configurées pour la génération des fichiers structurés. Son existence est révélatrice : un paramétrage de TVA approximatif est la première cause de rejet technique, et la communauté a jugé utile d'ajouter un contrôle dédié.
Pourquoi ma facture refuse-t-elle de se valider ?
Le module exécute des contrôles bloquants avant transmission : statut du client dans l'annuaire inconnu ou inactif, ligne d'annuaire incohérente, ou — pour une entité publique — absence du SIRET de votre société ou d'un mode de paiement sur la facture. C'est voulu : mieux vaut un blocage de trente secondes qu'un rejet sur une pièce déjà comptabilisée.
Peut-on annuler une facture déjà transmise ?
Pas librement : une facture liée à un flux ne peut plus être supprimée ni revenir en brouillon. À l'annulation, l'assistant New Event s'ouvre avec le statut prérempli Refused, et il faut confirmer explicitement — le refus est définitif. L'option d'avoir automatique crée alors la contrepartie comptable.
Combien de temps les journaux techniques sont-ils conservés ?
600 jours par défaut, purgés automatiquement par l'autovacuum. Le délai se règle par le paramètre système fr_einvoicing.log_days. Sur une instance à fort volume de factures, c'est un poste à surveiller dans la taille de votre base.
Se faire accompagner
Trois choses décident si ce module fonctionne chez vous, et aucune n'est dans le module : les tâches planifiées à activer, le paramétrage de TVA à vérifier, et les SIREN de vos clients à relever. La troisième est la plus longue, et elle n'est pas technique.
Notre paramétrage accompagné de la facturation électronique couvre les trois en 1 à 3 jours : raccordement à la plateforme, enrôlement de votre société, contrôle des taxes, activation des tâches, et test réel de bout en bout. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Ce qu'Odoo couvre nativement sur la facturation électronique
- Les quatre statuts obligatoires du cycle de vie
- L'annuaire national : SIREN, SIRET et code de routage
En résumé
322 champs, dix modèles, quatre écrans : l10n_fr_einvoicing est le module le plus lourd du socle, et le seul qui porte une obligation datée. Trois points décident de son fonctionnement — les tâches planifiées désactivées par défaut, le paramétrage de TVA, et les SIREN de vos clients. Parlons de votre conformité.