Skip to content

BR-DEX – XRechnung extension

BR-DEX-04: party identifier scheme not from the ISO 6523 list

ErrorXRechnung business rule (KoSIT)

Official message

[BR-DEX-04] Any scheme identifier in MUST be coded using one of the ISO 6523 ICD list.

Source: KoSIT XRechnung, version 3.0.2 (Schematron 2.6.0)

How to fix it

Set in the schemeID attribute of the party identifier the fitting ISO 6523 code, for example 0088 for GLN, 0060 for DUNS or 0204 for the Leitweg-ID, or leave the attribute out when the identifier comes from no register.

Before – invalid
<cac:PartyIdentification>
  <cbc:ID schemeID="GLN">4012345000009</cbc:ID>
</cac:PartyIdentification>
After – corrected
<cac:PartyIdentification>
  <cbc:ID schemeID="0088">4012345000009</cbc:ID>
</cac:PartyIdentification>

What the message means

A party identifier of your invoice carries a scheme the extension does not know. The scheme says which body issued the identifier and must be a code from the ISO 6523 list, for example 0088 for a GLN or 0204 for a Leitweg-ID. Free labels such as GLN or DUNS as text are rejected, because the recipient could not assign the identifier to any register. For the creditor identifier SEPA applies as an exception.

Common causes

  • The name of the scheme was entered instead of the ISO code, for example GLN instead of 0088.
  • The scheme was written in lower case or with spaces.
  • An internal customer number was given an invented scheme.

Frequently asked

Why may SEPA stand as a scheme although it is not in ISO 6523?

Because the norm maps the creditor identifier BT-90 exactly so: as a party identifier with the scheme SEPA. The extension keeps this exception.

What if I simply leave the scheme out?

Then the identifier is a free number without a register; that is permitted, but the recipient cannot check it automatically.

Fields concerned

  • BT-29
  • BT-46
  • BT-60

Related rules

Check your invoice

The XRechnung validator reports this rule with the line number and location – right in your browser, without upload.

Open the XRechnung validator

Technical details
UBL · Context (XPath)
cac:PartyIdentification/cbc:ID[@schemeID and $isExtension]
UBL · Schematron test
((not(contains(normalize-space(@schemeID), ' ')) and contains($ISO-6523-ICD-EXT-CODES, concat(' ', normalize-space(@schemeID), ' ')))) or ((not(contains(normalize-space(@schemeID), ' ')) and contains(' SEPA ', concat(' ', normalize-space(@schemeID), ' '))) and ((ancestor::cac:AccountingSupplierParty) or (ancestor::cac:PayeeParty)))
CII · Context (XPath)
//ram:GlobalID[@schemeID and $isExtension][not(ancestor::ram:SpecifiedTradeProduct) and not(ancestor::ram:ShipToTradeParty)]
CII · Schematron test
((not(contains(normalize-space(@schemeID), ' ')) and contains($ISO-6523-ICD-EXT-CODES, concat(' ', normalize-space(@schemeID), ' '))))

Explanation written on 14 September 2026