E-Rechnung Validator
Zurück zur Übersicht

xrechnung · xml · beispiel

XRechnung-XML erstellen – Anleitung mit CII-Beispiel

XRechnung-XML selbst erstellen: vollständiges CII-Beispiel (XRechnung 3.0) mit Pflichtfeldern und BT-Nummern, Leitweg-ID und Prüfung mit dem KoSIT-Validator.

Eine XRechnung ist eine XML-Datei nach der europäischen Norm EN 16931, ergänzt um deutsche Regeln. Es gibt sie in zwei Syntaxen: UBL und CII. Dieser Artikel zeigt eine vollständige Rechnung in CII (XRechnung 3.0), erklärt die Pflichtfelder mit ihren BT-Nummern und nennt zu jedem Feld die Meldung des KoSIT-Validators, wenn es fehlt. Alle Angaben im Beispiel sind erfunden.

Die Datei wurde mit dem KoSIT-Validator geprüft, dem frei verfügbaren Prüfprogramm der Koordinierungsstelle für IT-Standards (KoSIT), und ihrer Prüfkonfiguration für XRechnung vom 31.08.2026. Er hat sie angenommen. Den Prüfbericht, die Datei zum Download und die gleiche Rechnung als UBL findest du bei den XRechnung-Beispielen.

So ist die Datei aufgebaut

Die Feldnummern stammen aus der Norm: BT steht für ein einzelnes Feld (Business Term), BG für eine Gruppe von Feldern (Business Group). In der CII-Syntax liegt alles unter dem Wurzelelement rsm:CrossIndustryInvoice, in drei Teilen:

  • rsm:ExchangedDocumentContext trägt zwei Kennungen: den Geschäftsprozess (BT-23) und die Spezifikationskennung (BT-24). BT-24 macht die Datei zur XRechnung 3.0.
  • rsm:ExchangedDocument trägt Rechnungsnummer (BT-1), Rechnungstyp (BT-3), Rechnungsdatum (BT-2) und eine Anmerkung (BT-22).
  • rsm:SupplyChainTradeTransaction trägt den Rest:
    • je Position ein Block ram:IncludedSupplyChainTradeLineItem (BG-25),
    • ram:ApplicableHeaderTradeAgreement mit Käuferreferenz (BT-10), Verkäufer (BG-4), Käufer (BG-7) und Bestellnummer (BT-13),
    • ram:ApplicableHeaderTradeDelivery mit dem Lieferdatum (BT-72),
    • ram:ApplicableHeaderTradeSettlement mit Währung (BT-5), Zahlungsanweisung (BG-16), Steueraufschlüsselung (BG-23), Rechnungszeitraum (BG-14), Zahlungsbedingungen (BT-20) und Summen (BG-22).

Das vollständige Beispiel: XRechnung 3.0 als CII

Das ist die Datei xrechnung-cii.xml, Zeichen für Zeichen. Die Kommentare nennen die Feldnummer zu jedem Element. Die Rechnung hat drei Positionen: zwei mit 19 % Umsatzsteuer (zusammen 1.390,00 € netto) und eine mit 7 % (56,00 € netto). Netto sind es 1.446,00 €, die Umsatzsteuer beträgt 268,02 €, der Zahlbetrag 1.714,02 €.

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Beispiel: XRechnung 3.0 als CII-Rechnung (Syntax: UN/CEFACT Cross Industry Invoice, D16B)
  Inhaltlich dieselbe Rechnung wie xrechnung-ubl.xml, nur in der anderen Syntax.
  Alle Angaben sind erfunden: Musterfirma, Beispiel-IBAN, Beispiel-Leitweg-ID.
  Die Kürzel BT-n und BG-n in den Kommentaren sind die Feldnummern der Norm EN 16931.
  Die Datei darf frei verwendet werden.
