Code-BeispieleFür Entwickler & Buchhaltung

E-Rechnung Beispiel – echte XML-Beispiele

So sieht eine E-Rechnung wirklich aus: Echte XML-Beispiele für XRechnung (UBL & CII), ZUGFeRD und Factur-X – Feld für Feld erklärt, mit BT-Code-Tabelle nach EN 16931.

UBL & CII Beispiele
BT-Codes erklärt
KoSIT-konform

GrundlagenWie sieht eine E-Rechnung aus?

Wie sieht eine E-Rechnung aus?

Eine E-Rechnung ist keine einfache PDF, sondern eine strukturierte Datei nach der Norm EN 16931. Zwei Hauptformate sind in Deutschland relevant:

  • XRechnung: Eine reine XML-Datei, entweder im Syntax UBL (Universal Business Language) oder CII (Cross Industry Invoice).
  • ZUGFeRD: Eine hybride PDF/A-3-Datei mit eingebettetem XML (CII). Die PDF ist menschenlesbar, das XML maschinenlesbar.

Beide Formate transportieren denselben semantischen Inhalt: Rechnungsnummer (BT-1), Rechnungsdatum (BT-2), Positionen, Beträge, Steuerbetrag und Käufer-Referenz (bei B2G die Leitweg-ID). Der Unterschied liegt in der XML-Struktur.

Beispiel 1XRechnung UBL

XRechnung – UBL Beispiel

Minimalbeispiel einer XRechnung im UBL-Syntax. Im Code sind die wichtigsten EN-16931-Felder als BT-Codes kommentiert.

<?xml version="1.0" encoding="UTF-8"?>
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0</cbc:CustomizationID>
  <cbc:ID>RE-2026-0042</cbc:ID>                                    <!-- BT-1 -->
  <cbc:IssueDate>2026-04-21</cbc:IssueDate>                        <!-- BT-2 -->
  <cbc:DueDate>2026-05-21</cbc:DueDate>                            <!-- BT-9 -->
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>                   <!-- BT-3 -->
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>         <!-- BT-5 -->
  <cbc:BuyerReference>04011000-12345-37</cbc:BuyerReference>       <!-- BT-10 Leitweg-ID -->

  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyName>
        <cbc:Name>Max Mustermann GmbH</cbc:Name>                   <!-- BT-27 -->
      </cac:PartyName>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>DE123456789</cbc:CompanyID>                 <!-- BT-31 -->
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <cac:Party>
      <cac:PartyName>
        <cbc:Name>Behörde XYZ</cbc:Name>                           <!-- BT-44 -->
      </cac:PartyName>
    </cac:Party>
  </cac:AccountingCustomerParty>

  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>          <!-- BT-109 -->
  </cac:TaxTotal>

  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">119.00</cbc:TaxInclusiveAmount>   <!-- BT-112 -->
    <cbc:PayableAmount currencyID="EUR">119.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>

  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Beratungsleistung</cbc:Name>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

Kern-Merkmal UBL: Namespace urn:oasis:names:specification:ubl:schema:xsd:Invoice-2, Wurzel-Element <ubl:Invoice>, Struktur über cbc:- (Basic) und cac:- (Aggregate) Präfixe.

Beispiel 2XRechnung CII

XRechnung – CII Beispiel

