Syntax
UBL (Universal Business Language)
Definition
UBL (Universal Business Language) ist ein von OASIS normiertes XML-Vokabular für Geschäftsdokumente, darunter Rechnungen, Bestellungen und Lieferscheine. UBL 2.1 ist eine der zwei zulässigen Syntaxen für EN-16931-konforme Rechnungen und wird unter anderem für XRechnung sowie Peppol BIS Billing 3.0 verwendet. UBL-Rechnungen verwenden den Namespace `urn:oasis:names:specification:ubl:schema:xsd:Invoice-2`.
Hintergrund & Kontext
UBL (Universal Business Language) ist ein offener, von OASIS standardisierter Satz von XML-Schemata für elektronische Geschäftsdokumente. Über die Rechnung hinaus umfasst UBL über 80 Dokumenttypen wie Bestellung (Order), Lieferschein (DespatchAdvice), Gutschrift (CreditNote) und Mahnung. UBL trennt die Komponenten in zwei Bausteinbibliotheken: CBC (Common Basic Components, einfache Werte wie cbc:ID oder cbc:IssueDate) und CAC (Common Aggregate Components, zusammengesetzte Strukturen wie cac:AccountingSupplierParty). Eine UBL-Rechnung beginnt mit dem Wurzelelement `<Invoice>` im Namespace `urn:oasis:names:specification:ubl:schema:xsd:Invoice-2`; eine Gutschrift mit `<CreditNote>`. UBL 2.1 ist eine der beiden von EN 16931 zugelassenen Syntaxen und bildet die technische Grundlage von XRechnung sowie Peppol BIS Billing 3.0. Wer XRechnung im UBL-Format erzeugt, mappt also die syntaxunabhängigen Business Terms (z.B. BT-1 Rechnungsnummer) auf konkrete UBL-Elemente (cbc:ID).
In der Praxis — ein Beispiel
Die Rechnungsnummer (Business Term BT-1) wird in UBL als `<cbc:ID>RE-2024-00123</cbc:ID>` direkt unter dem Wurzelelement abgebildet, das Rechnungsdatum (BT-2) als `<cbc:IssueDate>2024-07-15</cbc:IssueDate>`. Der Verkäufer (BG-4) steht in `<cac:AccountingSupplierParty>` mit verschachtelten Elementen für Name (cbc:RegistrationName), Adresse (cac:PostalAddress) und Steuerregistrierung (cac:PartyTaxScheme). Genau diese Struktur prüft der KoSIT-Validator gegen das UBL-2.1-XSD und anschließend gegen die EN-16931- und BR-DE-Schematron-Regeln.
Häufige Fehler
- •CBC und CAC nicht verwechseln: einfache Werte gehören in cbc-Elemente, zusammengesetzte Strukturen in cac-Elemente — falsche Namespaces brechen die Schemavalidierung.
- •Für Gutschriften muss das Wurzelelement `<CreditNote>` mit eigenem Namespace verwendet werden, nicht `<Invoice>` mit Typ-Code 381.
- •UBL und CII dürfen niemals im selben Dokument gemischt werden — das führt zu SCHEMA-002-Fehlern.
Häufig gestellte Fragen
Was bedeuten cbc und cac in UBL?
cbc steht für Common Basic Components (einfache Datenfelder wie IDs, Datumsangaben, Beträge), cac für Common Aggregate Components (zusammengesetzte Strukturen wie Parteien, Adressen, Steuergruppen). Sie sind die zwei zentralen UBL-Namespaces.
Ist UBL besser als CII?
Keine der beiden Syntaxen ist überlegen — EN 16931 behandelt sie gleichwertig. UBL ist im B2G- und Peppol-Umfeld verbreiteter, CII bildet die Basis von ZUGFeRD/Factur-X. Die Wahl hängt von Empfänger und Software ab.
Welchen Namespace nutzt eine UBL-Rechnung?
Eine UBL-Rechnung nutzt urn:oasis:names:specification:ubl:schema:xsd:Invoice-2, eine Gutschrift den entsprechenden CreditNote-2-Namespace. Ein falscher oder fehlender Namespace führt zum Fehler SCHEMA-002.