Naar inhoud springen
XRechnung & ZUGFeRDTerug naar alle berichten

XRechnung-voorbeeld: zo ziet de XML eruit

XRechnung-voorbeeld: zo ziet de XML eruit

Een XRechnung is geen opgemaakte pagina, maar een XML-bestand: elk factuurgegeven staat in een eigen, precies benoemd element, zoals het factuurnummer in cbc:ID en het te betalen bedrag in cbc:PayableAmount. Opent u het bestand in een teksteditor, dan ziet u geneste tags in plaats van briefpapier. Het volgende XRechnung-voorbeeld toont een volledige, bewust kleine factuur in de syntaxis UBL en legt de afzonderlijke blokken uit.

Hoe ziet een XRechnung eruit?

De XRechnung is gebaseerd op de Europese norm EN 16931. De norm legt vast welke gegevens een factuur bevat en geeft elk gegeven een nummer, bijvoorbeeld BT-1 voor het factuurnummer. Technisch mag de XRechnung in twee XML-syntaxen worden geschreven:

  • UBL (Universal Business Language, OASIS UBL 2.1): rootelement Invoice of CreditNote. Veel gebruikt in het Peppol-netwerk.
  • CII (UN/CEFACT Cross Industry Invoice): rootelement CrossIndustryInvoice. Dezelfde syntaxis gebruikt ook ZUGFeRD.

Beide varianten bevatten dezelfde inhoud; alleen de elementnamen en de nesting verschillen. Momenteel geldt XRechnung 3.0 in de versie 3.0.2.

XRechnung-voorbeeld als XML (UBL)

Het voorbeeld toont een factuur tussen twee bedrijven voor tien uur advies à 100 euro, vermeerderd met 19 procent btw. Namen, adressen en nummers zijn fictief.

<?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:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>RE-2026-0042</cbc:ID>
  <cbc:IssueDate>2026-09-28</cbc:IssueDate>
  <cbc:DueDate>2026-10-12</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>PO-4711</cbc:BuyerReference>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="EM">rechnung@muster-gmbh.de</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Musterstraße 1</cbc:StreetName>
        <cbc:CityName>Mannheim</cbc:CityName>
        <cbc:PostalZone>68159</cbc:PostalZone>
        <cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>DE123456789</cbc:CompanyID>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Muster GmbH</cbc:RegistrationName>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Name>Erika Muster</cbc:Name>
        <cbc:Telephone>+49 621 1234567</cbc:Telephone>
        <cbc:ElectronicMail>buchhaltung@muster-gmbh.de</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="EM">rechnungseingang@kunde-ag.de</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>Am Platz 2</cbc:StreetName>
        <cbc:CityName>Köln</cbc:CityName>
        <cbc:PostalZone>50667</cbc:PostalZone>
        <cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Kunde AG</cbc:RegistrationName>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE02120300000000202051</cbc:ID>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
  <cac:PaymentTerms>
    <cbc:Note>Zahlbar innerhalb von 14 Tagen ohne Abzug.</cbc:Note>
  </cac:PaymentTerms>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>19</cbc:Percent>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">1190.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">1190.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="HUR">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Beratungsleistung</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>19</cbc:Percent>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

De blokken in het voorbeeld uitgelegd

Kenmerk en factuurkop

CustomizationID (BT-24) vertelt de ontvanger volgens welke regels het bestand moet worden gecontroleerd. De waarde met xrechnung_3.0 identificeert het bestand als XRechnung 3.0. Staat hier een verkeerde waarde, dan mislukt de controle, ook als de inhoud klopt. ProfileID (BT-23) beschrijft het bedrijfsproces, hier de gebruikelijke waarde uit Peppol. Daarna volgen factuurnummer (BT-1), factuurdatum (BT-2), vervaldatum (BT-9), factuurtype (BT-3, 380 staat voor een gewone factuur) en valuta (BT-5).

Kopersreferentie

BuyerReference (BT-10) is in de XRechnung verplicht. Bij overheidsinstanties staat hier de Leitweg-ID, bij bedrijven een afgesproken referentie zoals het ordernummer.

Verkoper en koper

AccountingSupplierParty is de verkoper met elektronisch adres (BT-34), adres, USt-IdNr. (btw-identificatienummer, BT-31), bedrijfsnaam (BT-27) en contactpersoon (BG-6). De XRechnung vereist bij de verkoper naam, telefoonnummer en e-mailadres van de contactpersoon. AccountingCustomerParty is de koper met elektronisch adres (BT-49), adres en naam. Het attribuut schemeID="EM" geeft aan dat het adres een e-mailadres is.

