← Back to all articles

Qu'est-ce que Peppol BIS 3.0 ? Une introduction pratique pour les développeurs

SealDoc Team · · 6 min read

Si vous développez des logiciels de facturation en Europe, vous croiserez inévitablement Peppol.

Pour de nombreux développeurs, la première rencontre est déstabilisante : du XML partout, des identifiants obscurs, la découverte SMP et SML, des factures UBL, des règles EN16931, des erreurs de validation aux messages énigmatiques.

Cet article explique Peppol BIS Billing 3.0 d’un point de vue technique et pratique. Sans jargon d’entreprise. Uniquement les éléments dont les développeurs ont réellement besoin.

Qu’est-ce que Peppol ?

Peppol est un réseau européen d’interopérabilité pour l’échange de documents commerciaux électroniques. Le cas d’usage le plus courant est la facturation électronique.

Plutôt que d’envoyer des PDF par courriel, les fournisseurs transmettent des documents de facturation structurés directement entre systèmes. Une facture Peppol est lisible par machine, standardisée, validée et traitable automatiquement.

Cela permet aux systèmes comptables et aux plateformes ERP de traiter les factures avec un minimum d’intervention humaine.

Que signifie BIS 3.0 ?

BIS signifie Business Interoperability Specifications. Peppol BIS Billing 3.0 définit :

  • la structure de la facture
  • les champs obligatoires
  • les règles de validation
  • les listes de codes autorisés
  • les exigences de transport

La syntaxe est basée sur UBL 2.1 et EN16931. En pratique : EN16931 définit le modèle sémantique de la facture, UBL définit la syntaxe XML, et Peppol ajoute des règles d’interopérabilité par-dessus. Vous pouvez en savoir plus sur le modèle sémantique EN16931 dans Comprendre EN16931.

Pourquoi l’Europe s’oriente vers la facturation électronique obligatoire

Plusieurs pays de l’UE s’orientent vers la facturation électronique obligatoire, notamment la Belgique, l’Allemagne, la France, la Pologne et l’Italie. Les gouvernements visent la réduction de la fraude à la TVA, le traitement fiscal automatisé, les achats publics interopérables et l’échange standardisé de factures.

La maîtrise de Peppol devient ainsi une connaissance infrastructurelle.

À quoi ressemble une facture Peppol ?

Une facture Peppol est un document XML UBL 2.1.

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

  <cbc:CustomizationID>
    urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1
  </cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>INV-2025-001</cbc:ID>
  <cbc:IssueDate>2025-11-12</cbc:IssueDate>

  <cac:AccountingSupplierParty>
    <!-- seller details -->
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <!-- buyer details -->
  </cac:AccountingCustomerParty>

  <cac:LegalMonetaryTotal>
    <!-- totals -->
  </cac:LegalMonetaryTotal>
</Invoice>

Contrairement aux PDF, ces documents sont destinés à être traités par des logiciels. Un seul champ invalide peut entraîner un rejet.

Le rôle d’EN16931

EN16931 est la norme sémantique européenne de facturation. Elle définit des concepts tels que le numéro de facture, le montant de TVA, l’identifiant de l’acheteur, les conditions de paiement et les détails fiscaux. Peppol BIS 3.0 s’appuie sur ce modèle sémantique.

C’est pourquoi les développeurs voient fréquemment des références telles que BT-10, BT-49 et BR-CO-10. Il s’agit de termes métier et de règles métier définis par EN16931.

Points de friction courants pour les développeurs

La plupart des implémentations Peppol se heurtent aux mêmes problèmes.

Problèmes de namespace. UBL utilise de nombreux espaces de noms XML. Des déclarations incorrectes produisent des erreurs de parseur énigmatiques avant même que la logique métier ne s’exécute.

Erreurs de validation. Les erreurs de validation Schematron peuvent être difficiles à déboguer. Les messages d’erreur référencent des codes BR qui nécessitent de consulter la spécification EN16931 pour être interprétés.