-->
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
                          xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
                          xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
  <rsm:ExchangedDocumentContext>
    <!-- BT-23 Geschäftsprozess -->
    <ram:BusinessProcessSpecifiedDocumentContextParameter>
      <ram:ID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ram:ID>
    </ram:BusinessProcessSpecifiedDocumentContextParameter>
    <!-- BT-24 Spezifikationskennung: Diese Zeile macht die Datei zur XRechnung 3.0 -->
    <ram:GuidelineSpecifiedDocumentContextParameter>
      <ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</ram:ID>
    </ram:GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>

  <rsm:ExchangedDocument>
    <!-- BT-1 Rechnungsnummer -->
    <ram:ID>RE-2026-1042</ram:ID>
    <!-- BT-3 Rechnungstyp: 380 = Handelsrechnung -->
    <ram:TypeCode>380</ram:TypeCode>
    <!-- BT-2 Rechnungsdatum (format 102 = JJJJMMTT) -->
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260930</udt:DateTimeString>
    </ram:IssueDateTime>
    <!-- BT-22 Anmerkung zur Rechnung -->
    <ram:IncludedNote>
      <ram:Content>Vielen Dank für Ihren Auftrag.</ram:Content>
    </ram:IncludedNote>
  </rsm:ExchangedDocument>

  <rsm:SupplyChainTradeTransaction>
    <!-- BG-25 Position 1 -->
    <ram:IncludedSupplyChainTradeLineItem>
      <ram:AssociatedDocumentLineDocument>
        <!-- BT-126 Positionsnummer -->
        <ram:LineID>1</ram:LineID>
      </ram:AssociatedDocumentLineDocument>
      <ram:SpecifiedTradeProduct>
        <!-- BT-153 Artikelname -->
        <ram:Name>Beratung IT-Sicherheit</ram:Name>
      </ram:SpecifiedTradeProduct>
      <ram:SpecifiedLineTradeAgreement>
        <ram:NetPriceProductTradePrice>
          <!-- BT-146 Nettopreis -->
          <ram:ChargeAmount>95.00</ram:ChargeAmount>
        </ram:NetPriceProductTradePrice>
      </ram:SpecifiedLineTradeAgreement>
      <ram:SpecifiedLineTradeDelivery>
        <!-- BT-129 Menge und BT-130 Einheit (HUR = Stunde) -->
        <ram:BilledQuantity unitCode="HUR">12</ram:BilledQuantity>
      </ram:SpecifiedLineTradeDelivery>
      <ram:SpecifiedLineTradeSettlement>
        <!-- BG-30 Umsatzsteuer der Position: BT-151 Kategorie, BT-152 Satz -->
        <ram:ApplicableTradeTax>
          <ram:TypeCode>VAT</ram:TypeCode>
          <ram:CategoryCode>S</ram:CategoryCode>
          <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
        </ram:ApplicableTradeTax>
        <ram:SpecifiedTradeSettlementLineMonetarySummation>
          <!-- BT-131 Nettobetrag der Position -->
          <ram:LineTotalAmount>1140.00</ram:LineTotalAmount>
        </ram:SpecifiedTradeSettlementLineMonetarySummation>
      </ram:SpecifiedLineTradeSettlement>
    </ram:IncludedSupplyChainTradeLineItem>

    <!-- BG-25 Position 2 -->
    <ram:IncludedSupplyChainTradeLineItem>
      <ram:AssociatedDocumentLineDocument>
        <ram:LineID>2</ram:LineID>
      </ram:AssociatedDocumentLineDocument>
      <ram:SpecifiedTradeProduct>
        <ram:Name>Wartung Webserver, Monat September</ram:Name>
      </ram:SpecifiedTradeProduct>
      <ram:SpecifiedLineTradeAgreement>
        <ram:NetPriceProductTradePrice>
          <ram:ChargeAmount>250.00</ram:ChargeAmount>
        </ram:NetPriceProductTradePrice>
      </ram:SpecifiedLineTradeAgreement>
      <ram:SpecifiedLineTradeDelivery>
        <!-- MON = Monat -->
        <ram:BilledQuantity unitCode="MON">1</ram:BilledQuantity>
      </ram:SpecifiedLineTradeDelivery>
      <ram:SpecifiedLineTradeSettlement>
        <ram:ApplicableTradeTax>
          <ram:TypeCode>VAT</ram:TypeCode>
          <ram:CategoryCode>S</ram:CategoryCode>
          <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
        </ram:ApplicableTradeTax>
        <ram:SpecifiedTradeSettlementLineMonetarySummation>
          <ram:LineTotalAmount>250.00</ram:LineTotalAmount>
        </ram:SpecifiedTradeSettlementLineMonetarySummation>
      </ram:SpecifiedLineTradeSettlement>
    </ram:IncludedSupplyChainTradeLineItem>

    <!-- BG-25 Position 3 mit ermäßigtem Steuersatz -->
    <ram:IncludedSupplyChainTradeLineItem>
      <ram:AssociatedDocumentLineDocument>
        <ram:LineID>3</ram:LineID>
      </ram:AssociatedDocumentLineDocument>
      <ram:SpecifiedTradeProduct>
        <ram:Name>Fachbuch E-Rechnung (gedruckt)</ram:Name>
      </ram:SpecifiedTradeProduct>
      <ram:SpecifiedLineTradeAgreement>
        <ram:NetPriceProductTradePrice>
          <ram:ChargeAmount>28.00</ram:ChargeAmount>
        </ram:NetPriceProductTradePrice>
      </ram:SpecifiedLineTradeAgreement>
      <ram:SpecifiedLineTradeDelivery>
        <!-- H87 = Stück -->
        <ram:BilledQuantity unitCode="H87">2</ram:BilledQuantity>
      </ram:SpecifiedLineTradeDelivery>
      <ram:SpecifiedLineTradeSettlement>
        <ram:ApplicableTradeTax>
          <ram:TypeCode>VAT</ram:TypeCode>
          <ram:CategoryCode>S</ram:CategoryCode>
          <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
        </ram:ApplicableTradeTax>
        <ram:SpecifiedTradeSettlementLineMonetarySummation>
          <ram:LineTotalAmount>56.00</ram:LineTotalAmount>
        </ram:SpecifiedTradeSettlementLineMonetarySummation>
      </ram:SpecifiedLineTradeSettlement>
    </ram:IncludedSupplyChainTradeLineItem>

    <ram:ApplicableHeaderTradeAgreement>
      <!-- BT-10 Käuferreferenz: bei öffentlichen Auftraggebern die Leitweg-ID -->
      <ram:BuyerReference>04011000-1234512345-06</ram:BuyerReference>
      <!-- BG-4 Verkäufer -->
      <ram:SellerTradeParty>
        <!-- BT-27 Name des Verkäufers -->
        <ram:Name>Musterfirma Digital GmbH</ram:Name>
        <!-- BG-6 Ansprechpartner des Verkäufers -->
        <ram:DefinedTradeContact>
          <ram:PersonName>Maria Muster</ram:PersonName>
          <ram:TelephoneUniversalCommunication>
            <ram:CompleteNumber>+49 123 4567890</ram:CompleteNumber>
          </ram:TelephoneUniversalCommunication>
          <ram:EmailURIUniversalCommunication>
            <ram:URIID>rechnung@musterfirma-digital.example</ram:URIID>
          </ram:EmailURIUniversalCommunication>
        </ram:DefinedTradeContact>
        <!-- BG-5 Anschrift des Verkäufers -->
        <ram:PostalTradeAddress>
          <ram:PostcodeCode>12345</ram:PostcodeCode>
          <ram:LineOne>Musterstraße 1</ram:LineOne>
          <ram:CityName>Musterstadt</ram:CityName>
          <ram:CountryID>DE</ram:CountryID>
        </ram:PostalTradeAddress>
        <!-- BT-34 elektronische Adresse des Verkäufers (EM = E-Mail) -->
        <ram:URIUniversalCommunication>
          <ram:URIID schemeID="EM">rechnung@musterfirma-digital.example</ram:URIID>
        </ram:URIUniversalCommunication>
        <!-- BT-31 Umsatzsteuer-Identifikationsnummer des Verkäufers (VA = USt-IdNr.) -->
        <ram:SpecifiedTaxRegistration>
          <ram:ID schemeID="VA">DE123456789</ram:ID>
        </ram:SpecifiedTaxRegistration>
      </ram:SellerTradeParty>
      <!-- BG-7 Käufer -->
      <ram:BuyerTradeParty>
        <!-- BT-44 Name des Käufers -->
        <ram:Name>Stadt Beispielhausen, Amt für Digitalisierung</ram:Name>
        <!-- BG-8 Anschrift des Käufers -->
        <ram:PostalTradeAddress>
          <ram:PostcodeCode>54321</ram:PostcodeCode>
          <ram:LineOne>Rathausplatz 1</ram:LineOne>
          <ram:CityName>Beispielhausen</ram:CityName>
          <ram:CountryID>DE</ram:CountryID>
        </ram:PostalTradeAddress>
        <!-- BT-49 elektronische Adresse des Käufers -->
        <ram:URIUniversalCommunication>
          <ram:URIID schemeID="EM">rechnungseingang@beispielhausen.example</ram:URIID>
        </ram:URIUniversalCommunication>
      </ram:BuyerTradeParty>
      <!-- BT-13 Bestellnummer des Käufers -->
      <ram:BuyerOrderReferencedDocument>
        <ram:IssuerAssignedID>B-2026-0815</ram:IssuerAssignedID>
      </ram:BuyerOrderReferencedDocument>
    </ram:ApplicableHeaderTradeAgreement>

    <!-- BG-13 Lieferangaben -->
    <ram:ApplicableHeaderTradeDelivery>
      <ram:ActualDeliverySupplyChainEvent>
        <!-- BT-72 Lieferdatum -->
        <ram:OccurrenceDateTime>
          <udt:DateTimeString format="102">20260930</udt:DateTimeString>
        </ram:OccurrenceDateTime>
      </ram:ActualDeliverySupplyChainEvent>
    </ram:ApplicableHeaderTradeDelivery>

    <ram:ApplicableHeaderTradeSettlement>
      <!-- BT-83 Verwendungszweck -->
      <ram:PaymentReference>RE-2026-1042</ram:PaymentReference>
      <!-- BT-5 Währung -->
      <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
      <!-- BG-16 Zahlungsanweisung -->
      <ram:SpecifiedTradeSettlementPaymentMeans>
        <!-- BT-81 Zahlungsart: 58 = SEPA-Überweisung -->
        <ram:TypeCode>58</ram:TypeCode>
        <!-- BG-17 Überweisung -->
        <ram:PayeePartyCreditorFinancialAccount>
          <!-- BT-84 Zahlungskonto, hier die IBAN (Beispiel-IBAN) -->
          <ram:IBANID>DE89370400440532013000</ram:IBANID>
          <!-- BT-85 Kontoinhaber -->
          <ram:AccountName>Musterfirma Digital GmbH</ram:AccountName>
        </ram:PayeePartyCreditorFinancialAccount>
      </ram:SpecifiedTradeSettlementPaymentMeans>
      <!-- BG-23 Steueraufschlüsselung -->
      <ram:ApplicableTradeTax>
        <!-- BT-117 Steuerbetrag, BT-116 Steuerbasisbetrag -->
        <ram:CalculatedAmount>264.10</ram:CalculatedAmount>
        <ram:TypeCode>VAT</ram:TypeCode>
        <ram:BasisAmount>1390.00</ram:BasisAmount>
        <!-- BT-118 Steuerkategorie: S = Regelsteuersatz, BT-119 Steuersatz -->
        <ram:CategoryCode>S</ram:CategoryCode>
        <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
      </ram:ApplicableTradeTax>
      <ram:ApplicableTradeTax>
        <ram:CalculatedAmount>3.92</ram:CalculatedAmount>
        <ram:TypeCode>VAT</ram:TypeCode>
        <ram:BasisAmount>56.00</ram:BasisAmount>
        <ram:CategoryCode>S</ram:CategoryCode>
        <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
      </ram:ApplicableTradeTax>
      <!-- BG-14 Rechnungszeitraum -->
      <ram:BillingSpecifiedPeriod>
        <ram:StartDateTime>
          <udt:DateTimeString format="102">20260901</udt:DateTimeString>
        </ram:StartDateTime>
        <ram:EndDateTime>
          <udt:DateTimeString format="102">20260930</udt:DateTimeString>
        </ram:EndDateTime>
      </ram:BillingSpecifiedPeriod>
      <ram:SpecifiedTradePaymentTerms>
        <!-- BT-20 Zahlungsbedingungen -->
        <ram:Description>Zahlbar innerhalb von 30 Tagen ohne Abzug.</ram:Description>
        <!-- BT-9 Fälligkeitsdatum -->
        <ram:DueDateDateTime>
          <udt:DateTimeString format="102">20261030</udt:DateTimeString>
        </ram:DueDateDateTime>
      </ram:SpecifiedTradePaymentTerms>
      <!-- BG-22 Summen -->
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <!-- BT-106 Summe der Positionsbeträge -->
        <ram:LineTotalAmount>1446.00</ram:LineTotalAmount>
        <!-- BT-109 Gesamtbetrag ohne Umsatzsteuer -->
        <ram:TaxBasisTotalAmount>1446.00</ram:TaxBasisTotalAmount>
        <!-- BT-110 Gesamtbetrag der Umsatzsteuer -->
        <ram:TaxTotalAmount currencyID="EUR">268.02</ram:TaxTotalAmount>
        <!-- BT-112 Gesamtbetrag mit Umsatzsteuer -->
        <ram:GrandTotalAmount>1714.02</ram:GrandTotalAmount>
        <!-- BT-115 fälliger Zahlungsbetrag -->
        <ram:DuePayableAmount>1714.02</ram:DuePayableAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

