Skip to main content

Facturation électronique via Peppol v12

Contexte

À partir du 1ᵉʳ janvier 2026, toutes les entreprises belges assujetties à la TVA devront s'échanger leurs factures sous format électronique via le réseau Peppol. Cela concerne toutes les factures B2B, les factures B2C ne sont pas concernées, les factures intra et extra communautaires non plus. 

Cette page explique plus en détail cette régulation.

En janvier 2026 il faudra donc : 

  • pouvoir exporter/importer des factures dans un format de facture électronique commun : le format Peppol

  • pouvoir envoyer et recevoir des factures via un (ou des) points d'accès Peppol. 

  • et à l'idéal, que l'envoi et la réception de facture soit fait automatiquement, c'est-à-dire qu'Odoo soit connecté au point d'accès et synchronise les factures, sans besoin d'opération manuel.

Un point d'accès Peppol est une infrastructure par laquelle sont envoyées et réceptionnées les factures. La plupart des points d'accès Peppol n'ont pas d'interface utilisateurs, ils sont connectés directement aux logiciels de facturation et transmettent les données automatiquement. 

La facturation électronique avec Peppol - ISIS SA

Odoo dispose de son propre point d'accès, qui ne dispose pas d'interface utilisateur, mais qui devrait en principe être accessible par n'importe quelle base de donnée Odoo, peu importe sa version. Son utilisation est gratuite.

Modules à installer

Voici les modules à installer :

  • account_peppol_send_format_oca : installe tous les modules nécessaires pour configurer Peppol et recevoir et générer des factures Peppol. 
  • account_peppol_send_immediate : permet d’envoyer des factures via Peppol de manière immédiate : l’interface reste bloquée le temps de l’envoi et les erreurs sont montrées immédiatement. Ce module est donc plus "convivial". 
  • account_cancel : pour modifier des factures déjà payées (afin de corriger les consignes sur les factures du point de vente, cf plus bas.

Activer Peppol

Pour configurer Peppol, il faut aller dans  Facturation > Configuration>Configuration, section “PEPPOL Electronic Document Invoicing”.

Rentrer ses coordonnées (un numéro de téléphone et un email sont nécéssaire). Confirmer l'inscription via vérification du numéro de téléphone. 

image.png

L'activation peut prendre quelques heures. 

Attention : par défaut, Peppol est en mode “Live” (production), ce qui veut dire que l’inscription et l’envoi se passent sur le vrai réseau Peppol. Pour faire des tests, utiliser le mode démo. 

Mode démo

Le mode “Demo”, qui simule l’interaction avec le réseau Peppol et n’envoie rien

Pour activer ce modes, il faut créer un paramètre système (Configuration > Technique > Paramètres > Paramètres systèmes), appelé account_peppol.edi.mode et le mettre à la valeur demo.

Activer Peppol uniquement pour l'envoi

Si vous utilisez une autre application pour votre comptabilité, et que vous n'utilisez Odoo seulement pour l'envoi de facture, et pas pour la réception, il est possible d'activer Peppol sur Odoo seulement pour l'envoi. 

Pour cela, il faut d'abord activer Peppol sur votre autre application comptable, afin que votre "adresse de réception" soit enregistrée dans Peppol. Une fois cela fait, vous pouvez activer Peppol sur Odoo comme expliqué plus haut. Odoo détectera que vous êtes déjà enregistré ailleurs et activera seulement l'envoi de facture. 

On ne peux avoir qu'une application, et qu'un seul point d'accès pour recevoir les factures Peppol, mais on peut avoir plusieurs application pour envoyer des factures, chacune connectée à des points d'accès différents.

BpVimage.png

Configurations

Configuration des fiches clients

Pour pouvoir configurer Peppol, il faut que le numéro TVA soit définit sur la fiche contact liée à la société. Ceci permettra de calculer votre adresse Peppol (dans l’onglet “Facturation”). Le numéro TVA est utilisé pour définir automatiquement le point d'accès peppol du client. 

Cela se fait via le champs CoC Registration, un champs technique qui corresponds au numéro d'entreprise. Après installation de Peppol, nous éxécutons un script qui complète les champs CoC registration sur base du numéro TVA. Par la suite, chaque nouveau numéro TVA encodé ou modifier vient compléter automatiquement le champs CoC Registration (et donc l'adresse Peppol).

image.png

L’adresse Peppol des clients se trouve au même endroit sur les fiches clients. Par défaut, c’est le type d’adresse 0208 qui est utilisé (basé sur le numéro d’entreprise). Sauf exception (cf FAQ), il faut laisser ce type d'adresse. 

Le bouton Vérify permet de vérifier que les coordonnées Peppol sont bien valides. Il est possible de l'éxécuter en masse via le bouton action "Verify Peppol". 

