Skip to content
barcoder

Standards/structured-communication

Structured Communication (OGM/VCS)

TypePayment reference
PrimaryBE
MentionedBE
Completeness74%high

Overview

The Belgian structured communication — Dutch overschrijving met gestructureerde mededeling (OGM), French virement avec communication structurée (VCS), jointly "OGM-VCS" — is Belgium's national standard for structured remittance information on credit transfers 16. It is a 12-digit numeric reference whose last two digits are a modulo-97 check over the first ten, written visually as +++123/4567/89012+++, and it lets a beneficiary's systems automatically match an incoming payment to the invoice or customer it settles 16. It is defined and maintained by Febelfin, the Belgian Financial Sector Federation, as an Additional Optional Service (AOS) supported by banks in Belgium on SEPA payments 13.

History

Febelfin's specification states that the national standard "OGM-VCS" has been widely used for structured remittance information in Belgium "during decades" 1. With the migration to SEPA, the Belgian banking community decided to keep it alive end-to-end: Febelfin's Additional Optional Service 1 (AOS1) document (final version 1.2, dated 27 July 2017) commits banks in Belgium to support "the continuity of this national standard 'OGM-VCS' from legacy payments to SEPA payments" for SEPA Credit Transfers (SCT), SEPA Instant Credit Transfers (SCT Inst) and SEPA Direct Debits (SDD) 1. Dutch Wikipedia cites SEPAbelgium guidance from February 2013 on European transfer orders as its source for the format 6.

In 2025 Febelfin published implementation guidelines (v1.0, dated 1 February 2025) for printing the EPC SEPA Credit Transfer QR code on invoices in Belgium, which require the structured communication in the QR's structured-reference field 2.

Technical specification

  • Electronic form: exactly 12 digits, e.g. 010806817183 1.
  • Visual form: +++ 3 digits / 4 digits / 5 digits +++, e.g. +++010/8068/17183+++ 1. Three asterisks (***) are an accepted alternative delimiter to three plus signs 613.
  • Data part: the first 10 digits are free for the creditor to assign — typically a customer number or invoice number 6.
  • Check digits: the last 2 digits are the remainder of the first 10 digits (read as one integer) modulo 97; if the remainder is 0, the check digits are 97 16. Worked example from python-stdnum: 0108068171 mod 97 = 83, giving 010806817183 7.
  • Validation: banks in Belgium validate the check digits on interactive screen input; customers submitting bulk payments are "highly recommended" to validate them too; the clearing and settlement mechanism used by Belgian banks must support the AOS, and receiving banks must pass the reference to the beneficiary via (electronic) statements 1.
  • ISO 20022 mapping: carried in RmtInf/Strd/CdtrRefInf with Tp/CdOrPrtry/Cd = SCOR (StructuredCommunicationReference), Tp/Issr = BBA (The Belgian Bankers' and Stockbroking Firms' Association), and Ref = the 12 digits without delimiters 1.
<CdtrRefInf>
  <Tp>
    <CdOrPrtry><Cd>SCOR</Cd></CdOrPrtry>
    <Issr>BBA</Issr>
  </Tp>
  <Ref>010806817183</Ref>
</CdtrRefInf>
  • In the EPC QR code: EPC QR / Stuzza (EPC069-12) offers either a structured remittance reference of up to 35 characters ("Creditor Reference (ISO 11649 RF Creditor Reference may be used)") or 140 characters of unstructured text, but not both 5. Febelfin's Belgian guidelines replace that structured field's content with "Belgian Structured Communication in the format +++/123/1234/12345+++", and also specify Version 2 (BIC optional), a minimum size of 2 × 2 cm, and placement on the invoice rather than on the transfer form 2.

Use cases

  • Invoices: the reference is generally pre-printed by the beneficiary, and appears in the communication box of the Belgian paper European transfer form 4; it is the mandated structured reference for QR codes on Belgian invoices 2.
  • SEPA direct debits and instant transfers: supported end-to-end on SCT, SCT Inst and SDD 1.
  • Pooled client accounts: Bolero requires clients to put a personal structured communication on transfers to its shared client account; transfers without it cannot be processed automatically and are returned 16.
  • ERP / accounting software: Odoo's Belgian localisation generates references from the invoice ID or the partner's reference (e.g. partner reference "food buyer 654" → +++000/0000/65472+++) 11; Dolibarr generates them from the invoice number, prefixing a two-digit invoice-type code (20 standard, 30 replacement, 40 credit note, 21 deposit) 12.
  • Bank reporting: receiving banks must return the reference to the beneficiary in electronic statements 1; Febelfin publishes the CODA coded statement format and CAMT.053/054 guidelines used for that reporting 3.