Datei herunterladen und im Validator prüfen · Als Rechnung anzeigen

Pflichtfelder mit BT-Nummern

Zu jeder Zeile haben wir das Feld aus der Beispieldatei entfernt und die Datei vom KoSIT-Validator prüfen lassen (Version 1.6.3, Prüfkonfiguration vom 31.08.2026). Die Regelkennungen in der letzten Spalte stammen aus seinem Bericht. Wo mehrere stehen, hat ein fehlendes Feld mehrere Regeln verletzt.

BTFeldElement in CIIWert im BeispielWenn es fehlt (KoSIT-Meldung)
BT-24SpezifikationskennungGuidelineSpecifiedDocumentContextParameter / IDurn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0Kein Prüfszenario: Dokumenttyp „unbekannt“, die Datei wird abgewiesen
BT-23GeschäftsprozessBusinessProcessSpecifiedDocumentContextParameter / IDurn:fdc:peppol.eu:2017:poacc:billing:01:1.0PEPPOL-EN16931-R001
BT-1RechnungsnummerExchangedDocument / IDRE-2026-1042XML-Schemafehler (cvc-complex-type.2.4.a)
BT-2RechnungsdatumIssueDateTime / DateTimeString20260930 (format="102")XML-Schemafehler
BT-3RechnungstypExchangedDocument / TypeCode380BR-04
BT-5WährungInvoiceCurrencyCodeEURBR-05
BT-10Käuferreferenz (Leitweg-ID)ApplicableHeaderTradeAgreement / BuyerReference04011000-1234512345-06BR-DE-15
BT-27Name des VerkäufersSellerTradeParty / NameMusterfirma Digital GmbHBR-06
BT-37, BT-38, BT-40Ort, Postleitzahl, Land des VerkäufersPostalTradeAddress / CityName, PostcodeCode, CountryIDMusterstadt, 12345, DEBR-DE-3, BR-DE-4, BR-09
BT-31USt-IdNr. des VerkäufersSpecifiedTaxRegistration / ID mit schemeID="VA"DE123456789BR-S-02, BR-CO-26 und BR-DE-16, siehe BT-31 fehlt
BT-34Elektronische Adresse des VerkäufersURIUniversalCommunication / URIID mit schemeID="EM"rechnung@musterfirma-digital.examplePEPPOL-EN16931-R020; ohne schemeID: BR-62
BG-6Ansprechpartner des Verkäufers (BT-41 Name, BT-42 Telefon, BT-43 E-Mail)DefinedTradeContactMaria Muster, Telefon, E-MailBR-DE-2 für die Gruppe; BR-DE-5, BR-DE-6, BR-DE-7 für einzelne Felder
BT-44Name des KäufersBuyerTradeParty / NameStadt Beispielhausen, Amt für DigitalisierungBR-07
BT-49Elektronische Adresse des KäufersURIUniversalCommunication / URIID mit schemeID="EM"rechnungseingang@beispielhausen.examplePEPPOL-EN16931-R010
BT-52, BT-53, BT-55Ort, Postleitzahl, Land des KäufersPostalTradeAddress / CityName, PostcodeCode, CountryIDBeispielhausen, 54321, DEBR-DE-8, BR-DE-9, BR-11
BG-16Zahlungsanweisung mit BT-81 ZahlungsartSpecifiedTradeSettlementPaymentMeans / TypeCode58 (SEPA-Überweisung)BR-DE-1 für die Gruppe; BR-49 für die Zahlungsart
BT-84IBANPayeePartyCreditorFinancialAccount / IBANIDDE89370400440532013000 (Beispiel-IBAN)Fehlt nur die IBAN: BR-50, BR-61, CII-SR-470. Fehlt die ganze Kontogruppe (BG-17): BR-DE-23-a bei Zahlungsart 58, dazu CII-SR-470
BT-106, BT-109, BT-112, BT-115Summe der Positionen, Netto, Brutto, ZahlbetragSpecifiedTradeSettlementHeaderMonetarySummation1446.00, 1446.00, 1714.02, 1714.02BR-12, BR-13, BR-14, BR-15 und Rechenregeln wie BR-CO-15
BT-110Umsatzsteuer gesamtTaxTotalAmount268.02BR-CO-15
BG-23Steueraufschlüsselung (BT-116 Basis, BT-117 Betrag, BT-118 Kategorie, BT-119 Satz)ApplicableHeaderTradeSettlement / ApplicableTradeTaxje Steuersatz ein BlockBR-CO-18 für die Gruppe; BR-45, BR-46, BR-47, BR-48 für einzelne Felder
BG-25PositionenIncludedSupplyChainTradeLineItemdrei BlöckeBR-16
BT-126PositionsnummerAssociatedDocumentLineDocument / LineID1, 2, 3XML-Schemafehler
BT-153ArtikelnameSpecifiedTradeProduct / NameBeratung IT-SicherheitBR-25
BT-129, BT-130Menge und EinheitBilledQuantity mit unitCode12, HUR (Stunde)BR-22 für die Menge, BR-23 für die Einheit
BT-146NettopreisNetPriceProductTradePrice / ChargeAmount95.00BR-26
BT-131Nettobetrag der PositionLineTotalAmount1140.00BR-24
BT-151, BT-152Steuerkategorie und Steuersatz der PositionSpecifiedLineTradeSettlement / ApplicableTradeTaxS, 19.00BR-CO-04 für die Kategorie, BR-S-05 für den Satz