Dasselbe Geschäftsvorgang, aber im CII-Syntax (Cross Industry Invoice). Dies ist auch die Struktur, die ZUGFeRD intern nutzt.

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <ram:GuidelineSpecifiedDocumentContextParameter>
      <ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0</ram:ID>
    </ram:GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>

  <rsm:ExchangedDocument>
    <ram:ID>RE-2026-0042</ram:ID>                              <!-- BT-1 -->
    <ram:TypeCode>380</ram:TypeCode>                           <!-- BT-3 -->
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260421</udt:DateTimeString>   <!-- BT-2 -->
    </ram:IssueDateTime>
  </rsm:ExchangedDocument>

  <rsm:SupplyChainTradeTransaction>
    <ram:ApplicableHeaderTradeAgreement>
      <ram:BuyerReference>04011000-12345-37</ram:BuyerReference>  <!-- BT-10 -->
      <ram:SellerTradeParty>
        <ram:Name>Max Mustermann GmbH</ram:Name>                  <!-- BT-27 -->
        <ram:SpecifiedTaxRegistration>
          <ram:ID schemeID="VA">DE123456789</ram:ID>              <!-- BT-31 -->
        </ram:SpecifiedTaxRegistration>
      </ram:SellerTradeParty>
      <ram:BuyerTradeParty>
        <ram:Name>Behörde XYZ</ram:Name>                          <!-- BT-44 -->
      </ram:BuyerTradeParty>
    </ram:ApplicableHeaderTradeAgreement>

    <ram:ApplicableHeaderTradeSettlement>
      <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>      <!-- BT-5 -->
      <ram:ApplicableTradeTax>
        <ram:CalculatedAmount>19.00</ram:CalculatedAmount>        <!-- BT-109 -->
        <ram:TypeCode>VAT</ram:TypeCode>
        <ram:BasisAmount>100.00</ram:BasisAmount>
        <ram:CategoryCode>S</ram:CategoryCode>
        <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
      </ram:ApplicableTradeTax>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:LineTotalAmount>100.00</ram:LineTotalAmount>
        <ram:TaxBasisTotalAmount>100.00</ram:TaxBasisTotalAmount>
        <ram:TaxTotalAmount currencyID="EUR">19.00</ram:TaxTotalAmount>
        <ram:GrandTotalAmount>119.00</ram:GrandTotalAmount>       <!-- BT-112 -->
        <ram:DuePayableAmount>119.00</ram:DuePayableAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

Kern-Merkmal CII: Namespace urn:un:unece:uncefact:data:standard:CrossIndustryInvoice, Wurzel-Element <rsm:CrossIndustryInvoice>. Datumsfelder im UN/EDIFACT-Format (format="102" bedeutet YYYYMMDD).

EN 16931BT-Codes

Die wichtigsten BT-Codes im Überblick

BT ("Business Term") sind die standardisierten Feld-Codes der EN 16931. Insgesamt gibt es ~160 BT-Codes – hier die wichtigsten für Standardrechnungen.

CodeBedeutungBeispiel
BT-1RechnungsnummerRE-2026-0042
BT-2Rechnungsdatum2026-04-21
BT-3Rechnungstyp380 (Rechnung) / 381 (Gutschrift)
BT-5WährungEUR
BT-9Fälligkeitsdatum2026-05-21
BT-10Käufer-Referenz (Leitweg-ID bei B2G)04011000-12345-37
BT-24Customization IDurn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0
BT-27Name VerkäuferMax Mustermann GmbH
BT-31USt-IdNr. VerkäuferDE123456789
BT-44Name KäuferBehörde XYZ
BT-106Rechnungsbetrag netto100.00
BT-109Steuerbetrag19.00
BT-112Rechnungsbetrag brutto119.00

Vollständige BT-Code-Liste: KoSIT XRechnung-Spezifikation. Geschäftsregeln (BR-Codes) werden zusätzlich im Schematron definiert.

Hybrides FormatZUGFeRD

ZUGFeRD-Beispiel: XML in der PDF

Eine ZUGFeRD-Rechnung ist technisch eine PDF/A-3-Datei mit einem eingebetteten XML-Anhang. Das XML folgt der CII-Struktur (wie das Beispiel oben) und wird in der PDF als factur-x.xml (Profil EN 16931 / EXTENDED) oder zugferd-invoice.xml (ältere Profile) gespeichert.

Der customization ID bei ZUGFeRD im Profil EN 16931 lautet:

<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:en16931</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>

Factur-X Zwilling: Eine ZUGFeRD-Rechnung im Profil EN 16931 ist strukturell identisch mit einer Factur-X-Rechnung. Das sieht man schon in der ram:ID oben – „factur-x.eu“ steckt im Namespace.

FAQHäufige Fragen

Häufige Fragen zu E-Rechnung-Beispielen

Vom Beispiel zur eigenen Rechnung

Eigene E-Rechnung erstellen & validieren

Laden Sie Ihre PDF-Rechnung hoch und wir erzeugen daraus eine gültige XRechnung oder ZUGFeRD nach EN 16931 – inklusive Validierung.