Betaling

PaymentMeans bevat de betaalwijze (BT-81, code 58 voor SEPA-overboeking) en de IBAN (BT-84). PaymentTerms bevat de betalingsvoorwaarden als tekst (BT-20).

Btw en totalen

TaxTotal vat de btw per categorie samen: categorie S staat voor het standaardtarief. LegalMonetaryTotal bevat de totalen: regels netto, factuurbedrag netto, factuurbedrag bruto en te betalen bedrag. Deze waarden moeten exact op elkaar en op de regels aansluiten, anders meldt de controle een fout.

Regels

Elke InvoiceLine heeft een nummer (BT-126), een hoeveelheid met eenheidscode (BT-129 en BT-130, HUR staat voor uren), het nettobedrag van de regel (BT-131), de omschrijving (BT-153), de btw-categorie en de stukprijs (BT-146). De betekenis van alle nummers vindt u in het artikel XRechnung-velden: alle BT-nummers uitgelegd.

Dezelfde factuur in CII

In de syntaxis CII hebben de elementen andere namen en zijn ze ingedeeld in context, document en handelstransactie. Het begin van dezelfde factuur ziet er zo uit:

<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:xeinkauf.de:kosit:xrechnung_3.0</ram:ID>
    </ram:GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>
  <rsm:ExchangedDocument>
    <ram:ID>RE-2026-0042</ram:ID>
    <ram:TypeCode>380</ram:TypeCode>
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260928</udt:DateTimeString>
    </ram:IssueDateTime>
  </rsm:ExchangedDocument>
  <rsm:SupplyChainTradeTransaction>
    <!-- Regels, afspraken, levering, afrekening -->
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

In het blok SupplyChainTradeTransaction volgen de regels (IncludedSupplyChainTradeLineItem), de gegevens over verkoper, koper en referenties (ApplicableHeaderTradeAgreement), de levering (ApplicableHeaderTradeDelivery) en de btw, betaling en totalen (ApplicableHeaderTradeSettlement). Opvallend: de datum staat in CII in het formaat JJJJMMDD, in UBL als JJJJ-MM-DD.

XML-schema en controle

Een XRechnung wordt in twee stappen gecontroleerd:

  1. XML-schema (XSD): kloppen elementnamen, volgorde en gegevenstypen? Voor UBL is dat het schema van OASIS UBL 2.1, voor CII het schema van UN/CEFACT.
  2. Bedrijfsregels (Schematron): klopt de inhoud? Hier gelden de regels van EN 16931 (bijvoorbeeld BR-CO-15: brutobedrag is gelijk aan nettobedrag plus btw) en de aanvullende Duitse regels van de XRechnung (BR-DE, bijvoorbeeld de verplichte kopersreferentie).

De KoSIT (Koordinierungsstelle für IT-Standards) stelt daarvoor een vrij beschikbare validator met bijbehorende configuratie voor de XRechnung beschikbaar. Het voorbeeld hierboven is teruggebracht tot de structuur. Voordat u een eigen bestand verstuurt, moet u het altijd controleren tegen de actuele configuratie.

XRechnungen aanmaken en ontvangen

Niemand schrijft XRechnungen met de hand. In de praktijk maakt software of een API het bestand aan op basis van uw factuurgegevens en controleert het vóór verzending. Aan de kant van de ontvanger leest faktoora binnenkomende XRechnungen in, valideert ze en geeft ze weer als leesbare pdf; meer daarover onder E-facturen ontvangen. Hoe u een XRechnung zonder software opent, legt het artikel XRechnung openen en weergeven uit.

Veelgestelde vragen

Welke bestandsextensie heeft een XRechnung?

Meestal .xml. Het bestand kan in elke teksteditor worden geopend, maar wordt pas leesbaar met een viewer of visualisatie.

Is de XRechnung UBL of CII?

Beide zijn toegestaan. De XRechnung legt de inhoud vast; UBL en CII zijn twee gelijkwaardige notaties daarvoor. Wie e-facturen ontvangt, moet daarom beide varianten kunnen verwerken.

Kan ik het XRechnung-voorbeeld als sjabloon gebruiken?

Als oriëntatie wel, als kant-en-klaar sjabloon niet. Echte facturen hebben afhankelijk van de situatie meer gegevens nodig, zoals prestatiedatum, kortingen of meerdere btw-tarieven, en moeten vóór verzending worden gevalideerd.

Waar vind ik officiële XRechnung-voorbeelden?

De KoSIT publiceert bij de specificatie testbestanden in UBL en CII. De telkens geldende pakketten vindt u op xeinkauf.de.