image.png

Si la société n'est pas située en Belgique, son Peppol Endpoint ne sera pas rempli ni vérifié. 

Configurations des unités de mesure

Concernant les unités de mesure, le module uom_unece a été installé et remplira les code UNECE des unités de mesure standard. 

Il faut vérifier que chaque unité de mesure de vente ait bien un code UNECE associé. Pour cela, aller dans Inventaire > Configuration > Unité de mesure, et vérifier que le résultat de ce filtre personnalisé est vide. 

Attention, seules les unités de mesure de vente sont concernées, les unités de mesures utilisées seulement pour les achats n'ont pas besoin de code UNECE. Voici la nomenclature, voir notamment l'annexe 3 et la catégorie 3.2 pour les unités de vente. En cas de doute sur le code UNECE à utiliser, contactez-nous. 

Les codes les plus communs sont les suivants :

  • litre : STL
  • unités : C62
  • kg : KGM

image.png

    Envois de factures clients

    Les factures clients doivent répondre à certains critères, notamment il faut que chaque ligne ai une taxe définie (si pas de taxe, mettre une taxe à 0%).

    Sur une facture client, cliquer sur Envoyer & Imprimer. Si le client a des coordonnées Peppol valide, l'option par défaut est Send via Peppol. Sinon ce sera un envoi par mail classique. 

    image.png

    image.png

    Lors de la confirmation de la facture, le statut Peppol est "Prêt à envoyer". Une fois envoyé, le statut Peppol est "Réception en attente".

    image.png

    En cas d'erreur au moment de l'envoi, l’erreur s’affiche directement quand on clique sur “Send via Peppol” et bloque l’envoi.

    Un processus automatique tourne toute les 12h pour récupérer le statut des factures envoyées, et savoir si elles ont été récupérées. Le processus peut aussi se lancer manuellement ici :  

    image.png

    Une fois la facture récupérées par le client, le Statut Peppol passe en "Fait". 

    Checklist

    Si vous avez une erreur, vous pouvez utiliser cette checklist pour trouver le problème :

    • la fiche client est bien configuré, son numéro TVA encodé, et son accès Peppol est valide.
    • Le mode de paiement est bien encodé à "Wire transfer (inbound)".
    • Les lignes de factures contiennent bien des produits (il y aura une erreur si il n'y a pas de produit sur une ligne de facture), utilisez un produit "divers" si besoin. 
    • il y a bien une taxe définie sur la ligne (si c'est un produit non taxé, ajouter une taxe à 0%). La taxe doit avoir un code et une catégorie UNECE définie (voir dans Comptabilité>Configuration>Taxes)
    • l'unité de mesure sur la ligne dispose bien d'un code UNECE (à vérifier dans Inventaire>Configuration>Unités de mesure)

    Si malgré tout cela l'erreur persiste, écrivez-nous !

    Attention, il faut que chaque ligne de facture ai une unité de mesure définie. L'unité de mesure est une information encodée dans la facture électronique.

    Factures émises depuis le Point de vente

    Les factures émises depuis le point de vente ne sont pas envoyées automatiquement via Peppol. Il faut manuellement envoyer la facture (cela peut être fait en lot).

    Factures avec consigne dans les taxes

    Les taxes de consignes entraînent des erreurs dans l'envoi des factures car il y a un contrôle TVA sur le point d'accès Peppol. Il faut donc manuellement retirer la taxe consigne et ajouter une ligne de produit du montant de cette taxe.

    Si la facture a été générée par le Point de vente, et qu'elle est confirmée et payée, il faut cliquer sur Annuler, puis Remettre en brouillon :

    image.png

    image.png

    Puis modifier la facture, puis Valider, et enfin relettrer le paiement qui a été effectué. 

    image.png

    Réception des factures fournisseurs

    La réception de facture est effectuée automatiquement toutes les 12h. On peut aussi le faire manuellement en cliquant sur "Récupérer de Peppol" dans le journal de facture fournisseur dans le tableau de bord de la comptabilité. 

    image.png

    Les factures sont reçues en état Brouillon et ne sont pas du tout pré-encodées (à la différence de la solution en v16). Seul les pièces joints (PDF et XML) sont présents. Vous pouvez encoder la facture sur base du pdf, comme vous le faites actuellement quand vous recevez les factures pas mail. 

    Journal dédié pour les factures fournisseur

    Une fois l'activation terminée, dans Facturation>Configuration, il est possible de spécifier un journal dédié pour les factures Peppol. Cette option peut-être utile dans le cas où l'on veut pouvoir isoler les factures Peppol. 

    image.png

    Par exemple, si l'on utilise le flux d'achat et que l'on génère des factures automatiquement, on préfère travailler sur la facture générée plutôt que la facture reçue via Peppol. En effet, les produits, les comptes comptables et comptes analytiques y sont préremplis. La facture reçue via Peppol sert donc uniquement de contrôle. Les autres factures reçues via Peppol qui ne sont pas liées au flux d'achat peuvent être basculées dans le journal de facture fournisseur avant confirmation. 

    Proposition de process de traitement des factures en cas d'utilisation du module achat

    Lorsque le module achat est utilisé, les commandes fournisseurs génèrent des factures d'achat. Cela permet d'éviter d'encoder manuellement la facture reçue. 

    A présent, en plus de la facture Odoo générée par la commande fournisseur, on recevra la facture du fournisseur sera également reçue directement dans Odoo. Cela créé donc un doublon. La facture reçue via Peppol demande un travail d'encodage car il faut assigner sur chaque ligne un article et un compte comptable.

    Pour traiter le problème de doublon, sans pour autant se passer de la fonctionalité de génération de facture automatique. Nous proposons la solution suivante.

    • Créer un journal comptable dédié pour recevoir les factures Odoo, et le spécifier dans la configuration Peppol (cf plus haut)
    • Lorsque vous recevez une facture Peppol déjà générée via le flux d'achat
      • télécharger les justificatifs (fichiers xml et pdf) et les joindre à la facture générée via le flux d'achat
      • contrôler le montant de la facture générée via le flux d'achat sur base du pdf de la facture reçue via Peppol (comme vous le faite actuellement avec les factures reçues par mail). 
      • annuler la facture reçue via Peppol
    • Lorsque vous recevez une facture Peppol qui n'est pas lié au flux d'achat
      • changer le journal pour la passer dans le journal de Facture Fournisseur habituel
      • traiter la facture normalement.

    Note : si deux factures Odoo ont la même référence, même si elles sont dans des journaux comptables différents, Odoo affichera un avertissement pour signaler le doublon.

    FAQ

    Que veut dire le message "To generate complete electronic invoices, also set a country for this partner ?" sur la fiche contact d'un client ?

    Cela veut dire que le bon pays n'est pas défini sur l'adresse du contact. Il est possible que vous ayez le pays Belgique en double, dont un des doublons n'a pas de code pays. Pour vérifier cela, aller dans Contacts>Configurations>Pays.

    Pour corriger ce problème :

    • créer une action en lot pour pouvoir modifier en masse le pays des contacts. 
    • modifier le nom du pays Belgique en doublon pour le rendre identifiable
    • faire un filtre pour selectionner tous les contacts qui ont leur adresse sur ce pays doublon
    • utiliser l'action en lot pour modifier le pays et le mettre au "vrai" pays Belgique (qui a un code BE). 
    Est-ce qu'il y a une solution séparée en cas de très gros volumes d'envoi de facture ?

    Un autre module existe pour l'envoi : account_peppol_send_queue_job. Il permet d’envoyer des factures via Peppol en arrière-plan : l’interface ne bloque pas du tout et le statut de la facture est mis à jour une fois que l’envoi a fonctionné ou échoué. Cela permet notamment d’envoyer un grand nombre de factures d’un coup. 

    À la différence de la version 16, les codes UNECE des taxes et des unités de mesure sont gérées par des modules OCA, et demandent une configuration manuelle. 

    Nous avons lancé un script pour encoder les codes UNECE sur les taxes de ventes, donc elles devraient être préremplies et fonctionnelles. Cependant peut-être que certaines taxes sont plus spécifiques ou bien ont échappées à notre script. 

    Si vous utilisez des consignes sous forme de taxe, il faut les remplacer par des lignes de produit, comme décris ici

    Si la taxe n'est pas une consignet, il faut faire l'encodage des codes et catégorie UNECE manuellement. Pour cela, aller à Facturation>Configuration>Taxes, ouvrir une taxe et encoder le code UNECE dans l'onglet Options Avancées.

    Voici les types et catégories UNECE pour les principales taxes à la vente.

    • Type : pour les TVA, le type est [VAT]
    • Catégorie :
      • si le taux est positif : la catégorie est [S] : standard rate
      • si le taux est à 0, la catégorie est [E] : exempted.

    image.png

    Est-ce que le c’est le type d’adresse Peppol 0208 (basé sur le numéro d’entreprise) est toujours utilisé ?

    En Belgique, on doit utiliser le numéro d'entreprise comme identifiant Peppol (option 0208). Il se peut qu’un client se soit également enregistré auprès de Peppol avec son numéro de TVA. Dans ce cas-là, il faut choisir la valeur 9925 (Belgium VAT number) dans le champ “Peppol e-address (EAS)” et indiquer le numéro de TVA dans le champ “Peppol Endpoint” (cela doit être fait manuellement).