Attestwire › Rule reference › BR-DE-10

BR-DE-10 A delivery address needs a city

noun · XRechnung · fatal · BT-77

Your invoice was refused because it contains a delivery address with no city. The delivery address is optional, but once it is there it has to be complete, with city and post code. Add the city, or leave the delivery address out altogether. In the standard the address is group BG-15 and the city is field BT-77; BR-DE-10 is the rule that requires the city.

Diese Regel auf Deutsch: BR-DE-10 — auf Deutsch erklärt.

Business term
BT-77 — Deliver to city
Severity
fatal
Applies to
xrechnung-ubl, xrechnung-cii

The fix

Add the city to the delivery address, deliverTo.city, or remove deliverTo entirely and keep only deliveryDate (BT-72).

What the rule requires

You do not have to send group BG-15 (deliver to address). If you do send it, it only counts complete: the city (BT-77) and the post code (BT-78, see BR-DE-11) are then mandatory.

So there are two clean options: give the delivery address in full, or leave it out and keep only the actual delivery date (BT-72). What does not work is the middle way, a half-filled address block.

One exception to know about: on an intra-community supply, BR-IC-12 can require the country of destination. Then you cannot drop the group, and you have to fill it completely.

In this library the group is deliverTo and the city is deliverTo.city.

Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird.

BR-DE-10 — KoSIT XRechnung Schematron 2.6.0 (XRechnung 3.0), XRechnung-UBL-validation.sch

A passing value

the shape this field expects
"deliverTo": { "city": "Lyon", "postalCode": "69001", "countryCode": "FR" }

Why it exists

An incomplete delivery address is worse than none: the receiving system sees an address it cannot use, and nobody notices that something is missing. The German rules therefore make the group all or nothing.

What the library returns

The full error returned by @attestwire/en16931. It includes the rule ID, affected field and suggested correction. Developers can use this object in their application:

TeachingError
{
  "rule": "BR-DE-10",
  "field": "BT-77",
  "severity": "fatal",
  "message": "XRechnung requires the element \"Deliver to city\" (BT-77) whenever the deliver-to address group (BG-15) is present. BG-15 is optional, but it is all-or-nothing: a delivery address consisting only of a country code is rejected, even though core EN 16931 accepts it.",
  "fix": "Either set deliverTo.city, or drop deliverTo entirely and keep only deliveryDate (BT-72) — unless a rule such as BR-IC-12 requires the destination country, in which case you must supply the full address.",
  "example": "\"deliverTo\": { \"city\": \"Lyon\", \"postalCode\": \"69001\", \"countryCode\": \"FR\" }",
  "xpath": "/ubl:Invoice/cac:Delivery/cac:DeliveryLocation/cac:Address/cbc:CityName",
  "docsUrl": "https://attestwire.com/rules/BR-DE-10"
}

xpath is always a UBL path. On a CII invoice, look for the matching CII field instead.

How our check differs

The rule runs only when deliverTo is present, and any non-blank city passes. A delivery address holding nothing but a country code reports both this rule and BR-DE-11.

See also: BR-DE-11 — the post code of the same address; BR-IC-12 — the intra-community rule that can require the destination country.