Financial EDI en Belgique — CODA, OGM, SEPA
Au-delà de la facture, l'EDI financier belge repose sur trois piliers nationaux : CODA (relevés bancaires codifiés), OGM/VCS (communication structurée modulo 97) et SEPA avec spécificités belges. Tous interagissent avec la facture PEPPOL-BIS 3.0 du 1ᵉʳ janvier 2026 via le champ BT-83 PaymentID.
CODA — Coded Statement of Account
Le format CODA (Coded Statement of Account) est l'équivalent belge du CAMT.053 ISO 20022, mais antérieur de 30 ans. Créé par Febelfin (Association belge des Banques et des Sociétés de Bourse) en 1991, il reste massivement utilisé en B2B malgré la promotion d'ISO 20022.
- Format : texte ASCII fixe, lignes de 128 caractères, structurées en types de transactions (0/1/2/3/4/8/9).
- Encoding : ASCII pur (pas d'UTF-8). Caractères accentués remplacés par leurs équivalents non-accentués.
- Ligne 0 (Header) : identifie le compte, la date, la banque émettrice, le solde initial.
- Ligne 1 (Old balance) : solde de départ.
- Ligne 2 (Movement) : chaque transaction. Code transaction Belgilux à 8 chiffres (référence Bourse/transfert).
- Ligne 3 (Information) : communication libre + OGM/VCS si présent. C'est cette ligne qui contient le BT-83 pour réconcilier la facture.
- Ligne 8 (New balance) : solde final.
- Ligne 9 (Footer) : totaux et signature.
0000201020260519 00000000000 Releve 87 BNP PARIBAS FORTIS EUR0000000000000 0
12087BE68539007547034EUR000000010500050000026051900000000000000000ACME BELGIUM SA 00000 00000
21000100000000ACME-INV-2026-000412+++097/3300/57894+++0000000000000003000000000000026051901001
22000100000003 BLZ
23000100000003BE68539007547034EUR ACME BELGIUM SA SOL 00000
3100010000200001 00000000 0
8087BE68539007547034EUR00000000010505000260519 0
9 000000000000000000000000010500050000000000000 0
Dans cet exemple : BNP Paribas Fortis envoie à Acme Belgium SA un
relevé CODA pour le 19 mai 2026 avec un crédit de 105,00 € identifié
par la communication structurée +++097/3300/57894+++ qui
correspond exactement à la facture ACME-INV-2026-000412.
Communications structurées OGM/VCS
L'OGM (Overschrijving met Gestructureerde Mededeling, en
néerlandais) ou VCS (Virement avec Communication Structurée, en
français) est le standard belge pour les communications de
paiement. C'est un code de 12 chiffres avec checksum modulo 97,
formaté +++NNN/NNNN/NNNCC+++.
def ogm_compute(digits10: str) -> str:
"""
Calcule la communication structuree belge (OGM / Gestructureerde
mededeling) a partir d'une chaine de 10 chiffres reference.
Format final : +++NNN/NNNN/NNNCC+++ (12 caracteres total)
"""
base = int(digits10)
check = base % 97
if check == 0:
check = 97
full = digits10 + str(check).zfill(2)
return f"+++{full[:3]}/{full[3:7]}/{full[7:12]}+++"
def ogm_verify(s: str) -> bool:
"""Verifie qu'une communication structuree est valide."""
digits = ''.join(c for c in s if c.isdigit())
if len(digits) != 12:
return False
base = int(digits[:10])
check = int(digits[10:])
expected = base % 97 or 97
return check == expected
print(ogm_compute("0973300578")) # +++097/3300/57894+++
print(ogm_verify("+++097/3300/57894+++")) # True - Format affichage :
+++097/3300/57894+++(3-4-5 chiffres séparés par barres obliques, encadrés par triple plus). - Checksum : 2 derniers chiffres = (10 premiers chiffres) modulo 97 ; si résultat = 0, alors 97.
- Usage standard : facture, abonnement, cotisation, remboursement. Génération unique par invoice ID.
- Avantage opérationnel : réconciliation automatique facture ↔ paiement sans matching manuel.
- Intégration ERP : SAP, Odoo, Sage, Exact, Yuki, WinBooks supportent natively le générateur OGM/VCS.
SEPA SCT et SDD spécificités belges
La Belgique participe pleinement à la zone SEPA (Single Euro Payments Area) depuis le 1ᵉʳ février 2014 (fin transition pain.001/003 vers pain.001/008 ISO 20022). Spécificités :
- SEPA Credit Transfer (SCT) : virement standard 24h ouvré. Tarification souvent gratuite en B2C, payante en B2B (~0,10 €).
- SEPA Instant (SCT Inst) : virement instantané 10 secondes 24/7/365, généralisé en Belgique depuis novembre 2021. Limite plafonnée à 100 000 € par paiement.
- SEPA Direct Debit Core (SDD CORE) : prélèvement consommateurs. Mandat papier ou e-mandate via SignHub Belgium. Notification au débiteur minimum 14 jours avant prélèvement.
- SEPA Direct Debit B2B (SDD B2B) : prélèvement assujetti TVA-TVA. Notification 1 jour ouvré. Pas de refund automatique (R-Message limité).
- Identifiant créancier (Creditor ID) belge : format
BE<check 2>ZZZ<BCE 10>. Ex.BE12ZZZ0473495177pour Acme Belgium SA. - BIC obligatoire : uniquement pour les paiements cross-border SEPA. Pas obligatoire pour les paiements intra-BE (depuis 2016 SEPA Regulation art. 5).
ISO 20022 camt/pain en Belgique
Les banques belges supportent depuis 2014 les formats ISO 20022 XML aux côtés de CODA pour les exports/imports automatisés :
- pain.001.001.03 : initiation de virement (Customer Credit Transfer Initiation). Format d'envoi des fichiers de paiements multiples.
- pain.008.001.02 : initiation de prélèvement (Customer Direct Debit Initiation).
- camt.053.001.02 : relevé de compte XML — équivalent ISO 20022 du CODA. Plus riche en métadonnées (BankToCustomerStatement).
- camt.054.001.02 : notification de mouvements (BankToCustomerDebitCreditNotification) — pour intra-day updates.
- Coexistence pragmatique : la plupart des banques offrent simultanément CODA + camt.053. Les fiduciaires et éditeurs comptables préfèrent encore CODA (parser plus simple, taille plus compacte).
Intégration avec PEPPOL BT-83
Le pont entre la facture PEPPOL-BIS 3.0 et le paiement SEPA/CODA repose sur deux mécanismes :
- BT-83 PaymentID dans le UBL contient l'OGM/VCS belge. L'AP émetteur génère idéalement cet OGM à la volée à partir de l'invoice ID.
- Le débiteur paie par SEPA SCT en utilisant l'OGM affiché sur la facture.
- La banque créditrice produit CODA qui contient l'OGM dans la ligne 3.
- L'ERP du créancier matche automatiquement la ligne CODA avec la facture PEPPOL via l'OGM partagé.
Résultat : un cycle facture → paiement → réconciliation entièrement automatisé, sans intervention humaine.
Banques opératrices CODA
| Banque | BIC | CODA | camt.053 | SCT Inst |
|---|---|---|---|---|
| BNP Paribas Fortis | GEBABEBB | Oui | Oui | Oui |
| KBC Bank | KREDBEBB | Oui | Oui | Oui |
| Belfius Bank | GKCCBEBB | Oui | Oui | Oui |
| ING Belgium | BBRUBEBB | Oui | Oui | Oui |
| Argenta Spaarbank | ARSPBE22 | Oui | Oui | Oui |
| Crelan (anc. AXA Banque) | NICABEBB | Oui | Oui | Oui |
| ABN AMRO Belgium | ABNABE2A | Oui | Oui | Oui |
| Deutsche Bank Belgium | DEUTBEBE | Oui | Oui | Oui |
| Triodos Bank Belgium | TRIOBEBB | Oui | Oui | Oui |
| BPost Bank | BPOTBEB1 | Oui | Limité | Oui |
Toutes les principales banques belges publient leur format CODA en téléchargement automatisé via Isabel 6 (portail multi-banque Belgium) ou via leur propre portail business (BNP MyPortal, KBC Business Dashboard, Belfius Web Banking Pro).
Liens transverses
- Hub Belgique — mandat e-invoicing complet
- Arrêté royal du 20 mars 2025
- PEPPOL-BIS 3.0 Belgique
- BCE/KBO — identifiant ICD 0208
- Régimes TVA belges
- EDIFACT retail Belgique
- Febelfin — Fédération belge du secteur financier
- Banque Nationale de Belgique (BNB/NBB)
- Isabel 6 — portail multi-banque BE
- European Payments Council — SEPA