Zurück zu Rechnungsvorlagen
Compliance

§ 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.

§ 14 UStG-Pflichtangaben, Waage und ZUGFeRD-PDF mit eingebetteter XML

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.

PflichtangabeQuelle im TemplateStatus
Vollständiger Name & Anschrift des leistenden Unternehmers{{seller.name}} / .street / .postalCode / .cityPflicht
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, unitPflicht
Zeitpunkt der Lieferung / Leistung{{deliveryDate}} oder Hinweis auf AusstellungsmonatPflicht
Entgelt, getrennt nach Steuersätzen{{taxSummary}} → netAmount je taxRatePflicht
Anzuwendender Steuersatz oder Hinweis auf Steuerbefreiung{{taxSummary}} → taxRate / taxCategoryCodePflicht
Hinweise (z. B. Reverse-Charge, Kleinunternehmer){{notes}} als Freitext-Feldfalls 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.

json
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.

json
1// Reverse-Charge wird nicht über ein eigenes Flag signalisiert,
2// sondern über items[].taxCategoryCode = "AE" und daraus
3// 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.

json
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.

FormatWas zusätzlich nötig istRolle des Templates
XRechnung (UBL 2.1 / CII)Leitweg-ID (B2G), BT-Codes nach EN 16931, UNECE-EinheitenStrukturierte XML — PDF optional, rein visuell
ZUGFeRD 2.xEN-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.), PartyIdentificationVersand ü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.