PEPPOL BIS Billing 3.0 — la spec belge
Choix unique de la Belgique pour son mandat 1ᵉʳ janvier 2026, PEPPOL BIS Billing 3.0 est un sur-ensemble de l'EN 16931 maintenu par OpenPEPPOL AISBL. La CIUS Belgium ajoute une dizaine de règles nationales BE-* gérées par BOSA, sans rompre l'interopérabilité européenne.
Spécification PEPPOL BIS Billing 3.0
PEPPOL BIS Billing 3.0 est l'évolution de PEPPOL BIS Billing 5A (génération 2.0, 2010-2018), refondue en 2018 pour s'aligner sur la norme EN 16931 publiée par le CEN en octobre 2017. Pour la Belgique :
- Hiérarchie des spécifications (de la plus large à
la plus restreinte) :
- UBL 2.1 (syntaxe XML, OASIS)
- EN 16931 (sémantique européenne, CEN)
- PEPPOL BIS Billing 3.0 (profil PEPPOL, OpenPEPPOL)
- CIUS Belgium (règles nationales BOSA)
- Versionning : OpenPEPPOL publie deux releases par an (mai et novembre). La Belgique adopte automatiquement la dernière version sans gel local (différence avec la France qui ajoute des étapes de validation FNFE-MPE).
- Validation Schematron : trois couches empilées — EN 16931 (BR-*), PEPPOL (PEPPOL-EN16931-*) et CIUS Belgium (BE-*). Le validateur OpenPEPPOL applique les trois en cascade.
CIUS Belgium — règles BE-*
La CIUS (Core Invoice Usage Specification) Belgium est maintenue par BOSA en concertation avec OpenPEPPOL Belgian Authority. Elle ajoute une dizaine de règles métier nationales sans modifier le modèle sémantique. Principales règles :
| Règle | Description | Sévérité |
|---|---|---|
BE-001 | BT-29 (BCE émetteur) au schemeID 0208 obligatoire si pays émetteur = BE | fatal |
BE-002 | BT-49 (BCE destinataire) au schemeID 0208 obligatoire si pays destinataire = BE | fatal |
BE-003 | BT-83 (PaymentID communication structurée) au format +++NNN/NNNN/NNNNN+++ si présent | warning |
BE-004 | BT-84 (PayeeFinancialAccount/ID) au format IBAN belge BE.. (16 caractères) obligatoire pour SEPA SCT | fatal |
BE-005 | BT-32 (CompanyID national legal) doit pointer vers la BCE pour les assujettis BE | warning |
BE-006 | Code TVA AE (reverse charge) avec motif art. 51 §2 CTVA obligatoire si pays émetteur = BE et autoliquidation | fatal |
BE-007 | BT-3 (InvoiceTypeCode) limité à 380 (facture commerciale), 381 (avoir), 389 (facture rectificative) | fatal |
BE-008 | BT-22 (Note de facture) interdit pour B2G > 4 lignes (limite Mercurius) | warning |
BE-009 | BT-7 (TaxPointDate) recommandé pour autoliquidation et SDD | info |
BE-010 | Code BIC obligatoire si PaymentMeansCode = 30 (virement SEPA) | warning |
Champs obligatoires renforcés
Outre les ~30 champs déjà obligatoires en EN 16931, la CIUS Belgium en renforce une dizaine pour le contexte fiscal et commercial belge. Tableau de bord rapide pour les éditeurs ERP :
- BT-1 (Invoice number) : séquentiel par numéro de TVA — pas de gap autorisé (rappel art. 5 AR n° 1).
- BT-2 (Issue date) : doit être dans les 15 jours suivant l'opération (art. 4 AR n° 1).
- BT-9 (Due date) : obligatoire pour B2G (Mercurius + Hermes), recommandé pour B2B.
- BT-83 (Communication structurée) : très fortement recommandé pour faciliter le rapprochement bancaire via CODA.
- BT-90 (BIC) : obligatoire pour les paiements SEPA SCT internationaux (hors zone BE).
- BT-23 (Buyer reference) : obligatoire pour B2G (souvent le numéro de commande Mercurius/Hermes).
- BT-44 (Buyer name) : dénomination commerciale complète, conforme à l'extrait BCE/KBO.
Transport AS4 et eDelivery
Le transport est imposé en AS4 via PEPPOL eDelivery, sans alternative légale. Caractéristiques :
- AS4 OASIS ebMS 3.0 + AS4 profile (Async Push, Two-way
Push), conformément à
OASIS Standard ebms-v3-core-rels-os.zip - SBDH (Standard Business Document Header) UN/CEFACT 1.3 — wrap autour du UBL Invoice, contient Sender/Receiver PEPPOL ID, DocumentID, ProcessID
- Cipher : AES-128-GCM (recommandé) ou AES-256-GCM, conforme à PEPPOL eDelivery v4.x
- Signature : XMLDSig RSA-SHA256 (minimum) ou RSA-SHA512 (recommandé)
- Authentication : certificat X.509 émis par une autorité PEPPOL Authority (PEPPOL CA)
- Receipt : AS4 Receipt RFC 5024, obligatoire dans les 90 secondes après réception
Exemple d'invoice complet
<?xml version="1.0" encoding="UTF-8"?>
<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</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2026-BE-000412</cbc:ID>
<cbc:IssueDate>2026-05-19</cbc:IssueDate>
<cbc:DueDate>2026-06-18</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>2026-CMD-9821</cbc:BuyerReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0473495177</cbc:EndpointID>
<cac:PartyName><cbc:Name>Acme Belgium SA</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Rue de la Loi 16</cbc:StreetName>
<cbc:CityName>Bruxelles</cbc:CityName>
<cbc:PostalZone>1000</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>BE</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>BE0473495177</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Acme Belgium SA</cbc:RegistrationName>
<cbc:CompanyID schemeID="0208">0473495177</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0316380841</cbc:EndpointID>
<cac:PartyName><cbc:Name>Bruxelles Economie et Emploi</cbc:Name></cac:PartyName>
<cac:PartyTaxScheme>
<cbc:CompanyID>BE0316380841</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>+++097/3300/57894+++</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>BE68539007547034</cbc:ID>
<cac:FinancialInstitutionBranch>
<cbc:ID>BBRUBEBB</cbc:ID>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">210.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">210.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1210.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1210.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Prestation de conseil — mai 2026</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">500.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice> Validation Schematron
Trois sources de règles Schematron empilées dans le validateur OpenPEPPOL officiel :
- EN 16931-BR : 200+ règles communes UE (cardinalité, somme TVA, devise, format date).
- PEPPOL-EN16931-* : 40+ règles spécifiques au profil PEPPOL Billing (numérotation, codes types, format BIC).
- BE-* (CIUS Belgium) : 10 règles nationales (voir
tableau ci-dessus). Maintenance BOSA, repository GitHub
OpenPEPPOL/peppol-bis-invoice-3branch BE.
Le validateur officiel est peppol-validation-cli
(Apache 2.0) ou son équivalent web sur peppol.helger.com.
Le rapport SVRL produit signale la couche d'origine de chaque erreur.