Implementations

  • python-stdnum — Python, ~599 stars, active 2026. Module stdnum.be.ogm_vcs (contributed by Cédric Krier, merged September 2025; shipped in release 2.2 on 4 January 2026) provides validate, is_valid, compact, format and calc_check_digits 7810.
  • Odoo — Python, ~54.9k stars, active 2026. l10n_be computes +++XXX/XXXX/XXXXX+++ references from invoice or partner IDs 11.
  • Dolibarr — PHP, ~7.7k stars, active 2026. dolBECalculateStructuredCommunication() added October 2024, checksum fix August 2025 12.
  • belgian-structured-communication — Haskell (Hackage 0.2.0.0, January 2025) by Willem Van Onsem; parsers with optional checksum validation and a quasi-quoter, accepting + or * delimiters 13.
  • gestructureerde-mededeling — TypeScript/Angular generator, 6 stars, active 2026 14.
  • Node-Belgian-VCS-OGM — JavaScript generation and validation, 8 stars, last commit 2015 15.

Comparison

  • vs. RF Creditor Reference (ISO 11649) (ISO 11649): RF is an international, alphanumeric reference of at most 25 characters — RF + 2 check digits + up to 21 characters — introduced at the end of 2008 (SEPA rulebook 3.2) as "a standard that can be used instead of a country specific identifier" 9. Both use modulo 97, but RF converts letters to numbers and checks the whole string, while OGM-VCS is purely numeric with a fixed 10+2 layout 19. In ISO 20022, RF is marked with issuer ISO, OGM-VCS with code SCOR and issuer BBA 19. The EPC QR guidelines cite RF as the example for the structured field 5, but Febelfin requires the Belgian structured communication there for Belgian invoices 2. Choose OGM-VCS for Belgian payers and Belgian bank reconciliation; RF where cross-border, alphanumeric references are needed.
  • vs. unstructured remittance text: the EPC QR lets the payer receive either a structured reference or up to 140 characters of free text, not both 5; the check digits are what allow Belgian banks to reject mistyped references at entry 16.

Fun facts

  • Because a zero remainder is replaced by 97, the check digits can never be 00 1. Dutch Wikipedia notes the check-digit algorithm and digit count are the same as those of the classic 12-digit Belgian bank account number, which IBAN replaced in 2011 6.

Status

Active. Febelfin currently lists the OGM-VCS AOS among its published banking standards 3, its 2025 QR-on-invoice guidelines make it the structured reference in Belgian EPC QR codes (tied to EPC QR guidelines entering into force on 1 February 2026) 2, and python-stdnum added support in January 2026 8. There is no announced successor; the international alternative is the RF creditor reference 9.

Sources

1 Additional Optional Service 1 (AOS1) applied in Belgium to SCT, SCT Inst and SDD — Structured Remittance Information "OGM-VCS" — Febelfin, v1.2 (2017), accessed 2026. 2 QR-code on invoice for credit transfer initiation — Implementation guidelines for printing on invoice — Febelfin, v1.0 (2025), accessed 2026. 3 Banking standards for internet banking for businesses — Febelfin, accessed 2026. 4 Tout sur le virement européen — Febelfin, 2022, accessed 2026. 5 EPC069-12 v3.0 Quick Response Code — Guidelines to Enable the Data Capture for the Initiation of a SEPA Credit Transfer — European Payments Council, 2022, accessed 2026. 6 Gestructureerde mededeling — Wikipedia (nl), accessed 2026. 7 stdnum.be.ogm_vcs — Belgian OGM-VCS — python-stdnum documentation, accessed 2026. 8 Release 2.2 of python-stdnum — python-stdnum-announce, 2026, accessed 2026. 9 RF Creditor Reference — XMLdation, accessed 2026. 10 arthurdejong/python-stdnum — GitHub, accessed 2026. 11 odoo/odoo — addons/l10n_be/models/account_move.py — GitHub, accessed 2026. 12 Dolibarr/dolibarr — htdocs/core/lib/functions_be.lib.php — GitHub, accessed 2026. 13 belgian-structured-communication — Hackage, accessed 2026. 14 maartentibau/gestructureerde-mededeling — GitHub, accessed 2026. 15 stefanpante/Node-Belgian-VCS-OGM — GitHub, accessed 2026. 16 Communication structurée personnelle? — Bolero, accessed 2026.

Deployments

Found in the following country reports (grep across reports/countries/):

source · content/standards/structured-communication/index.md