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:Addressexists withincac:DeliveryLocationbutcbc:CityNameis missingcbc:PostalZone(postal code) is not providedcac: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:
cbc:StreetName— Street name and house numbercbc:CityName— Citycbc:PostalZone— Postal codecac: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:Deliveryentirely rather than providing an incomplete address. - PO box addresses: PO box addresses still require city, postal code, and country. Use
cbc:PostBoxinstead ofcbc:StreetName. - Country code must be ISO 3166-1 alpha-2: Use
DErather thanDEUorGermany. Only the two-letter code is accepted. - Domestic deliveries: Even for deliveries within Germany, the country code
DEmust 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:Namein addition to the complete address.