UBL 2.1 XML-Format
Das technische Format für PEPPOL-Rechnungen. Verstehen Sie, wie Ihre Rechnungsdaten für die Maschine-zu-Maschine-Kommunikation strukturiert sind.
Was ist UBL?
UBL (Universal Business Language) ist ein internationaler Standard zur Strukturierung von Geschäftsdokumenten wie Rechnungen. Stellen Sie es sich als präzise Vorlage vor, die Computern genau sagt, wo jede Information zu finden ist – Rechnungsnummer, Beträge, MwSt., Verkäuferdaten usw.
Wenn Sie in aiDoks eine Rechnung erstellen, konvertieren wir Ihre Daten automatisch in dieses UBL XML-Format. Damit ist sichergestellt, dass jedes System, das Ihre Rechnung empfängt, sie korrekt lesen kann – unabhängig von der verwendeten Software.
aiDoks erzeugt aus Ihren Eingaben automatisch perfektes UBL XML. Diese Seite ist für alle, die verstehen möchten, was hinter den Kulissen passiert, oder mit Rohdateien arbeiten müssen.
Rechnungsstruktur auf einen Blick
Jede PEPPOL-Rechnung enthält diese Hauptabschnitte in dieser Reihenfolge:
Erklärung der wichtigsten Elemente
Hier sind die wichtigsten Teile einer UBL-Rechnung und was sie enthalten:
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>Diese Kennungen sagen den empfangenden Systemen, dass es sich um eine PEPPOL BIS 3.0-konforme Rechnung handelt. Sie sind für Standardrechnungen immer gleich – aiDoks fügt sie automatisch hinzu.
<cbc:ID>INV-2025-001</cbc:ID>
<cbc:IssueDate>2025-01-29</cbc:IssueDate>
<cbc:DueDate>2025-02-28</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>Ihre Rechnungsnummer, das Ausstellungsdatum, das Fälligkeitsdatum, der Typ (380 = Standardrechnung) und die Währung. Daten müssen im Format YYYY-MM-DD vorliegen.
<cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID> <cac:PartyName> <cbc:Name>Your Company OÜ</cbc:Name> </cac:PartyName> <!-- Address, VAT number, registration... --> </cac:Party>
</cac:AccountingSupplierParty>Die Daten Ihres Unternehmens. Die EndpointID mit schemeID ist Ihre PEPPOL-Teilnehmer-Kennung – so weiß das Netzwerk, wohin Antworten gesendet werden.
<cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:InvoicedQuantity unitCode="HUR">40</cbc:InvoicedQuantity> <cbc:LineExtensionAmount currencyID="EUR">3000.00</cbc:LineExtensionAmount> <cac:Item> <cbc:Name>Web Development Services</cbc:Name> </cac:Item> <cac:Price> <cbc:PriceAmount currencyID="EUR">75.00</cbc:PriceAmount> </cac:Price>
</cac:InvoiceLine>Jeder Artikel, den Sie in Rechnung stellen. Enthält die Zeilennummer, die Menge (mit Einheitencode wie HUR für Stunden), die Zeilensumme, die Artikelbeschreibung und den Einzelpreis. Es können mehrere InvoiceLine-Elemente vorhanden sein.
Häufige Code-Referenz
PEPPOL-Teilnehmer-ID-Schemata
| Schema-ID | Land | Beschreibung |
|---|---|---|
0191 | Estland | USt-IdNr. (EE + 9 Ziffern) |
0192 | Estland | Handelsregistercode (8 Ziffern) |
0193 | Lettland | USt-IdNr. (LV + 11 Ziffern) |
0200 | Litauen | USt-IdNr. (LT + 9–12 Ziffern) |
9915 | Österreich | USt-IdNr. |
9930 | Italien | USt-IdNr. |
Zahlungsmethoden-Codes
30Banküberweisung (am häufigsten)58SEPA-Überweisung49Lastschrift48KreditkarteSo funktioniert die Validierung
Bevor eine Rechnung über PEPPOL versendet werden kann, muss sie mehrere Validierungsprüfungen bestehen:
Prüft, ob die XML-Struktur korrekt ist – ob alle erforderlichen Elemente vorhanden sind, ordnungsgemäß verschachtelt sind und die richtigen Datentypen verwenden.
Validiert Geschäftslogik-Regeln – z. B. dass MwSt.-Beträge mit den berechneten Werten übereinstimmen, erforderliche Felder kontextabhängig ausgefüllt sind und Code-Werte gültig sind.
Stellt sicher, dass alle Codes (Währung, Land, Einheit, MwSt.-Kategorie) aus den offiziellen PEPPOL-genehmigten Listen stammen.
Bestätigt, dass sich Zeilensummen korrekt addieren, die MwSt. richtig berechnet ist und der endgültige zahlbare Betrag stimmt.
aiDoks führt all diese Validierungen vor dem Versand durch. Wenn Fehler vorliegen, sehen Sie konkrete Meldungen, die erklären, was korrigiert werden muss – meist ein fehlendes Feld oder ein falscher Wert.
Beispiel-Rechnungsdatei
Möchten Sie ein vollständiges Beispiel sehen? Hier ist eine minimale gültige PEPPOL-Rechnung:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="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:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2025-001</cbc:ID>
<cbc:IssueDate>2025-01-29</cbc:IssueDate>
<cbc:DueDate>2025-02-28</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID>
<cac:PartyName><cbc:Name>Seller Company OÜ</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Main Street 1</cbc:StreetName>
<cbc:CityName>Tallinn</cbc:CityName>
<cbc:PostalZone>10001</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>EE123456789</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Seller Company OÜ</cbc:RegistrationName>
<cbc:CompanyID>12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0192">87654321</cbc:EndpointID>
<cac:PartyName><cbc:Name>Buyer Company AS</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:CityName>Tallinn</cbc:CityName>
<cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Buyer Company AS</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>22</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">1220.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1220.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Consulting Services</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>22</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>
</Invoice>