← All Error Rules
error Class A

BR-DE-01 Buyer Electronic Address Scheme Identifier

What this rule checks

BR-DE-01 verifies that the field BT-49-1 (Buyer electronic address identification scheme) is present and populated with a valid value. Specifically, it checks whether the schemeID attribute exists on the cbc:EndpointID element within cac:AccountingCustomerParty/cac:Party/cbc:EndpointID.

Without this scheme identifier, the routing infrastructure cannot determine what type of address is being used — whether it is a Leitweg-ID, a GLN, an email address, or another identifier type.

Why this rule exists

In the German e-invoicing ecosystem, invoices are delivered to recipients through networks such as Peppol or the central invoice receipt platforms of the German federal government (ZRE/OZG-RE). For the infrastructure to route the invoice correctly, it must know how to interpret the buyer’s electronic address.

The Leitweg-ID is the primary addressing scheme for public sector buyers in Germany. It follows the pattern 04011000-1234512345-06 and is identified by scheme code 0204. Without this identifier, the system cannot distinguish a Leitweg-ID from an arbitrary string.

This rule is a German-specific extension of the European standard EN 16931 and goes beyond the base standard requirements. It applies to all XRechnung-compliant invoices.

What triggers a failure

The rule fails when:

  • The cbc:EndpointID element within the cac:AccountingCustomerParty/cac:Party block has no schemeID attribute
  • The schemeID attribute is present but empty
  • An unregistered scheme identifier is used (e.g., a made-up code)
  • The cbc:EndpointID element is missing entirely (in combination with other rules)

Failing XML example

The following example shows an invoice where the buyer’s electronic address lacks a scheme identifier:

<cac:AccountingCustomerParty>
  <cac:Party>
    <!-- ERROR: EndpointID without schemeID attribute -->
    <cbc:EndpointID>04011000-1234512345-06</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID>K-12345</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>Federal Ministry of Examples</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>Beispielstraße 42</cbc:StreetName>
      <cbc:CityName>Berlin</cbc:CityName>
      <cbc:PostalZone>10115</cbc:PostalZone>
      <cac:Country>
        <cbc:IdentificationCode>DE</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Federal Ministry of Examples</cbc:RegistrationName>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingCustomerParty>

The fix

Add the schemeID attribute to the cbc:EndpointID element with the appropriate value for the address type being used:

<cac:AccountingCustomerParty>
  <cac:Party>
    <!-- CORRECT: Leitweg-ID with schemeID="0204" -->
    <cbc:EndpointID schemeID="0204">04011000-1234512345-06</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID>K-12345</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>Federal Ministry of Examples</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>Beispielstraße 42</cbc:StreetName>
      <cbc:CityName>Berlin</cbc:CityName>
      <cbc:PostalZone>10115</cbc:PostalZone>
      <cac:Country>
        <cbc:IdentificationCode>DE</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Federal Ministry of Examples</cbc:RegistrationName>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingCustomerParty>

The most common scheme identifiers in the German context:

SchemeCodeExample value
Leitweg-ID020404011000-1234512345-06
GLN (Global Location Number)00884000001000005
Email (Peppol)EMrechnung@behoerde.de
ICD / Company0199DE123456789

Edge cases and common mistakes

EndpointID vs. PartyIdentification: A frequent mistake is confusing cbc:EndpointID with cac:PartyIdentification/cbc:ID. Both elements can contain identifiers, but only cbc:EndpointID is used for electronic routing. PartyIdentification is a business identifier (e.g., customer number) and has no routing function.

Leitweg-ID format: The Leitweg-ID consists of three parts: coarse addressing (federal state/authority), fine addressing (organizational unit), and a check digit. Example: 04011000-1234512345-06. The format must be correct as it is validated by the platform — however, BR-DE-01 only checks for the presence of the schemeID attribute, not the format of the value itself.

Multiple buyer identifiers: An invoice can contain both cbc:EndpointID and cac:PartyIdentification. This is not only permitted but often recommended to ensure both routing and business-level assignment.

Peppol context: When sending invoices through the Peppol network, the scheme identifier must correspond to a scheme registered in the Peppol directory. The code EM for email addresses is commonly used in the Peppol context for smaller recipients without a Leitweg-ID or GLN.