ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Validateur PEPPOL BIS Billing 3.0 V2

Validez une facture UBL (Invoice ou CreditNote) contre EN 16931 et les règles métier OpenPEPPOL, sans rien envoyer au-delà du navigateur.

Collez une facture UBL conforme à PEPPOL BIS Billing 3.0 pour la valider.

Jeu de règles embarqué : 45 règles métier (BR-*, BR-CO-* calculation, PEPPOL-*, UBL-CR-*), 57 Business Terms EN 16931, 77 codes EAS PEPPOL, 1 profil. Sources : docs.peppol.eu, PEPPOL Schematron rules et la norme EN 16931-1:2017.

Comment ça marche

Le validateur applique trois passes :

  1. Bonne formation XML : votre document est passé au DOMParser natif du navigateur. Toute balise mal fermée ou caractère XML invalide est signalé en premier (E_XML_NOT_WELL_FORMED).
  2. Élément racine UBL : la racine doit être <Invoice> ou <CreditNote> dans le namespace UBL 2.1. Sinon : E_NOT_UBL_ROOT.
  3. Règles métier PEPPOL BIS Billing 3.0 : les codes BR-NN et PEPPOL-EN16931-RNNN ci-dessous sont vérifiés contre la structure du document. Chaque diagnostic indique le Business Term EN 16931 concerné (BT-1, BT-24, etc.) et le chemin XPath de l'élément fautif.

Règles implémentées

Le validateur V2 cible 45 règles parmi les ~300 du Schematron PEPPOL-EN16931-UBL.sch. Le sous-ensemble couvre les erreurs bloquantes les plus fréquentes en intégration, réparties en quatre familles :

Core EN 16931 — BR-01BR-20

  • BR-01 — identifiant de spécification (BT-24) PEPPOL BIS Billing 3.0.
  • BR-02 — numéro de facture (BT-1).
  • BR-03 — date d'émission (BT-2).
  • BR-04 — code type de facture (BT-3) parmi 380, 381, 384, 389 (CreditNote : 381, 396).
  • BR-05 — devise du document (BT-5) ISO 4217.
  • BR-06, BR-07 — noms vendeur (BT-27) et acheteur (BT-44).
  • BR-08, BR-09 — codes pays (BT-40, BT-55) ISO 3166-1.
  • BR-10, BR-11 — adresses électroniques EAS (BT-34, BT-49) avec schemeID dans la code list OASIS.
  • BR-12, BR-13, BR-14, BR-15 — totaux LegalMonetaryTotal (BT-106, BT-112, BT-109, BT-115).
  • BR-16 — au moins une ligne (BG-25).
  • BR-17, BR-18, BR-19, BR-20 — nom et adresse du Payee et du représentant fiscal lorsqu'ils sont présents.

Calculation overall — BR-CO-*

Les règles de calcul vérifient la cohérence arithmétique des totaux entre lignes, remises, frais et catégories de TVA. Tolérance par défaut : ±0.011 (niveau centime) pour absorber le double arrondi.

  • BR-CO-3 — exclusivité mutuelle entre TaxPointDate (BT-7) et InvoicePeriod/DescriptionCode (BT-8).
  • BR-CO-9 — montant TVA par catégorie = base × taux ÷ 100 (BT-117 = BT-116 × BT-119/100).
  • BR-CO-10 — BT-106 (somme des lignes) = somme arithmétique des BT-131.
  • BR-CO-11 — BT-107 (total remises document) = somme des BT-92.
  • BR-CO-12 — BT-108 (total frais document) = somme des BT-99.
  • BR-CO-13 — BT-110 (total TVA) = somme des BT-117.
  • BR-CO-14 — BT-112 (total TTC) = BT-109 + BT-110.
  • BR-CO-15 — BT-109 (total HT) = BT-106 − BT-107 + BT-108.
  • BR-CO-16 — BT-115 (montant dû) = BT-112 − BT-113 + BT-114.
  • BR-CO-17 — BT-116 (base TVA par catégorie) ≥ 0.
  • BR-CO-18 — au moins un VAT breakdown (BG-23 / cac:TaxTotal/cac:TaxSubtotal).
  • BR-CO-19 — si cac:InvoicePeriod (BG-14) est présent, BT-73 et/ou BT-74 doit être renseigné et BT-73 ≤ BT-74.
  • BR-CO-25 — instructions de paiement obligatoires si BT-115 > 0.

PEPPOL Schematron — PEPPOL-EN16931-R*

  • PEPPOL-EN16931-R001 — pas d'élément cbc:* vide.
  • PEPPOL-EN16931-R002cbc:Note ne doit pas être le premier enfant.
  • PEPPOL-EN16931-R003BuyerReference (BT-10) OU OrderReference (BT-13) requis.
  • PEPPOL-EN16931-R004CustomizationID doit être l'URN exact PEPPOL.
  • PEPPOL-EN16931-R005, R007 — montants à 2 décimales maximum.
  • PEPPOL-EN16931-R006cbc:ProfileID (BT-23) requis.

PEPPOL UBL Customisation — UBL-CR-* (éléments interdits)

  • UBL-CR-001cbc:UBLVersionID interdit (impliqué par le namespace).
  • UBL-CR-002cbc:ProfileExecutionID interdit (couvert par cbc:ProfileID).
  • UBL-CR-003cbc:CopyIndicator interdit (concerne le transport, pas le sémantique).
  • UBL-CR-004cbc:UUID interdit (BT-1 est l'identifiant unique).
  • UBL-CR-005cbc:IssueTime interdit (BT-2 est à précision jour).

Confidentialité

Limites

Le validateur n'est pas — encore — un remplaçant 1-pour-1 du Schematron officiel. Ce qui n'est pas couvert en MVP :

  • Les règles VAT complètes (BR-AE-*, BR-E-*, BR-IC-*, BR-O-*, BR-S-*, BR-Z-*) qui valident la cohérence entre catégorie de TVA, exonération, taux et pays.
  • La validation XSD UBL 2.1 stricte (cardinalités enfants, types XSD) — nous nous concentrons sur les Business Terms.
  • La résolution des références entre lignes, AllowanceCharge, et TaxTotal.
  • Les règles de codelist de second rang : UnitOfMeasure, PaymentMeansCode UNTDID 4461, catégories de TVA UNTDID 5305.
  • Les références DocumentReference et leurs MIME types (BG-24).

Pour un pipeline de production, exécuter le Schematron officiel PEPPOL-EN16931-UBL.sch reste recommandé.

Documentation associée

  • PEPPOL — la vue d'ensemble du réseau, du modèle à quatre coins et du calendrier des mandats 2026.
  • EN 16931 — le modèle sémantique européen des éléments cœur d'une facture.
  • Validateur cXML — même approche pour les documents Ariba / SAP Business Network.

Dernière mise à jour: 14 mai 2026