Was die Messung noch gezeigt hat:

  • Die Straße ist kein Pflichtfeld. Ohne Straße (BT-35, BT-50) hat der KoSIT-Validator die Datei angenommen. Ort, Postleitzahl und Land brauchst du.
  • Ein fehlendes Feld löst oft mehrere Meldungen aus. Fehlt die USt-IdNr., melden BR-S-02 (je Steuerzeile), BR-CO-26 und BR-DE-16 gleichzeitig. Behebe zuerst das Feld, nicht jede Meldung einzeln.
  • Summenfelder hängen zusammen. Fehlt ein Betrag, schlagen die Rechenregeln BR-CO-10, BR-CO-13, BR-CO-15 und BR-CO-16 an. Mehr dazu: Bruttobetrag stimmt nicht.
  • Schemafehler zuerst. Fehlt ein Element, das das XML-Schema verlangt, meldet der Validator einen Fehler vom Typ cvc-… und prüft die Geschäftsregeln nicht weiter. Hilfe: XML-Schema-Fehler.

Dieselbe Rechnung in UBL

Die XRechnung 3.0 gibt es auch in der Syntax UBL. Die Feldnummern bleiben gleich, nur Aufbau und Elementnamen ändern sich: Aus ram:ID im Block rsm:ExchangedDocument wird cbc:ID auf oberster Ebene, aus ram:BuyerReference wird cbc:BuyerReference. Die Beispieldateien xrechnung-ubl.xml (Rechnung) und xrechnung-ubl-gutschrift.xml (Gutschrift) zeigen das. Beide hat der KoSIT-Validator ebenfalls angenommen.

