← All Error Rules
error Class A

BR-DE-10 Deliver-to Address

What this rule checks

BR-DE-10 ensures that when a delivery address is provided in an invoice (business rule group BG-15, Deliver to Address), it contains all sub-elements required by the German XRechnung specification. When the group cac:Delivery/cac:DeliveryLocation/cac:Address is present, the mandatory fields city (cbc:CityName), postal code (cbc:PostalZone), and country code (cac:Country/cbc:IdentificationCode) must be populated.

Why this rule exists

When an invoice specifies a delivery address that differs from the billing address, it has tax and logistics implications:

  • VAT relevance: Deliveries to a location other than the buyer’s registered office can affect the place of supply and thus the tax treatment (especially for intra-community supplies or deliveries to third countries).
  • Automated processing: ERP systems use the delivery address to match goods receipt postings and logistics workflows. Incomplete addresses prevent automated matching.
  • Compliance: The German tax authority requires sufficiently detailed delivery location information when the delivery and billing addresses differ.

What triggers a failure

The rule fails when:

  • cac:Address exists within cac:DeliveryLocation but cbc:CityName is missing
  • cbc:PostalZone (postal code) is not provided
  • cac:Country/cbc:IdentificationCode (ISO 3166-1 alpha-2 country code) is absent
  • Required fields are present but empty

Important: The delivery address itself is optional. BR-DE-10 only applies when a delivery address is provided. If cac:Delivery is omitted entirely, no error occurs.

Failing XML example

<cac:Delivery>
  <cac:DeliveryLocation>
    <cac:Address>
      <!-- Only street provided — city and country are missing -->
      <cbc:StreetName>Musterstr. 1</cbc:StreetName>
    </cac:Address>
  </cac:DeliveryLocation>
</cac:Delivery>

This example is missing cbc:CityName, cbc:PostalZone, and cac:Country/cbc:IdentificationCode, constituting three simultaneous violations of BR-DE-10.

The fix

<cac:Delivery>
  <cac:DeliveryLocation>
    <cac:Address>
      <cbc:StreetName>Musterstr. 1</cbc:StreetName>
      <cbc:CityName>Berlin</cbc:CityName>
      <cbc:PostalZone>10115</cbc:PostalZone>
      <cac:Country>
        <cbc:IdentificationCode>DE</cbc:IdentificationCode>
      </cac:Country>
    </cac:Address>
  </cac:DeliveryLocation>
</cac:Delivery>

Ensure all required fields are populated:

  1. cbc:StreetName — Street name and house number
  2. cbc:CityName — City
  3. cbc:PostalZone — Postal code
  4. cac:Country/cbc:IdentificationCode — Two-letter ISO country code

Edge cases and common mistakes

  • The group itself is optional: BG-15 is optional. If your invoice has no separate delivery address, simply omit cac:Delivery entirely rather than providing an incomplete address.
  • PO box addresses: PO box addresses still require city, postal code, and country. Use cbc:PostBox instead of cbc:StreetName.
  • Country code must be ISO 3166-1 alpha-2: Use DE rather than DEU or Germany. Only the two-letter code is accepted.
  • Domestic deliveries: Even for deliveries within Germany, the country code DE must be explicitly stated; it is not assumed by default.
  • Additional address line: cbc:AdditionalStreetName (e.g., for building wing or floor) is optional but can be added for precision.
  • Alternative recipient: If a different delivery recipient needs to be specified, use cac:Delivery/cac:DeliveryParty/cac:PartyName/cbc:Name in addition to the complete address.