Belgique — 100 % Peppol depuis le 2026-01-01
La Belgique n'exploite aucun hub réglementaire central pour la facturation électronique B2B. La remise Peppol est l'événement de conformité. Flowie est un point d'accès Peppol enregistré (identifiant national be:flowie) — directement, ou via un partenaire local spécialisé lorsqu'une présence dans le pays est requise — et votre stack n'a pas besoin d'une intégration de reporting séparée.
Si vous aviez auparavant câblé le reporter de conformité HERMES de Flowie ou filtré les webhooks compliance.reported sur platform == "HERMES", ce chemin n'existe plus. Le Service Public Fédéral Finances (FPS Finance / SPF Finances) belge a fermé HERMES le 2025-12-31, après que la revue du Business Experts Group de juillet 2024 a conclu que le marché privé des points d'accès Peppol était suffisamment mature pour rendre superflu le pont gouvernemental temporaire. L'accès en consultation seule a expiré le 2026-03-31.
Désormais : envoyez les factures belges via Peppol avec le profil BE-CIUS, un point c'est tout. Aucun événement compliance.reported n'est émis pour la Belgique. Voir Migration ci-dessous pour les changements de code précis.
En bref
- La Belgique utilise le modèle Peppol à 4 coins — pas de hub central pour le B2B.
- Mandat B2B en vigueur depuis le 2026-01-01 : factures structurées en Peppol BIS Billing 3.0 avec le profil BE-CIUS, échangées de coin à coin via Peppol.
- Le B2G transite toujours par Mercurius (le hub fédéral du secteur public), obligatoire depuis 2017.
- HERMES a disparu (mis hors service le 2025-12-31). Les factures belges n'ont aucun rapport de conformité côté plateforme — l'échange Peppol est la conformité.
- Flowie publie automatiquement les entreprises belges sur le SMP Peppol. Définissez
settings.autoCompliance.BE = falsepour vous désinscrire.
Ce qui a changé — le retrait d'HERMES
HERMES était un pont gratuit exploité par l'État, géré par le FPS Finance, qui permettait aux petites entreprises d'envoyer des factures structurées aux acheteurs du secteur public (et, dans sa version ultérieure, devait servir de hub de reporting B2B). Il a toujours été positionné comme un pont temporaire jusqu'à ce que le marché privé des points d'accès Peppol arrive à maturité.
| Date | Événement | Source |
|---|---|---|
| 2024-02-06 | La Belgique adopte la loi sur la facturation électronique B2B (Loi du 6 février 2024). | Loi du 6 février 2024 (Moniteur belge) |
| 2024-07 | Le Business Experts Group réévalue HERMES et recommande sa mise hors service — le marché privé des points d'accès Peppol est jugé mature. | efacture.belgium.be (FPS Finance) |
| 2026-01-01 | Le mandat B2B entre en vigueur : toutes les transactions B2B nationales taxables doivent utiliser la facturation électronique structurée via Peppol. | OpenPeppol · Belgique |
| Fin 2025 (selon le FPS Finance) | Chemin d'envoi HERMES mis hors service. | Portail HERMES · avis officiel |
| 2026-03-31 | La fenêtre de consultation seule d'HERMES se ferme. Plateforme entièrement hors ligne. | Portail HERMES · avis officiel |
Chronologie 2017 → 2028
| Date | Qui | Quoi |
|---|---|---|
| 2017-01-01 | Toutes les entreprises BE | B2G fédéral via Mercurius (en vigueur, toujours d'application). |
| 2024-02-06 | Législateurs | Loi du 6 février 2024 promulguée (mandat B2B). |
| 2025-12-31 | FPS Finance | Chemin d'envoi HERMES mis hors service. |
| 2026-01-01 | Transactions B2B nationales taxables | Facturation électronique structurée obligatoire via Peppol BIS 3.0 (BE-CIUS). |
| 2026-03-31 | FPS Finance | La fenêtre de consultation HERMES se ferme. |
| 2028-01-01 indicatif | Tout le B2B | Contrôle continu des transactions (CTC) dans le cadre du calendrier ViDA de l'UE. Mise en œuvre belge finale à déterminer ; attendez-vous à un reporting quasi temps réel des données d'en-tête de facture au FPS Finance. |
Le modèle Peppol à 4 coins
Contrairement au PPF français ou au SDI italien, la Belgique ne fait pas transiter les factures par un régulateur central. Chaque entreprise se connecte à un point d'accès Peppol (Flowie en est un), et les factures circulent de coin à coin :
┌─────────────┐ ┌────────────┐ ┌──────────────┐ ┌────────────────┐
│ Sender ERP │ →→→ │ Sender AP │ →→ │ Recipient AP │ →→ │ Recipient ERP │
│ │ │ (Flowie) │ │ (any Peppol) │ │ │
└─────────────┘ └────────────┘ └──────────────┘ └────────────────┘
↓
[discovers recipient via SMP]
Il n'y a pas de branche parallèle vers un hub réglementaire. La piste de conformité que vous conservez est la vôtre : le Message Level Status (MLS) Peppol que vous recevez en retour du point d'accès destinataire, les événements de cycle de vie que vous enregistrez dans Flowie et votre système comptable. C'est la piste d'audit si vous êtes un jour contrôlé par le FPS Finance.
Profil BE-CIUS — ce qui est spécifique à la Belgique
La Belgique utilise Peppol BIS Billing 3.0 avec une Core Invoice Usage Specification (CIUS) qui ajoute ces contraintes par-dessus le noyau européen (EN 16931) :
- Le numéro de TVA (BTW) est obligatoire pour le vendeur comme pour l'acheteur dans tout le B2B (règle BE BIS
BR-BE-01). - La communication structurée OGM-VCS sur les paiements doit suivre le format
+++NNN/NNNN/NNNNN+++lorsqu'elle est présente, avec une somme de contrôle mod-97 valide. - Un PDF lisible par l'humain intégré est autorisé via
document.attachments[]pour les flux comptes fournisseurs. Optionnel, mais largement attendu. - Les catégories de TVA exonérée doivent référencer l'article du Code TVA (BTW) (par ex. code de catégorie
"E"avec"Article 39 BTW"dans le motif d'exonération). - La catégorie de TVA
K(livraison intracommunautaire) est rejetée lorsque le vendeur et l'acheteur sont tous deux belges — la transaction est nationale, pas intra-UE.
Champs obligatoires pour les factures belges
-
seller.vatNumberobligatoire
Format
BE0123456789(10 chiffres aprèsBE). Flowie valide auprès du registre KBO/BCE à la création de l'entreprise. -
buyer.vatNumberobligatoire pour le B2B
Même format. Pour le B2C, omettez
buyer.vatNumberet Flowie ignore les règles B2B BE-BIS. -
payment.referencestringoptionnel, validé lorsqu'il est présent
S'il est utilisé, doit être au format OGM-VCS. Flowie valide le chiffre de contrôle mod-97 et rejette avec
BR-BE-02en cas de somme de contrôle erronée. -
document.lines[].vatCategoryobligatoire
Catégories Peppol standard (
S,Z,E,AE,K,G,O,L,M) ; la Belgique rejetteKsi les deux parties sont BE. -
document.noteoptionnel
Pour le B2G, indiquez ici la référence du marché public.
Mercurius — hub B2G fédéral
Mercurius est le seul hub côté régulateur belge encore concerné. Pour les acheteurs publics fédéraux, régionaux et locaux belges, le destinataire est toujours Mercurius. L'identifiant Peppol ressemble à :
9925:BE-mercurius-<OVO-number>
Recherchez le numéro OVO de n'importe quelle entité publique dans le portail Mercurius, ou interrogez l'annuaire de Flowie :
curl https://back.p2p-flowie.com/exchange/v1/directory/search?country=BE&naceCodes=8411 \
-H "Authorization: Bearer $FLOWIE_KEY"
Envoyer une facture belge — de bout en bout
Le même POST /v1/documents/send fonctionne pour la Belgique ; rien de plus à câbler par rapport à un envoi Peppol générique. Flowie applique la validation BE-CIUS lorsque les deux numéros de TVA commencent par BE :
curl -X POST https://back.p2p-flowie.com/exchange/v1/documents/send \
-H "Authorization: Bearer $FLOWIE_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: inv-be-2026-0451" \
-d '{
"type": "invoice",
"from": "comp_be_acme",
"to": "0208:0123456789",
"document": {
"number": "INV-2026-0451",
"issueDate": "2026-04-30",
"dueDate": "2026-05-30",
"currency": "EUR",
"buyer": { "vatNumber": "BE0987654321" },
"lines": [{
"description": "Consulting — April 2026",
"quantity": 10, "unit": "hours",
"unitPrice": 150.00,
"vatCategory": "S", "vatRate": 21
}],
"payment": {
"reference": "+++123/4567/89000+++",
"iban": "BE68 5390 0754 7034"
}
}
}'
Réponse : un webhook document.sent est émis lorsque le point d'accès destinataire confirme la réception. Aucun événement compliance.reported ne suivra — c'est désormais intentionnel.
Cycle de vie des factures belges
Vous pouvez toujours appeler POST /v1/documents/{id}/lifecycle sur les factures belges pour enregistrer approved, rejected, paid, etc. — Flowie conserve la piste d'audit et émet les webhooks lifecycle.updated. La différence par rapport à la France/l'Italie :
| Pays | La mise à jour du cycle de vie émet | Rapport de conformité |
|---|---|---|
| 🇫🇷 France | lifecycle.updated + compliance.reported (PPF) | Oui — Flowie effectue le reporting vers le PPF |
| 🇮🇹 Italie | lifecycle.updated + compliance.reported (SDI) | Oui — Flowie effectue le reporting vers le SDI |
| 🇧🇪 Belgique | lifecycle.updated uniquement | Non — la remise Peppol est la conformité |
Si vos chemins de code se branchent sur compliance.reported pour la Belgique, traitez l'absence de cet événement comme le signal de succès — l'achèvement de la mise à jour du cycle de vie est la seule chose dont vous avez besoin.
Erreurs de validation
La validation BE-CIUS s'exécute dans Flowie avant même que la facture ne quitte le point d'accès. Les codes que vous voyez proviennent des artefacts standard du validateur Peppol BIS Billing 3.0 (règles métier EN 16931 + le schematron BE-CIUS). Le jeu de règles complet est volumineux — le tableau ci-dessous met en évidence les règles que la plupart des intégrations BE rencontrent.
| Famille de règles | Ce qu'elle vérifie | Où elle apparaît |
|---|---|---|
BR-CO-* | Totaux multi-lignes EN 16931 : les nets de ligne, les totaux du document et les ventilations de TVA doivent se réconcilier. | 422 Unprocessable Entity sur POST /v1/documents/send ou /validate. Vérifiez error.details[] pour le code de règle en échec et le XPath fautif. |
BR-BE-* | Ajouts BE-CIUS : TVA (BTW) obligatoire sur les parties B2B, somme de contrôle de la communication structurée OGM-VCS, catégories de TVA autorisées. | Idem — 422 synchrone. Les noms de codes spécifiques dépendent de la version du schematron BE-CIUS livrée par Flowie ; le corps de la réponse porte toujours le code de règle, la description humaine et le XPath. |
| Recherche TVA | Numéro de TVA (BTW) du vendeur / de l'acheteur actif dans le KBO/BCE. | Détecté à POST /v1/companies (création d'entreprise) — les TVA erronées n'atteignent jamais le chemin d'envoi. |
MERC-* | Acceptation B2G Mercurius — numéro OVO reconnu, schéma accepté. | Webhook document.failed avec errorCode renseigné, après le saut de remise Peppol. |
compliance.reported.failed différés. Aujourd'hui, les mêmes vérifications s'exécutent localement avant que la facture ne quitte Flowie — les échecs sont des 422 sur la réponse synchrone POST /v1/documents/send, avec le code de règle propre au validateur dans error.details[].code. Retour plus rapide, sans glue de gestion d'événements supplémentaire.
Tester votre intégration belge
Utilisez l'hôte sandbox avec une clé flw_test_…. Deux tests reproductibles couvrent les cas qui intéressent le plus les intégrateurs :
| Ce que vous voulez tester | Comment |
|---|---|
| Cas nominal BE (B2B) | TVA expéditeur BE0000000001, destinataire 0208:TEST_OK, les deux TVA renseignées. Les webhooks document.sent + document.delivered sont émis ; pas de compliance.reported. |
| Envoi B2G Mercurius | Destinataire 9925:BE-mercurius-99999. Même forme de réponse qu'un destinataire privé. |
| Destinataire injoignable | Destinataire 0208:TEST_AP_FAIL → webhook document.failed avec RECIPIENT_UNREACHABLE. |
| Rejet de validation | Envoyer avec un UBL délibérément cassé (par ex. totaux de ligne incohérents) → 422 sur la réponse synchrone. Le code de règle exact provient du schematron BE-CIUS et varie selon la version du validateur. |
Pour un test négatif exhaustif du validateur, utilisez POST /v1/documents/validate — il exécute toutes les règles BE-CIUS et renvoie l'intégralité de error.details[] sans tenter de remise Peppol.
Migration : HERMES → Peppol
Si votre stack supposait que Flowie effectuerait automatiquement le reporting des factures belges vers HERMES, voici le diff :
| Auparavant | Désormais |
|---|---|
Écouter compliance.reported avec data.platform == "HERMES" | Supprimez l'écouteur pour la Belgique. L'événement n'est plus émis. |
Se brancher sur data.platform == "HERMES" dans votre routeur de webhooks | Supprimez la branche. compliance.reported n'est émis que pour la France (PPF) et l'Italie (SDI). |
Définir settings.autoCompliance.HERMES sur une entreprise BE | Champ accepté mais sans effet ; supprimez-le au prochain rafraîchissement de config. |
Filtrer GET /v1/compliance/reports?platform=HERMES | Renvoie uniquement les lignes historiques. Les nouvelles factures BE n'ajouteront pas de lignes ici. |
Gestion des rejets sur HER-001 / HER-002 / HER-007 | Déplacez la gestion des rejets équivalente sur la réponse 422 synchrone de POST /v1/documents/send. Lisez error.details[].code (règle du schematron BE-CIUS) et error.details[].xpath (où dans l'UBL cela a échoué). |
La table compliance_reports elle-même conserve les lignes HERMES historiques pour l'audit — elles ne sont jamais supprimées, elles cessent simplement d'être créées.
FAQ
Dois-je m'enregistrer auprès de quelque chose de nouveau ?
Non. Flowie publie automatiquement les entreprises BE sur le SMP Peppol (le même enregistrement qui vous permettait déjà d'envoyer des factures Peppol partout en Europe). Il n'y a aucun successeur à HERMES.
Puis-je continuer à utiliser des factures papier pour le B2C ?
Oui. Le mandat du 2026-01-01 concerne uniquement le B2B. Le B2C reste en format libre jusqu'à nouvel ordre.
Qu'en est-il de l'exemption PME ?
Aucune exemption — le mandat couvre toutes les transactions B2B taxables quelle que soit la taille de l'entreprise, ce qui est inhabituel en Europe. Planifiez en conséquence.
Le PDF intégré en BLOB est-il obligatoire ?
Non, il est optionnel. Mais de nombreux destinataires préfèrent encore un rendu lisible par l'humain pour les comptes fournisseurs. Flowie le génère automatiquement lorsque vous envoyez du JSON.
Qu'en est-il du CTC (contrôle continu des transactions) en 2028 ?
Le gouvernement fédéral a signalé son intention de s'aligner sur le calendrier ViDA de l'UE (CTC d'ici 2028) mais aucune réglementation belge concrète n'existe encore. Lorsqu'elle arrivera, Flowie la fera apparaître de nouveau comme une branche côté régulateur — même forme que le PPF/SDI aujourd'hui. Nous l'annoncerons dans le journal des modifications.
J'avais HERMES_REPORT_URL dans mon environnement. Et maintenant ?
Vous pouvez le supprimer. Flowie ne lit plus HERMES_REPORT_URL ni HERMES_REPORT_TOKEN — l'adaptateur correspondant a été supprimé. Laisser les variables définies est sans danger mais inutile.
Références
Sources primaires (gouvernement belge & régulateur de l'UE) :
- efacture.belgium.be — portail officiel belge de facturation électronique (
belgium.be) ; périmètre du mandat B2B du 2026-01-01, exemptions, FAQ pour les contribuables. - Loi du 6 février 2024 — texte complet de la loi belge sur la facturation électronique (NUMAC
2024001635), telle que publiée au Moniteur belge le 2024-02-20. Modifie le Code de la TVA et le Code des impôts sur les revenus 1992. - eJustice · entrée officielle au Moniteur belge — version gouvernementale belge faisant autorité de la loi.
- Portail HERMES — portail officiel portant l'avis de mise hors service du FPS Finance (accès en consultation seule fermé le 2026-03-31).
- Commission UE · eInvoicing in Belgium — page de référence paneuropéenne ; base légale, périmètre du mandat, profil Peppol BIS.
- OpenPeppol · profil pays Belgique — faits Peppol faisant autorité, maintenus par OpenPeppol AISBL.
- Portail Mercurius — hub B2G fédéral géré par le FPS BOSA.
- KBO / BCE — registre belge des numéros de TVA (FPS Economy).
Analyses sectorielles (confirmation indépendante du calendrier de retrait) :
- Sovos · Belgium Sunsets Hermes — mise à jour réglementaire d'un fournisseur.
- Banqup · Belgium retires the HERMES platform — analyse fournisseur de la décision de retrait.