Pflichtfeldlogik in vier Ebenen
| Ebene | Was sie festlegt | Beispiel |
|---|---|---|
| Umsatzsteuerrecht | Welche Rechnungsangaben steuerlich benötigt werden | Rechnungsnummer, Datum, Leistung, Entgelt und Steuer |
| EN 16931 | Semantische Business Terms, Gruppen und Berechnungsregeln | BT-1, BT-44, BG-23 und Summenlogik |
| XRechnung | Zusätzliche deutsche CIUS-Regeln | Käuferreferenz, Prozesskennung, Verkäuferkontakt und Endpoints |
| Empfänger/Transport | Auftrag, Portal oder Peppol können weitere Vorgaben auslösen | Leitweg-ID, Bestellnummer, Endpoint-Scheme oder Dateikanal |
Quellen: Gesetze im Internet · KoSIT / XStandards Einkauf · KoSIT / XStandards Einkauf
Operative Pflichtfeldmatrix für eine typische XRechnung
Die Matrix deckt die zentralen Felder ab, die bei Standardrechnungen besonders häufig benötigt oder durch Bedingungen ausgelöst werden. Verkürzte Pfade zeigen die übliche Position in UBL beziehungsweise CII; die vollständige Spezifikation und das konkrete Validierungsszenario bleiben maßgeblich.
| Term | Inhalt | Status | Auslöser | Typischer UBL-Pfad | Typischer CII-Pfad |
|---|---|---|---|---|---|
| BT-1 | Rechnungsnummer | Muss | Jede Rechnung | cbc:ID | ram:ExchangedDocument/ram:ID |
| BT-2 | Rechnungsdatum | Muss | Jede Rechnung | cbc:IssueDate | ram:ExchangedDocument/ram:IssueDateTime |
| BT-3 | Rechnungstypcode | Muss | Rechnung oder Gutschrift | cbc:InvoiceTypeCode / cbc:CreditNoteTypeCode | ram:ExchangedDocument/ram:TypeCode |
| BT-5 | Rechnungswährung | Muss | Jede Rechnung | cbc:DocumentCurrencyCode | ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode |
| BT-9 | Fälligkeitsdatum | Bedingt | Wenn ein Fälligkeitstermin angegeben wird | cbc:DueDate | ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime |
| BT-10 | Käuferreferenz | XRechnung-Muss | Empfängerreferenz, bei Behörden oft Leitweg-ID | cbc:BuyerReference | ram:ApplicableHeaderTradeAgreement/ram:BuyerReference |
| BT-13 | Bestellreferenz | Bedingt | Wenn die Rechnung auf einer Bestellung beruht | cac:OrderReference/cbc:ID | ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID |
| BT-20 | Zahlungsbedingungen | Bedingt | Wenn Zahlungsziel oder Skonto textlich erläutert wird | cbc:Note oder cac:PaymentTerms/cbc:Note | ram:SpecifiedTradePaymentTerms/ram:Description |
| BT-23 | Geschäftsprozesstyp | XRechnung-Muss | Kennzeichnet den verwendeten Geschäftsprozess | cbc:ProfileID | ram:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID |
| BT-27 | Verkäufername | Muss | Jede Rechnung | cac:AccountingSupplierParty/cac:Party/.../cbc:Name | ram:SellerTradeParty/ram:Name |
| BT-31 | USt-IdNr. Verkäufer | Bedingt | Wenn eine Umsatzsteuer-ID verwendet oder benötigt wird | cac:PartyTaxScheme/cbc:CompanyID | ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID |
| BG-5 | Anschrift Verkäufer | Muss | Strukturierte Verkäuferanschrift | cac:AccountingSupplierParty/cac:Party/cac:PostalAddress | ram:SellerTradeParty/ram:PostalTradeAddress |
| BT-40 | Ländercode Verkäufer | Muss | Teil der Verkäuferanschrift | .../cac:Country/cbc:IdentificationCode | .../ram:PostalTradeAddress/ram:CountryID |
| BG-6 | Kontakt Verkäufer | XRechnung-Muss | Erreichbare Kontaktstelle nach deutschen Regeln | cac:AccountingSupplierParty/cac:Party/cac:Contact | ram:SellerTradeParty/ram:DefinedTradeContact |
| BT-44 | Käufername | Muss | Jede Rechnung | cac:AccountingCustomerParty/cac:Party/.../cbc:Name | ram:BuyerTradeParty/ram:Name |
| BG-8 | Anschrift Käufer | Muss | Strukturierte Käuferanschrift | cac:AccountingCustomerParty/cac:Party/cac:PostalAddress | ram:BuyerTradeParty/ram:PostalTradeAddress |
| BT-55 | Ländercode Käufer | Muss | Teil der Käuferanschrift | .../cac:Country/cbc:IdentificationCode | .../ram:PostalTradeAddress/ram:CountryID |
| BT-34 | Elektronische Adresse Verkäufer | XRechnung-Muss | Endpoint mit Kennungsschema | cac:AccountingSupplierParty/cac:Party/cbc:EndpointID | ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID |
| BT-49 | Elektronische Adresse Käufer | XRechnung-Muss | Endpoint mit Kennungsschema | cac:AccountingCustomerParty/cac:Party/cbc:EndpointID | ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID |
| BT-70 | Name Lieferort | Bedingt | Wenn Lieferempfänger vom Käufer abweicht | cac:Delivery/cac:DeliveryParty/.../cbc:Name | ram:ShipToTradeParty/ram:Name |
| BT-72 | Tatsächliches Lieferdatum | Bedingt | Wenn ein einzelnes Leistungs-/Lieferdatum gilt | cac:Delivery/cbc:ActualDeliveryDate | ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime |
| BT-73/74 | Abrechnungszeitraum | Bedingt | Wenn ein Zeitraum statt eines Datums abgerechnet wird | cac:InvoicePeriod/cbc:StartDate / EndDate | ram:BillingSpecifiedPeriod/ram:StartDateTime / EndDateTime |
| BT-81 | Zahlungsartcode | Bedingt | Wenn Zahlungsanweisungen übermittelt werden | cac:PaymentMeans/cbc:PaymentMeansCode | ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode |
| BT-83 | Verwendungszweck | Bedingt | Wenn Zahlungsreferenz angegeben wird | cac:PaymentMeans/cbc:PaymentID | ram:PaymentReference |
| BT-84 | Zahlungskonto | Bedingt | Bei Überweisung oder Lastschrift entsprechend Zahlungsart | cac:PayeeFinancialAccount/cbc:ID | ram:PayeePartyCreditorFinancialAccount/ram:IBANID |
| BT-95 bis BT-101 | Dokumentnachlass | Bedingt | Wenn ein Nachlass auf Dokumentebene vorkommt | cac:AllowanceCharge[cbc:ChargeIndicator='false'] | ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator='false'] |
| BT-102 bis BT-105 | Dokumentzuschlag | Bedingt | Wenn ein Zuschlag auf Dokumentebene vorkommt | cac:AllowanceCharge[cbc:ChargeIndicator='true'] | ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator='true'] |
| BT-106 | Summe Nettopositionen | Muss | Jede Rechnung | cac:LegalMonetaryTotal/cbc:LineExtensionAmount | ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount |
| BT-107 | Summe Nachlässe | Bedingt | Wenn Dokumentnachlässe vorhanden sind | cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount | .../ram:AllowanceTotalAmount |
| BT-108 | Summe Zuschläge | Bedingt | Wenn Dokumentzuschläge vorhanden sind | cac:LegalMonetaryTotal/cbc:ChargeTotalAmount | .../ram:ChargeTotalAmount |
| BT-109 | Rechnungsbetrag ohne USt. | Muss | Jede Rechnung | cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount | .../ram:TaxBasisTotalAmount |
| BT-110 | Umsatzsteuerbetrag | Muss | Je Rechnungswährung; auch bei 0,00 konsistent abbilden | cac:TaxTotal/cbc:TaxAmount | .../ram:TaxTotalAmount |
| BT-112 | Rechnungsbetrag mit USt. | Muss | Jede Rechnung | cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount | .../ram:GrandTotalAmount |
| BT-115 | Zahlbetrag | Muss | Jede Rechnung | cac:LegalMonetaryTotal/cbc:PayableAmount | .../ram:DuePayableAmount |
| BG-23 | Umsatzsteuer-Aufschlüsselung | Muss | Mindestens eine Gruppe je Steuerkategorie/Steuersatz | cac:TaxTotal/cac:TaxSubtotal | ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax |
| BT-118 | Umsatzsteuerkategorie | Muss | Jede Steueraufschlüsselung | cac:TaxCategory/cbc:ID | ram:ApplicableTradeTax/ram:CategoryCode |
| BT-119 | Umsatzsteuersatz | Bedingt | Wenn die Kategorie einen Satz verlangt | cac:TaxCategory/cbc:Percent | ram:ApplicableTradeTax/ram:RateApplicablePercent |
| BT-120/121 | Befreiungsgrund | Bedingt | Bei steuerbefreiten Kategorien | cbc:TaxExemptionReason / ReasonCode | ram:ExemptionReason / ExemptionReasonCode |
| BG-25 | Rechnungsposition | Mindestens einmal | Mindestens eine Position | cac:InvoiceLine / cac:CreditNoteLine | ram:IncludedSupplyChainTradeLineItem |
| BT-126 | Positionsnummer | Muss | Jede Rechnungsposition | cac:InvoiceLine/cbc:ID | ram:AssociatedDocumentLineDocument/ram:LineID |
| BT-129/130 | Menge und Einheit | Muss | Jede Rechnungsposition | cbc:InvoicedQuantity@unitCode | ram:BilledQuantity@unitCode |
| BT-131 | Positionsnettobetrag | Muss | Jede Rechnungsposition | cbc:LineExtensionAmount | ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount |
| BT-146 | Artikel-Nettopreis | Muss | Jede Rechnungsposition | cac:Price/cbc:PriceAmount | ram:NetPriceProductTradePrice/ram:ChargeAmount |
| BT-151/152 | Steuerkategorie und -satz Position | Muss/Bedingt | Kategorie immer, Satz abhängig von Kategorie | cac:Item/cac:ClassifiedTaxCategory | ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax |
| BT-153 | Artikelname | Muss | Jede Rechnungsposition | cac:Item/cbc:Name | ram:SpecifiedTradeProduct/ram:Name |
Quellen: KoSIT / XStandards Einkauf · KoSIT / XStandards Einkauf · KoSIT / XStandards Einkauf
Statische Pflichtangabe oder bedingte Regel?
Ein Feld kann grundsätzlich optional sein und durch einen konkreten Wert an anderer Stelle verpflichtend werden. Wird beispielsweise eine Steuerbefreiung verwendet, muss die Befreiung fachlich begründet werden. Wird eine Zahlung per Überweisung abgebildet, müssen die dazugehörigen Zahlungsdaten konsistent sein.
Darum reicht eine einfache Ja/Nein-Checkliste nicht aus. Die Datei muss als Ganzes gegen Schema, Geschäftsregeln und das erkannte Profil geprüft werden.
Quellen: KoSIT / XStandards Einkauf · OpenPeppol
Die häufigsten Mappingfehler
- BT-10 steht nur im PDF oder Freitext, nicht in cbc:BuyerReference beziehungsweise ram:BuyerReference.
- Endpoint-ID ist vorhanden, aber schemeID fehlt oder passt nicht zum Übertragungskontext.
- Steuerbeträge auf Positionsebene stimmen nicht mit BG-23 und den Gesamtsummen überein.
- Optionale Elemente werden leer erzeugt, statt vollständig weggelassen zu werden.
- Käufer- oder Verkäufername landet in einem Adresszusatz statt im vorgesehenen Business Term.
- Stammdaten, Auftragsdaten und Belegdaten werden im Export nicht sauber getrennt.
Quellen: KoSIT / XStandards Einkauf · Forum elektronische Rechnung Deutschland · OpenPeppol
Prüfreihenfolge vor dem Versand
- Geschäftsfall und Empfängervorgaben festlegen: B2B, B2G, Portal, E-Mail oder Peppol.
- Stammdaten von Verkäufer und Käufer inklusive Endpoint- und Kontaktangaben prüfen.
- Käuferreferenz, Bestellung, Vertrag und Lieferdaten aus dem Auftrag übernehmen.
- Positionen, Steuerkategorien, Rundung und Summen aus derselben Berechnungsbasis erzeugen.
- Leere optionale Elemente entfernen und XML neu exportieren.
- Datei im Viewer lesen und anschließend mit dem passenden XSD-/Schematron-Szenario validieren.
Was diese Matrix bewusst nicht verspricht
Die Tabelle ist eine praxisorientierte Kernmatrix, keine Kopie der vollständigen normativen Spezifikation. Sie kann weder Empfängervereinbarungen noch jede bedingte Kardinalität oder Codeliste abbilden. Für eine Versandfreigabe zählt die Validierung der konkreten Datei gegen den aktuell verwendeten Regelstand.
Häufige Fragen
Ist die Leitweg-ID immer Pflicht?
Nein. Sie ist eine mögliche Käuferreferenz und wird besonders bei öffentlichen Auftraggebern verlangt.
Warum meldet der Validator ein Feld als Pflicht, das in meiner Vorlage optional ist?
Eine Geschäftsregel oder ein anderer eingetragener Wert kann das Feld für den konkreten Fall verpflichtend machen.
Kann ein Feld technisch vorhanden und trotzdem falsch sein?
Ja. Ein Platzhalter, falsches Format oder fachlich ungeeigneter Wert kann eine Regel verletzen oder die Rechnung beim Empfänger unbrauchbar machen.