How OGM Payment Codes Work: Check Digits, SEPA, and Typos

An OGM payment code is the 12-digit structured reference printed on Belgian invoices — short for Overschrijving met gestructureerde mededeling, or “transfer with structured communication” — that your banking app uses to automatically match your payment to the right bill. When you pay a Belgian utility, insurance premium, or tax assessment, you type this number into the structured communication field, and the recipient’s accounting system closes out the invoice the moment the money lands.

What the Code Looks Like on Your Invoice

An OGM is 12 digits split into three groups: 3 digits, then 4, then 5. The groups are separated by forward slashes, and the whole sequence sits between triple plus signs. A typical code reads +++010/8068/17183+++.

The plus signs and slashes are not decoration. They tell banking software that what sits between the delimiters is a structured reference rather than a free-text note. During electronic processing the formatting is stripped away and the code travels as a plain 12-digit number (010806817183). The slashes and pluses exist so you can read the code on paper or screen.

Where to Type the Code in Your Banking App

Belgian banking apps and online portals give you two separate message fields when you set up a transfer: one for structured communication and one for free communication. Getting the OGM into the right field is what makes the system work.

The structured communication field expects exactly 12 digits that follow the Modulo 97 rule. When you paste or type the code there, the bank validates it immediately and blocks the payment if the check digits don’t add up. This is where every OGM belongs. The free communication field is an open text box for personal notes like “birthday gift” or “rent for June,” and it undergoes no validation at all.

If you drop your OGM into the free communication field by mistake, the payment still goes through. But the recipient’s system doesn’t recognize it as a structured reference. The money arrives and sits unmatched, and someone has to manually work out which invoice it covers. For large billers processing thousands of payments a day, that creates real delays. Some automated systems refund mismatched payments outright rather than sort them by hand.

What Happens if You Enter the Wrong Code

Entering an invalid OGM is hard to do, because the app catches check-digit failures before the transfer leaves your account. The more realistic mistake is entering a valid OGM that belongs to a different invoice or a different customer.

When that happens, the payment is automatically applied to whoever owns that code. Sorting it out usually means contacting the billing company directly, and how long that takes varies. For recurring bills like utilities or insurance, where each billing cycle generates a new OGM, reusing last month’s code on this month’s payment is a common version of the error. The transfer succeeds, but it may credit a closed billing period and leave the current one unpaid, which can trigger a late-payment notice.

The safest habit is to copy the OGM straight from the current invoice, or scan the payment QR code if one is printed, instead of typing from memory or reusing an old code.

Why Typos Get Caught: The Check Digits

The last two digits of every OGM are check digits generated by a Modulo 97 calculation, the same error-detection logic used for IBAN validation. It catches nearly every common typo: a transposed pair, a single wrong digit, an accidentally repeated number.

The math is simple. Take the first 10 digits as a single number and divide by 97. The remainder becomes the final two digits. If the remainder is zero, the check digits are set to 97 instead. For a 10-digit base of 0108068171, dividing by 97 leaves a remainder of 83, giving the full code 010806817183.

Your banking app runs the same calculation the instant you enter a code. Mismatched check digits mean the app rejects the entry before the payment can be sent. Errors get caught at the keyboard rather than days later in reconciliation.

How Businesses Build the Code From an Invoice Number

Businesses generate OGM codes from their own internal references, usually an invoice number or customer ID. The reference is padded with leading zeros to reach 10 digits (invoice number 500 becomes 0000000500), and the Modulo 97 formula produces the final two check digits.

Some businesses pack more into the 10-digit base than a bare invoice number. A company might place a customer ID in the first digits and a payment sequence in the rest. The structure is flexible as long as the final 10-digit number feeds cleanly into the check-digit calculation. Each code is unique to a specific transaction, which is what lets the recipient’s accounting software close out the matching invoice automatically when the money arrives.

OGM and SEPA

The OGM system predates the Single Euro Payments Area but has been formally folded into it as an Additional Optional Service (AOS1). Belgian banks are required to support OGM codes end-to-end within SEPA Credit Transfers, SEPA Instant Credit Transfers, and SEPA Direct Debits. Receiving banks must pass the structured reference through to the customer’s statement, and the clearing systems must preserve the OGM data across the transaction chain.

For domestic Belgian payments the system works seamlessly. On cross-border SEPA transfers, a foreign bank may transmit the reference, but the receiving party’s system has to understand the Belgian OGM format for automated matching to kick in. If you’re paying a Belgian invoice from outside Belgium, the code still belongs in the structured reference field, though whether your bank surfaces that field the same way varies by country.

Who Sets the Rules

Febelfin, the Belgian Financial Sector Federation, defines and maintains the technical specifications for OGM codes: the format, the Modulo 97 check-digit rule, the field mappings for electronic transmission, and the handling obligations placed on banks. Every Belgian bank implements the same specifications, which is why the OGM experience looks identical from one institution to the next. The National Bank of Belgium provides broader oversight of the country’s payment and clearing infrastructure that carries these transactions.