§ 14 UStG, XRechnung & ZUGFeRD in Vorlagen
Die sichtbare PDF-Ebene und die strukturierten E-Invoicing-Daten müssen zusammenpassen. Diese Seite zeigt, welche Angaben deine Vorlage zwingend darstellen muss und wie du Sonderfälle wie B2G, Reverse-Charge oder Kleinunternehmer-Regelung korrekt abbildest.

Pflichtangaben nach § 14 Abs. 4 UStG
Diese Felder müssen in jeder Rechnung über 250 € sichtbar sein. Der Validator prüft sie beim /generate-Aufruf gegen den Payload — ein Template darf sie nicht auslassen.
| Pflichtangabe | Quelle im Template | Status |
|---|---|---|
| Vollständiger Name & Anschrift des leistenden Unternehmers | {{seller.name}} / .street / .postalCode / .city | Pflicht |
| Vollständiger Name & Anschrift des Leistungsempfängers | {{buyer.name}} / .street / … | Pflicht |
| USt-IdNr. oder Steuernummer des leistenden Unternehmers | {{seller.vatId}} bzw. {{seller.taxId}} | Pflicht (einer von beiden) |
| Ausstellungsdatum | {{issueDate}} | Pflicht |
| Fortlaufende, eindeutige Rechnungsnummer | {{invoiceNumber}} | Pflicht |
| Menge und Art der gelieferten Gegenstände / Leistung | {{items}} → description, quantity, unit | Pflicht |
| Zeitpunkt der Lieferung / Leistung | {{deliveryDate}} oder Hinweis auf Ausstellungsmonat | Pflicht |
| Entgelt, getrennt nach Steuersätzen | {{taxSummary}} → netAmount je taxRate | Pflicht |
| Anzuwendender Steuersatz oder Hinweis auf Steuerbefreiung | {{taxSummary}} → taxRate / taxCategoryCode | Pflicht |
| Hinweise (z. B. Reverse-Charge, Kleinunternehmer) | {{notes}} als Freitext-Feld | falls zutreffend |
B2G: Leitweg-ID & Bestellreferenz
Rechnungen an öffentliche Auftraggeber benötigen eine Leitweg-ID. Sie liegt im Payload unter countrySpecific.leitwegId (DE-spezifisch), die Bestellreferenz (BT-10) unter countrySpecific.buyerReference. EN 16931 verlangt mindestens eines von beiden. Der ganze countrySpecific-Block muss zudem den Pflicht-Discriminator countryCode: "DE" enthalten. Der B2G-Block rendert per condition nur bei gesetzter Leitweg-ID — dieselbe Vorlage bleibt für B2B und B2G nutzbar.
1{2 "type": "keyvalue",3 "condition": "{{countrySpecific.leitwegId}}",4 "data": {5 "layout": "horizontal",6 "labelWidth": 120,7 "labelBold": true,8 "items": [9 { "label": "Leitweg-ID", "value": "{{countrySpecific.leitwegId}}" },10 { "label": "Bestellreferenz", "value": "{{countrySpecific.buyerReference}}", "optionalMode": "anyEmpty" }11 ]12 }13}Reverse-Charge (§ 13b UStG)
Reverse-Charge wird nicht über ein eigenes Boolean signalisiert, sondern über den EN-16931-Code auf Positions- und Summary-Ebene: items[].taxCategoryCode = "AE" und daraus abgeleitet taxSummary[].taxCategoryCode. Der vorgeschriebene Hinweis-Text wird über das Freitext-Feld notes übermittelt.
1// Reverse-Charge wird nicht über ein eigenes Flag signalisiert,2// sondern über items[].taxCategoryCode = "AE" und daraus3// abgeleitet taxSummary[].taxCategoryCode = "AE".4// Der Hinweistext erscheint, wenn notes entsprechend befüllt wurde:5{6 "type": "text",7 "condition": "{{notes}}",8 "data": {9 "content": "{{notes}}",10 "italics": true,11 "fontSize": 9,12 "margin": [0, 8, 0, 0]13 }14}15 16// summary-Block mit dynamischen Zeilen je Tax-Category:17{18 "type": "summary",19 "data": {20 "dynamicRows": {21 "dataSource": "{{taxSummary}}",22 "valueField": "taxAmount",23 "valueFormat": "currency",24 "labelTemplate": "USt {{taxRate}}% ({{taxCategoryCode}})"25 }26 }27}Kleinunternehmer (§ 19 UStG)
Für DE-Rechnungen gibt es das Boolean-Flag countrySpecific.isKleinunternehmer. Ist es true, wird der Paragraphen-Hinweis über condition automatisch gerendert.
1{2 "type": "text",3 "condition": "{{countrySpecific.isKleinunternehmer}}",4 "data": {5 "content": "Gemäß § 19 UStG wird keine Umsatzsteuer berechnet (Kleinunternehmer-Regelung).",6 "italics": true,7 "fontSize": 9,8 "margin": [0, 12, 0, 0]9 }10}Template-Ebene vs. strukturierte Formate
Das BlockTemplate steuert ausschließlich die visuelle Darstellung. Die strukturierten Daten (XRechnung-XML, ZUGFeRD, Peppol, Factur-X) werden aus dem Invoice-Payload erzeugt und — bei Hybrid-Formaten — automatisch in die PDF/A-3 eingebettet.
| Format | Was zusätzlich nötig ist | Rolle des Templates |
|---|---|---|
| XRechnung (UBL 2.1 / CII) | Leitweg-ID (B2G), BT-Codes nach EN 16931, UNECE-Einheiten | Strukturierte XML — PDF optional, rein visuell |
| ZUGFeRD 2.x | EN-16931-Profil, Hybrid-Modus (PDF/A-3 + eingebettete XML) | BlockTemplate ist die sichtbare Ebene; XML wird beim /generate automatisch eingebettet |
| Peppol (BIS Billing 3.0) | EndpointID (0088, 9930 etc.), PartyIdentification | Versand über Peppol-Netzwerk; Template erzeugt den visuellen Beleg |
| Factur-X (FR) | FR-spezifische Profile (BASIC / EN 16931 / EXTENDED) | Wie ZUGFeRD — PDF/A-3 mit eingebetteter XML |
Hinweis zur Aufbewahrung
E-Rechnungen unterliegen in Deutschland einer 10-jährigen Aufbewahrungspflicht (§ 147 AO). Das gerenderte PDF und die strukturierte XML sollten gemeinsam revisionssicher archiviert werden — die Archive-API übernimmt das automatisiert.