Rechenregeln und Querbezüge — wenn die Summen nicht zusammenpassen
BR-CO prüft nicht einzelne Felder, sondern deren Verhältnis zueinander: dass die Summen aufgehen, dass ein codierter und ein ausgeschriebener Grund dasselbe meinen, dass sich zwei Datumsangaben nicht widersprechen.
23 Regeln · 19 erklärt · Regelwerk v2026-08-31
Rundung ist die häufigste Ursache
Die Summenregeln — BR-CO-10 bis BR-CO-17 — scheitern selten daran, dass jemand falsch gerechnet hat. Sie scheitern daran, wann gerundet wurde. Wer Positionsbeträge intern mit vier Nachkommastellen führt, sie erst beim Schreiben des XML auf zwei rundet und die Summe aus den ungerundeten Werten bildet, bekommt eine Rechnung, deren Positionen sich nicht zur eigenen Summe addieren.
Die Norm verlangt es andersherum: erst runden, dann summieren. Das ist eine Zeile im Mapping und der Unterschied zwischen einer angenommenen und einer abgelehnten Rechnung.
Sich ausschließende Angaben
Die zweite Hälfte der Familie prüft Paare, von denen genau eines gesetzt sein darf oder beide dasselbe sagen müssen — Steuerzeitpunkt als Datum oder als Code, Nachlassgrund als Text und als Code. Systeme, die beide Felder „sicherheitshalber“ füllen, verstoßen genau deshalb dagegen.
Hier hilft kein Nachrechnen, sondern eine Entscheidung im Mapping: welches der beiden Felder ist die Quelle, und das andere bleibt leer.
Alle Rechen- und Querbezugsregeln
Mit dem offiziellen Regeltext. Regeln mit ausgeschriebener Erklärung tragen Ursache und Behebung direkt darunter.
- BR-CO-03
Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.
- Was die Regel verlangt
- Die Rechnung darf den Steuerstichtag entweder als Datum (BT-7) oder als Code (BT-8) angeben — niemals beides. Beide Felder beantworten dieselbe Frage: wann die Umsatzsteuer entsteht.
- Warum sie ausgelöst wird
- Mappings setzen BT-7 aus dem Leistungsdatum und füllen BT-8 zusätzlich mit einem Standardwert, weil beide Felder im Zielschema vorhanden sind und keines von beiden als „entweder/oder“ gekennzeichnet ist.
- Wie Sie es beheben
- Entscheiden Sie sich für eines. Liegt ein konkretes Datum vor, senden Sie BT-7 (cbc:TaxPointDate in UBL, ram:TaxPointDate in CII) und lassen BT-8 weg; andernfalls nur den Code in BT-8 (cac:InvoicePeriod/cbc:DescriptionCode in UBL, ram:DueDateTypeCode in CII).
- BR-CO-04
Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).
- Was die Regel verlangt
- Jede Rechnungsposition (BG-25) muss einen Umsatzsteuer-Kategoriecode (BT-151) tragen — S für den Regelsatz, E für steuerfrei, Z für den Nullsatz, AE für Reverse Charge und so weiter.
- Warum sie ausgelöst wird
- Der Code steht im Kopf der Rechnung, weil dort ohnehin die Steuerübersicht gebildet wird, und wird auf Positionsebene vergessen — besonders bei Rechnungen mit nur einem Steuersatz, wo er redundant wirkt.
- Wie Sie es beheben
- Setzen Sie BT-151 auf jeder Position: cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in UBL, ram:ApplicableTradeTax/ram:CategoryCode auf Positionsebene in CII. Auch bei einheitlichem Steuersatz muss jede Position ihn nennen.
- BR-CO-05
Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.greift nie
- BR-CO-06
Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.greift nie
- BR-CO-07
Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.greift nie
- BR-CO-08
Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.greift nie
- BR-CO-09
The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’.
- Was die Regel verlangt
- Die Umsatzsteuer-Identifikationsnummern von Verkäufer (BT-31), Steuervertreter (BT-63) und Käufer (BT-48) müssen mit dem Länderkürzel nach ISO 3166-1 alpha-2 beginnen. Griechenland darf abweichend „EL“ verwenden.
- Warum sie ausgelöst wird
- Im Debitoren- und Kreditorenstamm steht die Nummer oft ohne Präfix, weil das Land in einem eigenen Feld gepflegt wird. Beim Mapping wird dann der reine Zahlenteil übernommen — „811234567“ statt „DE811234567“.
- Wie Sie es beheben
- Stellen Sie das Länderkürzel voran und entfernen Sie Leerzeichen: cac:PartyTaxScheme/cbc:CompanyID mit cac:TaxScheme/cbc:ID = VAT in UBL, ram:SpecifiedTaxRegistration/ram:ID mit schemeID="VA" in CII.
- BR-CO-10
Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).
- Was die Regel verlangt
- Die Summe der Positionsnettobeträge (BT-106) muss exakt der Summe aller einzelnen Positionsbeträge (BT-131) entsprechen.
- Warum sie ausgelöst wird
- Tritt auf, wenn Positionsbeträge einzeln gerundet und anschließend addiert werden, während die Gesamtsumme aus ungerundeten Werten berechnet wird. Beide Wege ergeben unterschiedliche Ergebnisse.
- Wie Sie es beheben
- Runden Sie jeden Positionsbetrag auf zwei Nachkommastellen und bilden Sie die Summe aus genau diesen gerundeten Werten — nicht aus den Rohwerten.
- BR-CO-11
Sum of allowances on document level (BT-107) = Σ Document level allowance amount (BT-92).
- Was die Regel verlangt
- Die Summe der Abschläge auf Dokumentebene (BT-107) muss exakt der Summe der einzelnen Abschlagsbeträge (BT-92) entsprechen.
- Warum sie ausgelöst wird
- Der Summenwert wird aus dem eigenen Rechnungsobjekt übernommen, die Einzelabschläge aber gefiltert geschrieben — etwa weil ein Abschlag mit Betrag 0 übersprungen oder ein Rabatt zusätzlich in die Position gerechnet wurde.
- Wie Sie es beheben
- Bilden Sie BT-107 aus genau den Abschlägen, die auch im Dokument stehen: cbc:AllowanceTotalAmount in cac:LegalMonetaryTotal als Summe aller cac:AllowanceCharge mit cbc:ChargeIndicator false (UBL), ram:AllowanceTotalAmount in CII.
- BR-CO-12
Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).
- BR-CO-13
Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).
- Was die Regel verlangt
- Der Gesamtbetrag ohne Umsatzsteuer (BT-109) muss der Summe aller Positionsnettobeträge (BT-131) abzüglich der Nachlässe (BT-107) zuzüglich der Zuschläge (BT-108) auf Dokumentenebene entsprechen.
- Warum sie ausgelöst wird
- Meist werden Nachlässe oder Zuschläge auf Dokumentenebene zwar ausgewiesen, aber beim Berechnen von BT-109 vergessen — oder sie stecken bereits in den Positionspreisen und werden dann doppelt abgezogen.
- Wie Sie es beheben
- Berechnen Sie BT-109 strikt nach der Formel Σ BT-131 − BT-107 + BT-108 aus genau den Werten, die im Dokument stehen. Ein Rabatt gehört entweder in die Position oder auf Dokumentenebene — nie in beide.
- BR-CO-14
Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).
- Was die Regel verlangt
- Der Gesamtsteuerbetrag der Rechnung (BT-110) muss der Summe der Steuerbeträge aller Steuerkategorien (BT-117) entsprechen.
- Warum sie ausgelöst wird
- Klassisch, wenn BT-110 aus den einzeln gerundeten Positionssteuern berechnet wird, die Kategoriebeträge aber aus den Bemessungsgrundlagen — beide Wege weichen um Rundungsdifferenzen voneinander ab.
- Wie Sie es beheben
- Berechnen Sie zuerst je Kategorie BT-117 aus der Bemessungsgrundlage und bilden Sie BT-110 als exakte Summe genau dieser Kategoriebeträge — nicht als eigene, unabhängige Rechnung.
- BR-CO-15
Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
- Was die Regel verlangt
- Der Gesamtbetrag mit Umsatzsteuer (BT-112) muss exakt der Summe aus Gesamtbetrag ohne Umsatzsteuer (BT-109) und Gesamtsteuerbetrag (BT-110) entsprechen.
- Warum sie ausgelöst wird
- Häufig wird BT-112 aus dem internen System übernommen, während BT-109 und BT-110 neu berechnet werden — schon ein Cent Rundungsdifferenz zwischen beiden Welten löst den Fehler aus.
- Wie Sie es beheben
- Leiten Sie BT-112 immer als BT-109 + BT-110 aus den beiden Dokumentwerten ab, statt einen unabhängig berechneten Bruttobetrag einzutragen. Dezimalarithmetik verwenden, nie float.
- BR-CO-16
Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
- BR-CO-17
VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
- BR-CO-18
An Invoice shall at least have one VAT breakdown group (BG-23).
- Was die Regel verlangt
- Die Rechnung muss mindestens eine Umsatzsteuer-Aufschlüsselung (BG-23) enthalten — je Steuerkategorie einen Block mit Nettobetrag, Steuerbetrag, Kategorie und Satz.
- Warum sie ausgelöst wird
- Bei steuerfreien Rechnungen wirkt der Block überflüssig und wird weggelassen. Die Regel verlangt ihn trotzdem: „keine Steuer“ ist selbst eine Aussage, und sie gehört aufgeschlüsselt.
- Wie Sie es beheben
- Schreiben Sie je Steuerkategorie ein cac:TaxTotal/cac:TaxSubtotal (UBL) beziehungsweise ein ram:ApplicableTradeTax (CII) — auch für E oder Z, dort mit Steuerbetrag 0 und dem Befreiungsgrund.
- BR-CO-19
If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.
- Was die Regel verlangt
- Wird ein Abrechnungszeitraum (BG-14) übermittelt, muss mindestens ein Datum darin stehen: Beginn (BT-73), Ende (BT-74) oder beides. Ein leerer Zeitraum ist keine Angabe.
- Warum sie ausgelöst wird
- Die Gruppe wird im Mapping bedingungslos angelegt und erst danach befüllt. Fehlen beide Daten im Quellsystem — etwa bei einer einmaligen Leistung —, bleibt eine leere Hülle im Dokument stehen.
- Wie Sie es beheben
- Legen Sie die Gruppe nur an, wenn wenigstens ein Datum vorliegt: cac:InvoicePeriod mit cbc:StartDate und/oder cbc:EndDate in UBL, ram:BillingSpecifiedPeriod mit ram:StartDateTime und/oder ram:EndDateTime in CII.
- BR-CO-20
If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.
- Was die Regel verlangt
- Wird auf einer Position ein Leistungszeitraum (BG-26) übermittelt, muss mindestens ein Datum darin stehen: Beginn (BT-134), Ende (BT-135) oder beides. Das Gegenstück zu BR-CO-19 auf Positionsebene.
- Warum sie ausgelöst wird
- Derselbe Fehler wie im Kopf, nur häufiger: Positionen werden in einer Schleife erzeugt, und die Zeitraum-Gruppe wird für jede Position angelegt, obwohl nur manche davon einen Zeitraum haben.
- Wie Sie es beheben
- Erzeugen Sie cac:InvoicePeriod innerhalb der cac:InvoiceLine nur dann, wenn ein Datum vorliegt — in CII entsprechend ram:BillingSpecifiedPeriod innerhalb der Position.
- BR-CO-21
Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.
- Was die Regel verlangt
- Jeder Abschlag auf Dokumentebene (BG-20) muss begründet sein — im Klartext (BT-97), als Code (BT-98) oder beides. Ein Betrag ohne Grund ist für den Empfänger nicht prüfbar.
- Warum sie ausgelöst wird
- Der Betrag steht im Rechnungsobjekt, der Grund nur in der PDF-Darstellung. Im strukturierten Datensatz bleibt dann eine Zeile über 50,00 € Abzug ohne jede Erklärung übrig.
- Wie Sie es beheben
- Geben Sie mindestens eines der beiden an: cbc:AllowanceChargeReason oder cbc:AllowanceChargeReasonCode im cac:AllowanceCharge (UBL), ram:Reason oder ram:ReasonCode im ram:SpecifiedTradeAllowanceCharge (CII).
- BR-CO-22
Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.
- Was die Regel verlangt
- Jeder Zuschlag auf Dokumentebene (BG-21) muss einen Grund tragen — im Klartext (BT-104), als Code (BT-105) oder beides.
- Warum sie ausgelöst wird
- Zuschläge entstehen oft erst spät im Prozess, etwa aus dem Versanddienstleister, und werden als reiner Betrag durchgereicht. Beim Empfänger landet ein Aufschlag, den niemand zuordnen kann, und Rechnungen mit unerklärten Aufschlägen bleiben liegen.
- Wie Sie es beheben
- Ergänzen Sie cbc:AllowanceChargeReason oder cbc:AllowanceChargeReasonCode im cac:AllowanceCharge mit cbc:ChargeIndicator true (UBL) beziehungsweise ram:Reason oder ram:ReasonCode im ram:SpecifiedTradeAllowanceCharge (CII).
- BR-CO-23
Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.
- Was die Regel verlangt
- Jeder Abschlag auf einer Rechnungsposition (BG-27) muss begründet sein — im Klartext (BT-139), als Code (BT-140) oder beides.
- Warum sie ausgelöst wird
- Positionsrabatte kommen aus der Preisfindung und tragen dort selten mehr als einen Prozentsatz. Der Grund existiert im Quellsystem oft gar nicht und kann deshalb auch nicht gemappt werden.
- Wie Sie es beheben
- Übernehmen Sie die Rabattart aus der Preisfindung, oder setzen Sie einen zutreffenden Standardgrund. Geschrieben wird cbc:AllowanceChargeReason beziehungsweise cbc:AllowanceChargeReasonCode im cac:AllowanceCharge der Position (UBL), ram:Reason oder ram:ReasonCode in CII.
- BR-CO-24
Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.
- Was die Regel verlangt
- Jeder Zuschlag auf einer Rechnungsposition (BG-28) muss einen Grund tragen — im Klartext (BT-144), als Code (BT-145) oder beides.
- Warum sie ausgelöst wird
- Der seltenste der vier Fälle, und deshalb der, für den im Mapping am ehesten gar kein Feld vorgesehen wurde: der Betrag wird durchgereicht, weil er in der Summe gebraucht wird, der Grund fällt weg.
- Wie Sie es beheben
- Schreiben Sie cbc:AllowanceChargeReason oder cbc:AllowanceChargeReasonCode in das cac:AllowanceCharge der Position mit cbc:ChargeIndicator true (UBL) beziehungsweise ram:Reason oder ram:ReasonCode in das ram:SpecifiedTradeAllowanceCharge der Position (CII).
- BR-CO-26
In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.
- Was die Regel verlangt
- Damit der Käufer den Lieferanten automatisch zuordnen kann, muss mindestens eine Kennung des Verkäufers vorhanden sein: eine Verkäuferkennung (BT-29), die Registernummer (BT-30) oder die Umsatzsteuer-Identifikationsnummer (BT-31).
- Warum sie ausgelöst wird
- Der Verkäufer wird mit Name und Anschrift übermittelt, weil das für den Menschen genügt. Für den automatischen Abgleich im Kreditorenstamm des Empfängers reicht ein Name nicht — Schreibweisen ändern sich, Kennungen nicht.
- Wie Sie es beheben
- Senden Sie mindestens eine davon: cac:PartyIdentification/cbc:ID (BT-29), cac:PartyLegalEntity/cbc:CompanyID (BT-30) oder cac:PartyTaxScheme/cbc:CompanyID (BT-31) in UBL; in CII ram:SellerTradeParty/ram:ID, ram:SpecifiedLegalOrganization/ram:ID beziehungsweise ram:SpecifiedTaxRegistration/ram:ID.
NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.