Die E-Rechnung
📄 E-Rechnung – Benutzerhandbuch
Zweck, Funktionsweise und implementierte Felder unserer E-Rechnungs-Lösung
📑 Inhaltsverzeichnis
- Zweck und Sinn der E-Rechnung
- Rechtlicher Hintergrund
- Wie wir die E-Rechnung umgesetzt haben
- Was das Programm konkret macht
- Bedeutung der Kennungen (BT, BG, BR)
- Implementierte Felder im Detail
- Lastschrift-Rechnungen vs. normale Rechnungen
- Zeiträume: Header (BG-14) vs. Position (BT-134/135)
- Validierung & Geschäftsregeln
- Praktische Hinweise für Anwender
1. Zweck und Sinn der E-Rechnung
Eine E-Rechnung ist keine PDF-Datei und kein eingescanntes Papier. Sie ist eine Rechnung in einem strukturierten, maschinenlesbaren XML-Format, das eine vollständig automatisierte Verarbeitung durch IT-Systeme ermöglicht – ohne Medienbrüche, ohne manuelle Erfassung.
Vorteile auf einen Blick
- ⏱️ Zeitersparnis durch automatisierte Verarbeitung
- 💰 Kostensenkung – keine Druck-, Porto- oder Archivkosten
- ✅ Höhere Datenqualität durch strukturierte, validierte Felder
- 🔍 Bessere Nachvollziehbarkeit bei Prüfungen
- 🌱 Umweltfreundlich – kein Papier, keine Logistik
- ⚖️ Rechtssicherheit durch normierte Pflichtangaben
2. Rechtlicher Hintergrund
Seit dem 1. Januar 2025 ist die E-Rechnung im B2B-Bereich in Deutschland gesetzlich verankert (Wachstumschancengesetz). Es gelten gestaffelte Übergangsfristen:
| Zeitraum | Pflicht |
|---|---|
| ab 01.01.2025 | Empfang von E-Rechnungen für alle Unternehmen verpflichtend |
| ab 01.01.2027 | Versand für Unternehmen mit Vorjahresumsatz > 800.000 € |
| ab 01.01.2028 | Versand für alle Unternehmen verpflichtend |
3. Wie wir die E-Rechnung umgesetzt haben
Unsere Lösung ist ein vollständiger E-Rechnungs-Viewer und -Validator, der eingehende E-Rechnungen aller gängigen Formate liest, prüft und übersichtlich darstellt.
Unterstützte Formate
- ✅ ZUGFeRD / Factur-X ab Version 2.0.1 (Profile: MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED, XRECHNUNG)
- ✅ XRechnung in UBL-Syntax (
ubl:Invoice) - ✅ XRechnung in CII-Syntax (
rsm:CrossIndustryInvoice) - ✅ PDF/A-3 mit eingebetteter XML (automatische Extraktion)
Technologische Basis
- XML-Parser mit XPath-basierter Navigation
- Schema-Validierung gegen die offiziellen XSDs der Norm EN 16931
- Geschäftsregelprüfung (BR-Regeln) gemäß Spezifikation
- PDF/A-3-Extraktion zur Trennung von visueller Anzeige und strukturierten Daten
4. Was das Programm konkret macht
- Datei einlesen – akzeptiert PDF (mit eingebetteter XML) oder reine XML-Dateien.
- Format erkennen – identifiziert automatisch UBL vs. CII und ZUGFeRD-Profil.
- XML extrahieren – bei PDF/A-3 wird die eingebettete
factur-x.xmloderxrechnung.xmlgezogen. - Felder auslesen – über fest definierte XPath-Pfade werden alle BT-/BG-Felder extrahiert.
- Validieren – Schema-Konformität und Geschäftsregeln (BR) werden geprüft.
- Aufbereiten – Datumswerte werden formatiert (z. B. „20260401" → „01.04.2026"), Beträge mit Währung versehen.
- Anzeigen – strukturierte Darstellung in Blöcken: Dokumentinformationen, Verkäufer, Käufer, Positionen, Summen, Zahlungsinformationen.
- Fehler/Warnungen melden – Validierungsergebnisse werden klar gekennzeichnet ausgegeben.
5. Bedeutung der Kennungen
In der EN 16931 ist jedes Feld eindeutig nummeriert. Diese Kennungen erscheinen im Viewer und ermöglichen die genaue Zuordnung zur Norm:
| Kennung | Bedeutung | Beispiel |
|---|---|---|
| BT | Einzelnes Datenfeld („Business Term") | BT-1 = Rechnungsnummer |
| BG | Gruppe von Feldern („Business Group") | BG-4 = Verkäufer |
| BR | Pflicht- bzw. Geschäftsregel | BR-01 = Rechnung muss BT-24 enthalten |
6. Implementierte Felder im Detail
📋 Dokumentinformationen (Header)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-1 | Rechnungsnummer | Eindeutige Kennung der Rechnung |
| BT-2 | Rechnungsdatum | Ausstellungsdatum der Rechnung |
| BT-3 | Rechnungstyp-Code | z. B. 380 (Handelsrechnung), 381 (Gutschrift), 384 (Korrektur) |
| BT-5 | Währungscode | z. B. EUR, USD nach ISO 4217 |
| BT-6 | Steuerwährung | Abweichende Währung für Steuern (selten) |
| BT-9 | Fälligkeitsdatum | Datum, bis zu dem zu zahlen ist |
| BT-10 | Käuferreferenz / Leitweg-ID | Pflicht bei Behörden |
| BT-11 | Projektreferenz | Bezugsprojekt |
| BT-12 | Vertragsreferenz | Bezugsvertrag |
| BT-13 | Bestellnummer | Kundenbestellung |
| BT-14 | Auftragsnummer | Verkäuferseitige Auftragsnummer |
| BT-22 | Bemerkungen | Freitextkommentare |
| BT-23 | Geschäftsprozess-Typ | z. B. urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 |
| BT-24 | Spezifikationskennung | Profil/Norm-Kennung |
📅 Abrechnungs-/Leistungszeitraum
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BG-14 | Abrechnungszeitraum | Gesamtzeitraum auf Header-Ebene |
| BT-73 | Beginn Abrechnungszeitraum | Startdatum (Header) |
| BT-74 | Ende Abrechnungszeitraum | Enddatum (Header) |
| BT-134 | Beginn Positions-Zeitraum | Startdatum auf Positionsebene |
| BT-135 | Ende Positions-Zeitraum | Enddatum auf Positionsebene |
🏢 Verkäufer (BG-4)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-27 | Name | Firmenname |
| BT-28 | Handelsname | Marketing-Name (optional) |
| BT-29 | Kennung | z. B. GLN, DUNS |
| BT-30 | Rechtsformkennung | Handelsregisterauszug |
| BT-31 | USt-IdNr. | z. B. DE123456789 |
| BT-32 | Steuernummer | Nationale Steuernummer |
| BG-5 | Postanschrift | Straße, PLZ, Ort, Land |
| BT-35 | Adresszeile 1 | Straße/Hausnummer |
| BT-37 | Stadt | Ort |
| BT-38 | Postleitzahl | PLZ |
| BT-40 | Ländercode | z. B. DE, AT |
| BG-6 | Kontaktdaten | Ansprechpartner |
| BT-41 | Kontaktname | Name des Ansprechpartners |
| BT-42 | Telefon | Telefonnummer |
| BT-43 | E-Mail-Adresse |
🏬 Käufer (BG-7)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-44 | Name | Firmenname Käufer |
| BT-46 | Kennung | z. B. Kundennummer |
| BT-47 | Rechtsformkennung | Registereintrag |
| BT-48 | USt-IdNr. | USt-Identifikationsnummer |
| BG-8 | Postanschrift | Adresse Käufer |
| BT-50 | Adresszeile 1 | Straße/Hausnummer |
| BT-52 | Stadt | Ort |
| BT-53 | Postleitzahl | PLZ |
| BT-55 | Ländercode | ISO-Ländercode |
| BG-9 | Kontaktdaten Käufer | Ansprechpartner Käufer |
🚚 Lieferinformationen (BG-13)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-70 | Name Empfänger | Lieferadressat |
| BT-71 | Lieferortkennung | z. B. Standortcode |
| BT-72 | Lieferdatum | Tatsächliches Lieferdatum |
| BG-15 | Lieferadresse | Vollständige Adresse |
💰 Zahlungsinformationen (BG-16)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-81 | Zahlungsmittelcode | z. B. 30 (Überweisung), 59 (SEPA-Lastschrift), 58 (SEPA-Überweisung) |
| BT-82 | Zahlungsmittel-Text | Klartextbeschreibung |
| BT-83 | Verwendungszweck | Referenz zur Zahlungszuordnung |
| BG-17 | Überweisungsdaten | Bankkonto Empfänger |
| BT-84 | IBAN Empfänger | Bankkontonummer |
| BT-85 | Kontoinhaber | Name Kontoinhaber |
| BT-86 | BIC | Bankidentifikation |
| BG-19 | SEPA-Lastschriftdaten | Nur bei Lastschrift |
| BT-89 | Mandatsreferenz | SEPA-Mandat |
| BT-90 | Gläubiger-ID | SEPA-Creditor-Identifier |
| BT-91 | IBAN Zahler | Konto, das belastet wird |
📦 Rechnungspositionen (BG-25)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-126 | Positionsnummer | Laufende Nummer |
| BT-127 | Positionsbeschreibung | Freitext zur Position |
| BT-129 | Menge | Liefermenge |
| BT-130 | Mengeneinheit | z. B. C62, H87, KGM |
| BT-131 | Nettobetrag der Position | Menge × Einzelpreis |
| BT-146 | Einzelpreis | Nettopreis pro Einheit |
| BT-148 | Listenpreis | UVP (optional) |
| BT-153 | Artikelname | Bezeichnung des Artikels |
| BT-154 | Artikelbeschreibung | Detaillierte Beschreibung |
| BT-155 | Artikelnummer Verkäufer | Interne Artikelnummer |
| BT-156 | Artikelnummer Käufer | Käuferseitige Nummer |
| BT-157 | GTIN/EAN | Standard-Artikelkennung |
| BT-151 | USt-Code Position | z. B. S, Z, AE, K, O |
| BT-152 | USt-Satz Position | z. B. 19.00, 7.00 |
🧮 Summenblock (BG-22)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-106 | Summe Positionsbeträge | Summe aller BT-131 |
| BT-107 | Summe Nachlässe | Gesamtnachlass |
| BT-108 | Summe Zuschläge | Gesamtzuschläge |
| BT-109 | Nettogesamtbetrag | BT-106 − BT-107 + BT-108 |
| BT-110 | USt-Gesamtbetrag | Summe der Steuerbeträge |
| BT-112 | Bruttogesamtbetrag | BT-109 + BT-110 |
| BT-113 | Bereits gezahlter Betrag | z. B. Anzahlung |
| BT-114 | Rundungsbetrag | Auf-/Abrundung |
| BT-115 | Zahlbetrag | BT-112 − BT-113 ± BT-114 |
💸 Steueraufschlüsselung (BG-23)
| Kennung | Bezeichnung | Beschreibung |
|---|---|---|
| BT-116 | Steuerbasisbetrag | Nettobetrag je Steuersatz |
| BT-117 | Steuerbetrag | Berechnete USt |
| BT-118 | Kategorie-Code | S = Standard, Z = Nullsatz, AE = Reverse Charge usw. |
| BT-119 | Steuersatz | z. B. 19.00 |
| BT-120 | Befreiungsgrund | Begründung bei steuerfrei |
7. Lastschrift- vs. normale Rechnungen
Beide Rechnungstypen verwenden die gleiche Norm – sie unterscheiden sich aber in den Pflichtfeldern für die Zahlungsinformationen.
📨 Normale Rechnung (Überweisung)
Zahlungsmittelcode BT-81: 30, 58 oder 1
Pflichtfelder:
- BT-84 IBAN Empfänger
- BT-85 Kontoinhaber
- BT-86 BIC (optional bei SEPA)
- BT-9 Fälligkeitsdatum
Aktion des Käufers: Muss aktiv überweisen.
🏦 SEPA-Lastschrift
Zahlungsmittelcode BT-81: 59 (SEPA Direct Debit) oder 49
Zusätzliche Pflichtfelder (BG-19):
- BT-89 Mandatsreferenz (Mandate-ID)
- BT-90 Gläubiger-Identifikationsnummer
- BT-91 IBAN des Zahlungspflichtigen
Aktion des Käufers: Keine – Betrag wird eingezogen.
Rechtliche Anforderungen an Lastschrift-Rechnungen
- Es muss ein gültiges SEPA-Mandat des Zahlers vorliegen.
- Die Rechnung muss als Vorabankündigung (Pre-Notification) dienen oder darauf verweisen.
- Die Frist (mindestens 1 Bankarbeitstag bei COR1) ist einzuhalten.
- Mandatsreferenz und Gläubiger-ID müssen mit den im Mandat hinterlegten Werten übereinstimmen.
8. Zeiträume: Header (BG-14) vs. Position (BT-134/135)
Eine häufige Frage: Warum stehen manchmal zwei unterschiedliche Zeiträume in einer Rechnung?
Beispiel: Eine Wartungsrechnung deckt den Monat April (BG-14: 01.04.–30.04.2026) ab, der Techniker war aber nur vom 01.04.–04.04.2026 vor Ort (BT-134/135).
Die Werte werden direkt aus der XML gelesen – das Programm berechnet oder rät nichts:
<ram:ApplicableHeaderTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString> <!-- BT-73 -->
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260430</udt:DateTimeString> <!-- BT-74 -->
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
</ram:ApplicableHeaderTradeSettlement>
9. Validierung & Geschäftsregeln (BR)
Das Programm prüft die Rechnung auf drei Ebenen:
Ebene 1: Schema-Validierung
Prüfung der XML gegen die XSD-Schemata der Norm – stellt sicher, dass die Struktur formal korrekt ist.
Ebene 2: Geschäftsregeln (BR)
Inhaltliche Regeln, z. B.:
| Regel | Bedeutung |
|---|---|
| BR-01 | Eine Rechnung muss eine Spezifikationskennung (BT-24) haben |
| BR-02 | Eine Rechnung muss eine Rechnungsnummer (BT-1) haben |
| BR-03 | Eine Rechnung muss ein Rechnungsdatum (BT-2) haben |
| BR-04 | Eine Rechnung muss einen Rechnungstyp-Code (BT-3) haben |
| BR-05 | Eine Rechnung muss einen Währungscode (BT-5) haben |
| BR-06 | Verkäufername (BT-27) ist Pflicht |
| BR-07 | Käufername (BT-44) ist Pflicht |
| BR-08 | Verkäuferadresse muss vollständig sein |
| BR-16 | Eine Rechnung muss mindestens eine Position enthalten |
| BR-CO-10 | BT-106 = Summe aller BT-131 |
| BR-CO-13 | BT-109 = BT-106 − BT-107 + BT-108 |
| BR-CO-15 | BT-112 = BT-109 + BT-110 |
| BR-CO-16 | BT-115 = BT-112 − BT-113 + BT-114 |
| BR-DE-1 | Deutsche Erweiterung: Käuferreferenz (BT-10) Pflicht |
| BR-DE-2 | Telefon des Verkäufers (BT-42) Pflicht in DE |
| BR-DE-3 | E-Mail des Verkäufers (BT-43) Pflicht in DE |
Ebene 3: Rechnerische Konsistenz
Plausibilitätsprüfungen, z. B. ob die Summe der Positionsbeträge mit dem Nettogesamtbetrag übereinstimmt, ob die Steuerberechnung korrekt ist und ob der Zahlbetrag schlüssig ist.
10. Praktische Hinweise für Anwender
Was tun bei…
… einer fehlerhaften Rechnung?
- Genaue Fehlermeldung im Validierungsbereich beachten (BR-Nummer angeben).
- Verkäufer kontaktieren und korrekte Rechnung anfordern.
- Bei Pflichtfeld-Verstößen: Rechnung kann formal abgelehnt werden.
… abweichenden Beträgen zwischen XML und PDF?
- Bei ZUGFeRD ist die XML rechtlich verbindlich, nicht das visuelle PDF.
- Differenzen sind ein Indiz für eine fehlerhafte Erstellung.
… einer Gutschrift?
- Rechnungstyp-Code BT-3 = 381 erkennen.
- Beträge sind in der Regel positiv ausgewiesen, der Typ-Code dreht das Vorzeichen.
Empfohlener Workflow
- Rechnung in den Viewer laden (PDF oder XML).
- Validierungsstatus prüfen (grün ✅ / gelb ⚠️ / rot ❌).
- Stammdaten (Verkäufer, Käufer) gegen interne Daten abgleichen.
- Positionen und Summen sichten.
- Bei Lastschrift: Mandatsreferenz mit hinterlegten Mandaten abgleichen.
- Rechnung freigeben oder zur Klärung markieren.