Profil EN 16931: gleiche Daten, andere Kennung

Trägt BT-24 den Wert urn:cen.eu:en16931:2017, ist die Datei keine XRechnung, sondern eine Rechnung im Profil EN 16931. So steckt sie auch in einer ZUGFeRD-Rechnung. Die Beispieldatei en16931-cii.xml zeigt das. Der KoSIT-Validator wendet dann die Regeln der Norm an, nicht die der XRechnung.

Gemessen: Dort sind Käuferreferenz (BT-10), Ansprechpartner des Verkäufers (BG-6), Geschäftsprozess (BT-23) und die elektronischen Adressen (BT-34, BT-49) optional. Ersetzt man in der Datei nur BT-24 durch die XRechnung-Kennung, nimmt der KoSIT-Validator sie als XRechnung an, weil sie diese Felder schon enthält.

Datei prüfen

  1. Speichere die XML als UTF-8-Datei mit der Endung .xml.
  2. Lade sie im Validator hoch. Zum Ausprobieren lässt sich das Beispiel direkt prüfen.
  3. Der Prüfbericht nennt zu jedem Befund die Regelkennung, die Originalmeldung des Prüfers und die Fundstelle in der Datei. Zu häufigen Meldungen gibt es Lösungsseiten in der Fehlerdatenbank.
  4. Die Prüfung dauert wenige Sekunden. Die Datei liegt nur während der Prüfung im Arbeitsspeicher und wird danach gelöscht.

