Account
English

PEPPOL-COMMON-R040: GLN (scheme 0088) has an invalid format

Peppol BIS Billing 3.0 rule · Error · UBL / CII

StandardPeppol BIS Billing 3.0 (OpenPeppol)SeverityError: the invoice is rejectedSyntaxUBL, CIIApplies toInvoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well.

Official rule text

[PEPPOL-COMMON-R040] GLN must have a valid format according to GS1 rules.

Why this error occurs

An identifier declared with schemeID 0088 is a GS1 Global Location Number and must be 13 digits with a correct GS1 check digit. The rule checks cbc:EndpointID, cac:PartyIdentification/cbc:ID and cbc:CompanyID with schemeID 0088 (UBL) or ram:URIID, ram:ID and ram:GlobalID with schemeID 0088 (CII) for digits only and a valid checksum. It fails when a DUNS number, an internal customer number or a GTIN is put under scheme 0088, or when the GLN contains spaces or a typo.

How to fix it

Use the real 13-digit GLN assigned by GS1, without spaces or prefixes, e.g. 4012345000009. Verify the check digit (GS1 modulo-10 algorithm) before sending. If the number is not a GLN, change the scheme: 0060 for DUNS, 0192 for a Norwegian organisation number, 9930 for a German VAT ID on EndpointID, or omit schemeID for an internal identifier on cac:PartyIdentification.

Example (valid)

<cbc:EndpointID schemeID="0088">4012345000009</cbc:EndpointID>

What the validator checks

Checked element (context):

UBL

cbc:EndpointID[@schemeID = '0088'] | cac:PartyIdentification/cbc:ID[@schemeID = '0088'] | cbc:CompanyID[@schemeID = '0088']

Test (XPath):

matches(normalize-space(), '^[0-9]+$') and u:gln(normalize-space())

CII

ram:URIID[@schemeID = '0088'] | ram:ID[@schemeID = '0088'] | ram:GlobalID[@schemeID = '0088']

Test (XPath):

matches(normalize-space(), '^[0-9]+$') and u:gln(normalize-space())

Check your invoice

Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

Frequently asked questions

What does PEPPOL-COMMON-R040 mean?

PEPPOL-COMMON-R040 is a peppol bis billing 3.0 rule: GLN must have a valid format according to GS1 rules.

Will my invoice be rejected because of PEPPOL-COMMON-R040?

Yes. PEPPOL-COMMON-R040 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.

Which formats does PEPPOL-COMMON-R040 apply to?

Invoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well. Syntax: UBL and CII.

Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue generated from the official schematron on 2026-10-14.