On this page
What a Belgian structured communication is
A Belgian structured communication is a twelve-digit payment reference written as +++123/4567/89002+++. Ten digits identify the invoice or the customer; the last two are a check: the ten digits divided by 97, keeping the remainder, with 97 instead of 00 when nothing remains. The rule comes from Febelfin, the federation of Belgian banks, and every bank in Belgium supports it. On invoices you will also see it called gestructureerde mededeling in Dutch, communication structurée in French, or simply OGM or VCS.
If you invoice customers in Belgium, this is the reference they expect. Their banking app reads it, your bank can match the transfer to the right invoice without anyone reading free text, and a typo shows up because the check no longer adds up. If you buy from a Belgian supplier, it is the code you copy into your transfer.
The tool above does four things. It creates a structured communication from an invoice or customer number, checks one you received, converts a whole list from a spreadsheet into a CSV, and builds the payment QR code for your invoice. Everything runs in your browser; nothing you type is sent anywhere.
Invoice INV2026-0042 as a payment reference
- Keep the digitsINV2026-0042 becomes 20260042. Letters and dashes drop out, and more than ten digits does not fit.
- Pad to tenZeros on the left make 0020260042, so every reference has the same length.
- Divide by 9797 goes into 0020260042 exactly 208,866 times, which makes 20,260,002. The remainder is 40.
- Add it at the endTwelve digits in groups of three, four and five: +++002/0260/04240+++.
Check digits from one invoice number
1 · Your invoice number
20260042
Letters and dashes drop out.
2 · Padded to ten
0020260042Two zeros on the left.
3 · Divided by 97 / 4 · Remainder at the end
0020260042400020260042÷ 97 = 208,866remainder 40
97 goes in 208,866 times. Twelve digits in three groups.
Your communication
+++002/0260/04240+++
A typo shows at once
- On the invoice
- 002026004240
- remainder 40, check 40
- As typed
- 0020260040
- remainder 22, check 40
Not valid: your customer's software or your bank sees the error before anyone has to trace the payment by hand.
Febelfin's rule: ten digits, the remainder of the division by 97 as check digits, and 97 when the remainder is zero.
Worked examples from real invoice numbers
The headline example works the same way. 1234567890 divided by 97 is 12,727,504, and 97 times 12,727,504 is 1,234,567,888. That leaves 2, so the check digits are 02 and the reference is +++123/4567/89002+++. Febelfin uses 010806817183 in its own standard: 0108068171 leaves 83, so +++010/8068/17183+++ is valid.
| Your number | Ten digits | Divided by 97 | Structured communication |
|---|---|---|---|
| INV2026-0042 | 0020260042 | 208,866 times, remainder 40 | +++002/0260/04240+++ |
| Customer 4711 | 0000004711 | 48 times, remainder 55 | +++000/0004/71155+++ |
| 1234567890 | 1234567890 | 12,727,504 times, remainder 2 | +++123/4567/89002+++ |
| 97 | 0000000097 | 1 time, remainder 0 | +++000/0000/09797+++ |
Use the invoice number when every payment settles one invoice: your bank and your accounting can match each transfer to exactly one document. Use the customer number for payments that repeat, such as rent, a subscription or a maintenance contract: the customer sets the reference once in a standing order and you see per customer what came in. An order number of eleven digits or more does not fit; drop a prefix or the year.
What the check digits catch, we ran through the tool for every wrong digit and every swap: one wrong digit is always caught, two neighbouring digits swapped are always caught, a missing digit is caught because twelve digits are required. Two errors at once are caught nearly always. What no check can see is a valid reference that belongs to another invoice, so a payment can still land on the wrong document when the amount happens to match.
Structured communication or RF reference
Belgium has its own reference; the rest of Europe uses ISO 11649. Which one fits depends on where your customer pays from.
- Looks like
- Belgian structured communication+++002/0260/04240+++
- RF creditor reference (ISO 11649)RF73 INV2 0260 042
- Characters
- Belgian structured communicationTwelve digits
- RF creditor reference (ISO 11649)RF, two check digits, up to 21 letters or digits
- Check
- Belgian structured communicationTen digits modulo 97, 97 for zero
- RF creditor reference (ISO 11649)Modulo 97 as in an IBAN
- Known by
- Belgian structured communicationEvery bank in Belgium
- RF creditor reference (ISO 11649)Banks across the euro payments area
- Best for
- Belgian structured communicationCustomers who pay from a Belgian account
- RF creditor reference (ISO 11649)Customers who pay from abroad
Selling in Belgium and abroad? Put both on the invoice: the tool shows the RF reference under every structured communication it creates.
Typing errors that leave payments unmatched
- The reference retyped by hand from a PDF: one digit wrong, and the payment arrives without an invoice.
- A reference built in a spreadsheet that dropped the leading zeros: 20260042 instead of 0020260042.
- The reference typed in the free-text field instead of the structured field of the transfer.
- One transfer that pays two invoices with a single reference.
- A reference made per project instead of per invoice.
- An invoice number of eleven or more digits that was quietly shortened.
Where the reference goes: invoice, Peppol and the payment QR
Since 1 January 2026, Belgian VAT-registered companies must send each other structured e-invoices over the Peppol network; a PDF by e-mail no longer counts. If your Belgian customers ask whether you are on Peppol, our guide to e-invoicing in Belgium explains the rules, Is Peppol mandatory in Belgium? says who must comply, and the Peppol check shows which of your customers can already receive e-invoices. Getting your own company on the network is covered in Peppol registration.
| Where | Which field | How it appears |
|---|---|---|
| The invoice your customer reads | Next to your IBAN in the payment details | +++002/0260/04240+++ |
| A Peppol e-invoice | PaymentID under PaymentMeans (BT-83) | The twelve digits, as your software writes them |
| The payment QR code | Structured remittance, up to 35 characters | +++002/0260/04240+++ |
| A bank payment file | Code SCOR, issuer BBA | 002026004240 |
The payment QR code follows EPC069-12 of the European Payments Council: the customer scans it in a banking app and gets your name, IBAN, amount and reference filled in, then approves the transfer. The code holds at most 331 bytes, uses error correction level M and carries a name of up to 70 characters and an amount up to 999,999,999.99 euros. Febelfin added Belgian guidelines, in force since 1 February 2026: version 002 without a mandatory BIC, the structured communication in its +++ form, at least 2 by 2 centimetres, and on the invoice itself rather than on a transfer form. The QR mode of the tool follows those rules and checks your IBAN before it draws the code.
Outside Belgium: what is different
Febelfin describes the structured communication as supported by the banks in Belgium. A payer's bank in the Netherlands, Germany or the UK need not know it, and your customer there often does not either. For customers there, use the RF reference, which the tool creates from the same invoice number. A Dutch or German company that receives payments from Belgian customers into a Belgian account gains most from the structured communication; into a foreign account, the RF reference is the safer choice. Ask your bank whether it matches RF payments automatically, since banks differ.
Matching payments automatically in your accounting
Matching means tying the money on your account to the open invoice. With a structured communication, nobody has to look: your accounting package reads the bank statements, finds the twelve digits, finds the invoice that carries them and marks it paid when the amount agrees. Without one, or with free text such as "invoices 42 and 43", the payment lands on a pile that someone sorts by hand, and every payment left unmatched is a reminder you might send by mistake.
Three habits make the difference. Let your invoicing compute the reference for every invoice, so nobody types it. Put the same reference on the PDF, in the payment QR code and in the Peppol e-invoice, so your customer never copies it. And have your accounting or platform read the bank statements daily. Choosing a package? Check that it does all three before you sign; Odoo pricing and Odoo alternatives compare the usual candidates, and which software for Peppol helps if you only need e-invoicing.
Belgian payment references, answered
Do I need a structured communication on invoices to Belgium?
It is the convention of the Belgian banks, set down by Febelfin, for matching payments automatically. You can also use free text or an RF reference, but then someone matches the payment by hand. Belgian customers expect it.
Can it contain letters?
No, digits only: ten plus the two check digits. The tool drops the letters of your invoice number. If you want to keep letters, use the RF reference, which takes up to 21 letters or digits.
What happens when the remainder is zero?
The check digits become 97, never 00. Number 97 itself is an example: 97 divided by 97 leaves 0, so it becomes +++000/0000/09797+++.
Why does my customer's bank refuse the reference?
Usually the check digits are wrong, from a typo or a reference made by hand. Choose Check in the tool: it tells you whether the reference is valid, what the right check digits are and whether two digits look swapped.
How do I add a payment QR code to my invoice?
Choose QR code in the tool and fill in your invoice number, the name on your account, your IBAN and the amount. You get an EPC payment QR as PNG or SVG. Febelfin asks for at least 2 by 2 cm, printed on the invoice.
Is what I type stored?
No. The tool runs in your browser. Only a single invoice number goes into the page address, so you can share a result. A list, your name, your IBAN and your amount never do.