Formats d’identifiants. Les identifiants de participants et de points de terminaison sont stricts. Une entreprise belge utilisant le schéma de numéro d’entreprise 0208 doit préfixer avec exactement ce code de schéma.

Signatures XML. Les problèmes de canonicalisation brisent souvent la validation de signature. C’est une catégorie de bugs particulièrement insidieuse : le XML semble correct à la lecture, la signature est valide, mais ils ne se vérifient pas mutuellement. Voir les pièges de la validation de signatures XML dans Peppol pour plus de détails.

Profils spécifiques aux pays. L’Allemagne, la Belgique et la France appliquent chacune des exigences supplémentaires au-delà de la spécification Peppol BIS 3.0 de base. Un document valide pour un pays peut être invalide pour un autre.

Découverte SMP et SML

Peppol utilise un mécanisme de découverte similaire au DNS. Le processus fonctionne approximativement ainsi :

  1. Hacher l’identifiant du participant
  2. Construire un nom d’hôte DNS à partir du hachage
  3. Interroger le SML (Service Metadata Locator) pour trouver le SMP du participant
  4. Interroger le SMP (Service Metadata Publisher) pour récupérer les métadonnées de service
  5. Déterminer les types de documents pris en charge et les URL des points de terminaison
  6. Livrer le document via un Access Point

La réponse SMP elle-même est un document XML signé. C’est cette signature qui cause les problèmes de canonicalisation mentionnés précédemment.

Pourquoi les factures PDF ne suffisent pas

Les factures PDF traditionnelles sont lisibles par l’humain. Les factures Peppol sont lisibles par machine. De nombreux systèmes modernes combinent les deux : PDF/A-3 pour la représentation visuelle, XML embarqué pour l’automatisation.

C’est le fondement de Factur-X et ZUGFeRD. Voir Factur-X vs ZUGFeRD vs XRechnung vs Peppol pour une comparaison de la manière dont ces formats s’articulent.

La partie difficile

Générer du XML UBL valide n’est pas la partie difficile. La partie difficile est de générer un XML qui résiste à l’interopérabilité en conditions réelles :

  • Validation Schematron sur plusieurs ensembles de règles nationales
  • Découverte SMP avec des préfixes d’espaces de noms dynamiques
  • Vérification de signature XML sur des documents qui ont été re-sérialisés
  • Champs obligatoires spécifiques aux pays absents de la spécification de base
  • Règles d’arrondi produisant des résultats différents selon que l’arrondi est appliqué par ligne ou par document

Dans les prochains articles, nous couvrirons : EN16931 en détail, UBL vs CII, les mécanismes internes de la découverte SMP, les pièges des signatures XML et les erreurs de validation Peppol les plus courantes.

Le véritable coût de cette partie difficile ne réside pas dans la lecture des spécifications. Il réside dans la charge opérationnelle : maintenir les ensembles de règles Schematron à jour à chaque nouvelle version de Peppol BIS, gérer gracieusement les échecs de découverte SMP, maintenir les variations de règles spécifiques aux pays pour l’Allemagne, la Belgique, la France et la Pologne.

SealDoc est une API qui gère cette couche. Vous soumettez vos données de facturation sous forme de charge JSON. L’API génère le document UBL, exécute la validation Schematron EN16931 et Peppol BIS 3.0, effectue la découverte SMP, encapsule le document dans une enveloppe AS4 et le livre au point d’accès du destinataire. Si le destinataire n’est pas joignable ou si le document échoue à la validation, vous recevez une erreur structurée indiquant exactement quelle étape a échoué et pourquoi.

Pour les tests et le débogage, le validateur public SealDoc accepte les fichiers de factures UBL et CII et retourne un rapport en langage clair de chaque règle EN16931 et Peppol BIS 3.0 violée, avec le numéro BT et le code de règle métier. Aucun compte requis.


← Back to all articles