Formatspezifikation
Version 1.0
Wie die Rechnungsdaten eines Käufers in einem QR-Code stehen, damit ein Kassensystem sie ohne Abtippen übernehmen kann.
Entwurf vom 19.08.2026
Frei implementierbar, ohne Lizenzgebühr
K&G Development UG
Zweck
Wozu das Format da ist
Ab dem 1. Januar 2027 müssen inländische Unternehmen mit mehr als 800.000 Euro Vorjahresumsatz ihre B2B-Rechnungen als E-Rechnung ausstellen, ab dem 1. Januar 2028 alle übrigen. Rechnungen bis 250 Euro bleiben davon ausgenommen. Die Pflicht gilt auch für Bargeschäfte an der Kasse.
Damit ein Betrieb überhaupt eine gültige E-Rechnung erzeugen kann, braucht er die Stammdaten seines Kunden. An einer Kasse ist das ein Problem, weil niemand Firmenname, Anschrift, Steuernummer und Zustelladresse abtippen will, während zehn Leute in der Schlange stehen.
Der Rechnungspass löst genau diesen einen Schritt. Der Käufer erzeugt einmalig einen QR-Code mit seinen Rechnungsdaten und zeigt ihn vor. Das Kassensystem liest ihn und hat alle Angaben, die es für die Käuferseite einer Rechnung nach EN 16931 braucht.
Was das Format nicht tut
- Es erzeugt keine Rechnung. Es liefert nur die Daten der Käuferseite.
- Es ersetzt keine Prüfung. Der Verkäufer bleibt für die Richtigkeit seiner Rechnung verantwortlich.
- Es transportiert keine Positionen, keine Beträge und keine Steuersätze.
- Es enthält keinen Zahlungsvorgang und keine Kontoverbindung.
Grundentscheidungen
Warum es so aussieht
- Alle Daten stehen im Code selbst. Es gibt keinen Server-Abruf, keine ID und keine Datenbank dahinter. Der Code funktioniert offline, auch auf Papier, und auch dann noch, wenn es den Herausgeber des Formats nicht mehr gibt.
- Eine einzige Zeile, keine Zeilenumbrüche. Viele Kassenscanner geben Gelesenes als Tastatureingabe weiter. Ein Zeilenumbruch würde dort wie die Eingabetaste wirken und das Formular abschicken.
- Benannte Felder statt fester Reihenfolge. Das kostet ein paar Zeichen, macht das Format aber erweiterbar, ohne alte Leser zu brechen.
- Kurz genug für einen kleinen Code. Ein typischer Datensatz bleibt unter 250 Zeichen. Damit passt er in einen QR-Code, der von einem Handydisplay und von einer laminierten Karte zuverlässig gelesen wird.
- Offen und frei. Jeder darf das Format lesen, erzeugen und in eigene Produkte einbauen. Ohne Lizenz, ohne Anmeldung, ohne Gebühr.
Ein Rechnungspass ist eine einzelne Zeichenkette in UTF-8. Sie besteht aus Segmenten, die durch einen senkrechten Strich | getrennt sind. Das erste Segment ist die Kennung, alle weiteren sind Felder in der Form TAG:Wert.
RPASS:1|TAG:Wert|TAG:Wert|TAG:Wert
Regeln für den Aufbau
- Das erste Segment lautet
RPASS: gefolgt von der Hauptversion als Dezimalzahl. In dieser Fassung also RPASS:1.
- Ein Tag besteht aus genau drei Großbuchstaben A bis Z.
- Tag und Wert werden durch den ersten Doppelpunkt im Segment getrennt. Weitere Doppelpunkte gehören zum Wert.
- Die Reihenfolge der Felder ist beliebig. Jedes Tag darf höchstens einmal vorkommen.
- Ein Feld ohne Wert wird weggelassen, nicht leer mitgeschickt.
- Steuerzeichen von U+0000 bis U+001F sind verboten. Damit auch Zeilenumbrüche und Tabulatoren.
- Führende und abschließende Leerzeichen eines Wertes werden vom Leser entfernt.
Maskierung
Zwei Zeichen haben im Wert eine Sonderbedeutung und werden mit einem Rückstrich maskiert.
| Zeichen im Wert | Geschrieben als |
| | | \| |
| \ | \\ |
Die Spalte rechts nennt das entsprechende Feld der Norm EN 16931, damit die Abbildung auf XRechnung und ZUGFeRD eindeutig ist.
| Tag | Bedeutung | Status |
Max | EN 16931 |
| FIR | Firmenname des Käufers, wie er auf der Rechnung stehen soll | Pflicht | 200 | BT-44 |
| STR | Straße und Hausnummer | Pflicht | 150 | BT-50 |
| ZUS | Adresszusatz, etwa Gebäude oder Postfach | optional | 150 | BT-51 |
| PLZ | Postleitzahl | Pflicht | 20 | BT-53 |
| ORT | Ort | Pflicht | 100 | BT-52 |
| REG | Region oder Bundesland, nur wo im Zielland üblich | optional | 100 | BT-54 |
| LND | Ländercode nach ISO 3166-1 alpha-2, etwa DE | Pflicht | 2 | BT-55 |
| EAD | Elektronische Adresse, an die die Rechnung zugestellt wird | Pflicht | 254 | BT-49 |
| EAS | Schema der elektronischen Adresse nach EAS-Codeliste. EM für E-Mail, 0204 für Leitweg-ID | Pflicht | 4 | BT-49-1 |
| UST | Umsatzsteuer-Identifikationsnummer, ohne Leerzeichen | bedingt | 20 | BT-48 |
| HRN | Registernummer, etwa Handelsregisternummer | optional | 50 | BT-47 |
| KRF | Käuferreferenz. Bei öffentlichen Auftraggebern die Leitweg-ID | bedingt | 50 | BT-10 |
| BST | Bestellreferenz oder Kostenstelle, die auf der Rechnung erscheinen soll | optional | 50 | BT-13 |
| ANS | Ansprechpartner in der Buchhaltung | optional | 100 | BT-56 |
| TEL | Telefonnummer des Ansprechpartners | optional | 50 | BT-57 |
Was bedingt heißt
UST ist Pflicht, sobald der Käufer umsatzsteuerlich als Unternehmer auftritt. Praktisch also fast immer, weil genau darum geht es beim Rechnungspass. Weggelassen werden darf es nur, wenn der Käufer keine USt-IdNr. besitzt. Dann sollte stattdessen HRN gesetzt sein.
KRF ist Pflicht, wenn der Käufer ein öffentlicher Auftraggeber ist, der eine Leitweg-ID verlangt.
Beispiel
Ein vollständiger Datensatz
Ein Busunternehmen, das an einer Tankstelle oder in einer Gaststätte einkauft. Der Datensatz ist 153 Zeichen lang und passt damit in einen QR-Code der Version 9, also 53 Module je Kante.
RPASS:1|FIR:Reisedienst Halbach GmbH|STR:Buswerk 14|PLZ:03046|ORT:Cottbus|LND:DE|UST:DE271884903|EAD:rechnung@halbach-reisen.de|EAS:EM|ANS:Sabine Halbach
Dieselbe Firma mit Adresszusatz und Kostenstelle, und ein öffentlicher Auftraggeber mit Leitweg-ID:
RPASS:1|FIR:Stadtverwaltung Cottbus|STR:Neumarkt 5|PLZ:03046|ORT:Cottbus|LND:DE|EAD:991-12345-67|EAS:0204|KRF:991-12345-67|BST:Kostenstelle 4711
Verhalten
Regeln für Leser und Erzeuger
Ein Leser muss
- Die Zeichenkette ablehnen, wenn sie nicht mit
RPASS: beginnt.
- Die Hauptversion prüfen. Ist sie höher als die unterstützte, wird der Code abgelehnt und dem Bediener gemeldet, statt Felder zu raten.
- Unbekannte Tags stillschweigend übergehen. Nur so bleiben spätere Erweiterungen verträglich.
- Fehlende Pflichtfelder melden, statt einen unvollständigen Datensatz zu übernehmen.
- Die gelesenen Daten anzeigen, bevor sie in die Kundendatei übernommen werden. Der Bediener bestätigt.
Ein Leser sollte
- Die USt-IdNr. gegen das Bestätigungsverfahren prüfen, also VIES oder die Schnittstelle des Bundeszentralamts für Steuern, und das Ergebnis anzeigen.
- Bekannte Kunden am Datensatz wiedererkennen und nicht doppelt anlegen.
- Den Rohtext des Codes zusammen mit dem Vorgang speichern, damit später nachvollziehbar ist, welche Daten der Kunde geliefert hat.
Ein Erzeuger muss
- Alle Pflichtfelder setzen.
- Werte maskieren, die
| oder \ enthalten.
- Den Nutzer die Daten vor dem Erzeugen prüfen lassen. Ein falscher Code verteilt den Fehler an jede Kasse.
| Merkmal | Vorgabe |
| Symbologie | QR-Code nach ISO/IEC 18004, Byte-Modus, UTF-8 |
| Fehlerkorrektur | Stufe M. Auf Papier, das im Handschuhfach liegt, Stufe Q |
| Typische Größe | Bei 130 bis 250 Zeichen Version 8 bis 11, also 49 bis 61 Module je Kante. Version 11 fasst 251 Zeichen |
| Ruhezone | Mindestens 4 Module ringsum, unbedruckt |
| Druck | Modulgröße mindestens 0,5 mm. Bei 57 Modulen also mindestens 35 mm Kantenlänge einschließlich Ruhezone |
| Bildschirm | Mindestens 250 Pixel Kantenlänge, Helligkeit hochdrehen, kein Dunkelmodus hinter dem Code |
| Farben | Dunkel auf hell, Kontrastverhältnis mindestens 4 zu 1. Keine Logos im Code |
Scanner, die wie eine Tastatur arbeiten
Viele Handscanner an Kassen geben den gelesenen Text als Tastatureingabe aus. Solche Geräte haben oft eine Tastaturbelegung eingestellt, die Sonderzeichen vertauscht. Wer einen solchen Scanner anbindet, prüft vor dem Einsatz, ob der senkrechte Strich und die deutschen Umlaute korrekt ankommen. Im Zweifel ist ein Kamerascanner oder eine direkte Anbindung der bessere Weg.
Vertrauen
Was der Code nicht beweist
Version 1 ist nicht signiert. Wer einen Rechnungspass erzeugt, kann beliebige Daten hineinschreiben. Das ist bewusst so und kein Rückschritt, denn heute diktiert derselbe Kunde dieselben Daten mündlich an der Kasse, und auch das prüft niemand.
Die Verantwortung bleibt, wo sie ohnehin liegt. Der Verkäufer stellt die Rechnung aus und muss die Angaben seines Kunden im üblichen Rahmen prüfen. Deshalb schreibt diese Spezifikation vor, dass ein Leser die Daten anzeigt und bestätigen lässt, und empfiehlt die Abfrage der USt-IdNr. beim Bestätigungsverfahren.
Für eine spätere Version denkbar
- Eine Signatur, mit der eine vertrauenswürdige Stelle bestätigt, dass Firmenname und USt-IdNr. zusammengehören. Als Kandidaten kämen Steuerberater, Kammern oder ein Registerabgleich infrage.
- Ein Gültigkeitsdatum, damit alte Karten nach einem Umzug von selbst auslaufen.
Beides wurde für Version 1 bewusst zurückgestellt, weil es Infrastruktur voraussetzt, die es heute nicht gibt, und weil ein Format, das erst mit einer Vertrauensstelle funktioniert, sich nicht verbreitet.
Datenschutz
Wer welche Daten sieht
- Ein Rechnungspass enthält im Regelfall nur Firmendaten. Sobald
ANS oder TEL gesetzt sind, stehen auch personenbezogene Daten im Code. Diese Felder sind deshalb optional.
- Beim Erzeugen und beim Lesen entsteht keine Verbindung zu einem Server des Herausgebers. Es gibt keinen Ort, an dem sich nachvollziehen ließe, wer wann wo eingekauft hat.
- Der Verkäufer speichert die Daten in seiner Kundendatei, wie er es bei jeder Rechnung ohnehin tut. Es entsteht keine zusätzliche Verarbeitung.
- Ein Rechnungspass gehört der Firma, nicht einer Person. Er wird an Mitarbeiter weitergegeben und darf keine Angaben enthalten, die nur eine einzelne Person betreffen.
Weiterentwicklung
Versionen und Lizenz
- Neue Tags und neue optionale Felder ändern die Hauptversion nicht. Alte Leser übergehen sie.
- Die Hauptversion steigt nur, wenn sich der Aufbau ändert oder ein Pflichtfeld hinzukommt.
- Tags werden nie neu belegt. Ein zurückgezogenes Tag bleibt für immer zurückgezogen.
- Das Format darf frei implementiert werden, kommerziell wie nicht kommerziell, ohne Lizenzgebühr und ohne Anmeldung. Dieses Dokument steht unter CC BY 4.0.
Rückmeldungen
Diese Fassung ist ein Entwurf. Wer ein Kassensystem baut und etwas vermisst, sollte sich melden, bevor Version 1 festgeschrieben wird. Genau dafür ist der Entwurf da.
| Fassung | Datum | Änderung |
| 1.0 Entwurf | 19.08.2026 | Erste Fassung |