Wie die Rechnung für Menschen aussieht, zeigt Rechnung anzeigen: Übersicht, Positionen, Informationen und Anhänge.

Häufige Fragen

Kann ich mehrere Steuersätze in einer Rechnung kombinieren? Ja. Das Beispiel enthält Positionen mit 19 % und mit 7 %. In der Steueraufschlüsselung (BG-23) gibt es je Steuersatz einen Block mit Bemessungsgrundlage (BT-116) und Steuerbetrag (BT-117). Summe und Einzelbeträge müssen zusammenpassen, sonst melden die Rechenregeln wie BR-CO-14 und BR-CO-17 einen Fehler.

Was passiert, wenn ein Feld fehlt? Der Validator meldet es mit Regelkennung, Originalmeldung und Fundstelle. Die Tabelle oben zeigt, welche Kennung zu welchem Feld gehört.

Muss BT-10 immer eine Leitweg-ID sein? Das Feld muss in einer XRechnung vorhanden sein (BR-DE-15). Bei öffentlichen Auftraggebern ist es die Leitweg-ID, die dir der Auftraggeber nennt. Mehr dazu: Leitweg-ID / Käuferreferenz fehlt.

Soll ich die XML von Hand schreiben? Für einzelne Tests ist das möglich: Nimm die Beispieldatei und ändere die Werte. Für den laufenden Betrieb erzeugt deine Rechnungssoftware die Datei. Prüfe jeden Export, bevor du ihn versendest.

Fazit

Eine gültige XRechnung braucht die richtige Kennung in BT-24, die vollständigen Pflichtfelder und Summen, die zueinander passen. Das Beispiel oben erfüllt das nachweislich: Der KoSIT-Validator hat es angenommen. Passe es an deine Daten an, prüfe das Ergebnis im Validator und lies bei Meldungen die Fehlerdatenbank.