QR Codes in MS Word – Payment made easy

QR Codes in MS Word – Payment made easy

Die mit dem Smartphone lesbaren QR Codes kommen immer mehr an – auch hier hat die von der Corona-Pandemie weiter vorangetriebene Digitalisierung Deutschland ein weiteres Stück “Neuland” eröffnet. Nachdem mir aufgefallen war, wie viel schneller und bereitwilliger ich meine Arztrechnungen bezahle, seitdem ich mich nicht mehr im Online-Banking einloggen, dort zu den Überweisungen navigieren, die Zahlungsdaten fehleranfällig manuell eingeben und das alles mit dem Smartphone oder PIN-Generator bestätigen muss, sondern einfach mit der Online-Banking-App den EU-einheitlichen “EPC”-QR Code auf der Rechnung fotografiere und die Zahlung mit dem Daumen abnicke, dachte ich: Das muss doch auch im gemütlichen kleinen Büro des Solo-Selbstständigen Freiberuflers gehen. Und es geht, direkt in Office… mit gewissen Tücken. Ich zeige hier den Weg zu QR Codes in MS Word.

Symbolbild: Aufbau eines QR-Codes mit arbeitenden Männchen (CC0 Pixabay/xat-ch)
Symbolbild: Aufbau eines QR-Codes (CC0 Pixabay/xat-ch)

Mit EPC, dem European Payment Code, auch Girocode genannt, können Zahlungsdaten für Überweisungen von Online-Banking-Apps eingelesen werden und brauchen dann nur noch per TAN oder Fingerabdruck bestätigt zu werden. Das lästige und fehleranfällige Eintippen von Hand entfällt.

Ein Hinweis zu den zahlreichen Online-QR-Generatoren: Ja, einige davon stellen inzwischen auch EPC-Codes her, aber oft enthalten EPC-Codes von der DSGVO geschützte personenbezogene Daten, mindestens aber die eigene Bankverbindung. Diese Daten sollten nicht einem anonymen Webservice überlassen werden, sondern möglichst lokal generiert werden. Hier zeige ich, wie!

Was sind QR Codes und was heißt EPC?

QR Codes oder Quick Response Codes sind dreidimensionale Barcodes, die Textdaten binär in einer Punktematrix speichern, deren Orientierung durch besondere Quadrate an drei der vier Ecken vorgegeben ist. Eine eingebaute Fehlerkorrektur sorgt dafür, dass QR Reader – die in aktuellen Smartphone-Betriebssystemen meist sogar direkt in der Kamerasoftware integriert sind – diese Codes auch dann auslesen können, wenn sie zu 7% – 30% beschädigt oder verschmutzt sind. Auf diese Weise lassen sich kurze Texte, URLs (Webseiten-Adressen), digitale Visitenkarten mit Kontaktdaten und weitere Daten codieren. Mehr zu den technischen Details erklärt z.B. die Wikipedia.

Edit 08.11.2021: Das Problem mit Word: MS Word erschwert die Eingabe des laut EPC-Standard nötigen Newline-Zeilenumbruchs (Alt+010) – und es kann dieses Zeichen auch nicht speichern! Wenn Ihr Workflow also nicht erlaubt, die Steuerzeichen jedes Mal manuell einzugeben und direkt nach PDF zu speichern, wo der Code korrekt erhalten bleibt, ist diese Methode vermutlich nichts für Sie, bis Microsoft die Funktion nachbessert.

Update 02.06.2023: Die bisher nicht in Word eingeb- und speicherbaren Newline-Zeichen des EPC können seit einem Update im April 2023 einfach mit Umschalt+Enter (Zeilenumbruch statt neuer Absatz) eingegeben werden! Dies macht die vielen bisher in den Kommentaren vorgeschlagenen Workarounds endlich unnötig. Danke an alle, die sich so rege hier mit dem Problem beschäftigt und beteiligt haben!

European Payment Code (EPC): Aufbau

Der EPC ist ein zwölfzeiliger Textblock, der nach dem EPC-Standard in QR-Codes codiert wird:

1 	BCD				Service-Tag (Fixwert)
2 	002				Version (001 oder 002)
3 	1				Zeichencodierung (1: UTF-8, 2: ISO 8859-1, etc.)
4 	SCT				SEPA Credit Transfer = Typ des QR-Codes (Fixwert)
5 	BFDGDE31BUR			Empfänger BIC (im EWR optional)
6 	Mein tolles Unternehmen		Empfänger Name (max. 70 Zeichen)
7 	DE37100245006029573700		Empfänger IBAN (ohne Leerzeichen)
8 	EUR1234.56			Zahlungsbetrag (Format "EUR#.##" einhalten, optional)
9 	DCRD				Zweck (vierstelliger Buchstabencode, optional)
10 	RF18 5390 0754 7034		ISO 11649 RF Creditor Reference Code (optional)
11 	Spende fuer Wikipedia		Verwendungszweck (max. 140 Zeichen Freitext, optional)
12	Benutzer-Hinweis		Wird in der Banking-App angezeigt (max. 70 Zeichen, optional)
  • Die Zeilen 1 bis 7 sind Pflichtfelder
  • Die Zeilen 8 bis 12 sind optional – auch der Betrag, den der Benutzer in der Banking-App selber eingeben oder, falls angegeben, in der App auch noch ändern kann. Achtung: Der Betrag muss mit dem dreistelligen Währungscode “EUR” beginnen, als Dezimaltrenner einen Punkt benutzen und darf keine Tausendertrennzeichen beinhalten.
  • Zeile 9 enthält optional einen vierstelligen Buchstabencode für die Art der Transaktion, den man frei festlegen kann, z.B. CHAR für “Charity” (Spende), DCRD für “Debit Card Payment” (Zahlung mit Bankkarte), CCRD für “Credit Card Payment” (Zahlung mit Kreditkarte), etc. Die Verwendung und Systematik ist Ihnen freigestellt, aber ein Beispiel gibt Blatt “4-CategoryPurpose” in der Excel-Tabelle von sepa-tools.de.
  • Außerdem schließen sich Zeile 10 und 11 gegenseitig aus: Entweder, man gibt als Verwendungszweck den strukturierten RF Creditor Reference Code ein (mehr dazu z.B. im Novalnet Payment Lexikon), oder man gibt den Freitext-Verwendungszweck ein. Für KMU und Freelancer wird der Freitext in Zeile 11 mit z.B. Rechnungsnummer + Rechnungsdatum als Inhalt die Regel sein.
  • Zeile 12 wird nicht Teil der Überweisungsdaten, sondern wird dem Benutzer in der Banking-App angezeigt. Hier kann z.B. “Vielen Dank, beehren Sie uns bald wieder!” oder so etwas stehen.

Daraus ergibt sich: Wenn Sie einfach nur einen allgemeingültigen EPC QR-Code für alle Rechnungen erstellen wollen, der nur Ihre Bankverbindung korrekt übermitteln soll, geben Sie die EPC-Pflichtfelder an und lassen den Rest leer. Sie müssen dem Kunden dann kommunizieren, dass er in der Banking-App den Betrag und Verwendungszweck selbst nachtragen muss.
Ansonsten erzeugen Sie einen individuellen EPC für jede Rechnung, in dem dann auch Betrag und Verwendungszweck (z.B. mit der Rechnungsnummer) vorbelegt sind.

European Payment Codes (EPC) QR Codes in MS Word: Anleitung

MS Word kann ab Version 2013 QR-Codes aus Felddaten generieren. Um diese sinnvoll eingeben zu können, müssen sie folgende drei Tastenkombinationen kennen: Shift + F9 schaltet die Felder-Ansicht für das aktuelle Feld zwischen dem Eingabemodus und dem Ansichtsmodus um, Alt + F9 schaltet die Felder-Ansicht für alle Felder des Dokuments um, und Strg + F9 erzeugt ein neues Feld.

Um einen QR-Code zu erzeugen, legen Sie also mit Strg + F9 ein neues Feld an, es erscheint ein graues Kästchen mit zwei geschweiften Klammern. In dieses können Sie dann das Kommandowort DISPLAYBARCODE und die Daten für Ihren QR-Code, z.B. einen Web-Link, eingeben:

{ DISPLAYBARCODE "https://www.defrent.de/" QR  \q 1 \s 50 \t  \f 0x79b428 \b 0xFFFFFF }
                 [1]                       [2] [3]  [4]   [5] [6]         [7]
  1. Textinhalt des Barcodes in Anführungszeichen. Bei mehrzeiligen Codes wie dem EPC werden Absatzumbrüche (eigentlich \cr– oder \lf-Steuerzeichen) direkt im Feld gesetzt. Bei Serienbriefen muss man mit einer Verkettung von MERGEFIELD-Feldern (verschachteltes Strg+F9) innerhalb des DISPLAYBARCODE-Feldes arbeiten, wie im Blog von ServAndTrain beschrieben.
  2. Typ des Barcodes, hier: “QR”-Code
  3. Fehlerkorrektur-Level 0=L (Low), 1=M (Medium: Pflicht für EPC-Codes!), 2=Q (Quartil), 3=H (High)
  4. Optional: Skalierung in % (Größe des erzeugten Bildes: Nur ganze 10er-Schritte, also 10, 20, 30 … 80, 90, 100. Achten Sie darauf, dass der Code nicht so klein wird, dass ihn Kameras nicht mehr sauber erfassen können!)
  5. Optional: Barcode-Daten mit Barcode zusammen anzeigen (funktioniert nicht mit QR-Codes; nur mit z.B. EAN-Strichcodes, deren Artikelnummer dann unter dem Barcode mit abgedruckt wird)
  6. Optional: Vordergrundfarbe als Hexadezimalwert (0x000000 schwarz bis 0xFFFFFF weiß)
    Edit 07.09.21: MS brät auch hier übrigens eine benutzerfeindliche Extrawurst: Die Hex-Farbcodes sind statt dem üblichen Rot-Gelb-Blau in umgekehrter Schreibweise einzutragen, also nicht 0xRRGGBB, sondern 0xBBGGRR.
  7. Optional: Hintergrundfarbe als Hexadezimalwert (0x000000 schwarz bis 0xFFFFFF weiß)

Ein EPC-Code für Überweisungen per Banking-App würde dann wie folgt in Word eingegeben (mit durch Alt+010 eingegebenen Steuerzeichen als Umbrüchen, nicht durch Enter oder seit April 2023 mit Umschalt + Enter !) :

{ DISPLAYBARCODE "BCD
002
1
SCT
BEISPE1L
Beispielunternehmen GmbH
DE9251390000549823401
EUR0.01


Rechnungsnr. R2021-04-0009
Betrag und Rechnungsnummer prüfen, bestätigen, fertig. Danke!" QR \q 1 \s 60 \f 0x79b428 \b 0xFFFFFF }

Danke hier an die Herren Strack und Radman, die in den Kommentaren darauf hinwiesen, dass der Code bei ihren Banking-Apps nicht funktionierte, weil Word sowohl bei Enter als auch Umsch + Enter im QR-Code ein Carriage Return (CR)-Zeichen (Alt+013) kodiert. Wenn man die Umbrüche jedoch per Hand mit Alt+010 als Line Feed (LF)-Zeichen eingibt, funktionierte es auch bei ihren Banking-Apps… und bei meinen.
Hinzu kommt, dass der Umweg über die SYMBOL-Feldfunktion mit { SYMBOL 0x010 } auch nicht funktioniert und Word auch das per Alt-Code eingegebene Steuerzeichen lediglich als normales Leerzeichen speichert – lediglich das Erzeugen des Codes in Word mit folgendem Export nach PDF ist persistent! [MS hat das endlich per Update gefixt, Word speichert die Zeilenumbrüche in QR-Codes nun korrekt, siehe oben]

Der komplette, 12-zeilige Textinhalt des EPC erscheint also innerhalb der Anführungszeichen des DISPLAYBARCODE-Feldes, einschließlich der für das strukturierte Datenformat nötigen “Leerzeilen”, wo keine Angaben gemacht werden – auch wenn Word sie nicht als Umbrüche anzeigt, sondern als unbekannte Steuerzeichen (Kästchen mit Fragezeichen darin).

Sobald Sie dann mit Shift + F9 (aktuelles Feld) oder Alt + F9 (alle Felder) von der Bearbeitungsansicht auf die normale Ansicht für Word-Felder wechseln (und notfalls nach Änderungen mit F9 alle Felder aktualisieren), zeigt das Programm statt der eingegebenen Daten den EPC-QR-Code an:

Altes Verhalten: Von Word 2016 erzeugter EPC-QR-Code mit per Alt+010 erzeugten Zeilenumbrüchen: Mit der Banking-App (nicht mit der normalen Kamera-App!) scannen zum Ausprobieren. Sie können die Zahlung jederzeit abbrechen, die IBAN ist ungültig.
EPC GiroCode aus Word 2016: Mit der Online-Banking-App scannen. Die Zahlung an den fiktiven Empfänger kann jederzeit abgebrochen werden.
Altes Verhalten: Von Word 2016 erzeugter EPC-QR-Code mit Enter bzw. Umschalt-Enter statt Alt+010 (Line Feed) als Zeilenumbrüchen: Viele Banking-Apps können konnten die von Word im QR-Code kodierten Carriage Return-Zeilenumbrüche (Alt+013) nicht korrekt interpretieren und verweigerten die Annahme. Dies ist nun gefixt und Umschalt-Enter funktioniert!

Dies ist das Vorgehen für die manuelle Eingabe der QR-Code-Daten. Im Idealfall wird man ein gewisses Maß an Automatisierung haben wollen, indem man z.B. die Rechnungsnummer und den Rechnungsbetrag automatisch von den entsprechenden Stellen des Word-Dokuments in den QR-Code überträgt – selbst wenn man nicht den oben verlinkten Serienbrief-Weg geht, sondern Rechnungen manuell aus einer Vorlage erstellt.

Dazu erstellt man zuerst die Rechnungsnummer und den Rechnungsbetrag im EPC-Format (“EUR0.00”) als benannte Textmarken per Strg + F9: { SET RBetrag "EUR0.58" } und { SET RZweck "Rg.Nr. 0012345" } oder indem man einen entsprechenden Text markiert und per Einfügen > Textmarke als Textmarke benennt (beim zweiten Weg bietet es sich an, die Textmarken sichtbar zu machen). Den ersten Weg, die Textmarke per Feldbefehl einzugeben, finde ich besser, weil die sichtbaren Texte insbesondere beim Betrag in der Regel nicht dem EPC-Format “EUR#.##” entsprechen, sondern deutsch mit Dezimalkomma und Leerzeichen zwischen Betrag und Währung formatiert sind. Die Inhalte der Textmarken können dann anderswo im Dokument mit dem Feld REF (Referenz) wiederverwendet werden, auch im DISPLAYBARCODE-Feld, wo wir sie anstelle der Direkteingaben mit Strg + F9 einfügen als { REF RBetrag } und { REF RZweck }, also als verschachtelte Felder. Unser QR-Code sieht dann wie folgt aus:

{ DISPLAYBARCODE "BCD
002
1
SCT
BEISPE1L
Beispielunternehmen GmbH
DE9251390000549823401
{ REF RBetrag }


{ REF RZweck }
Danke fürs Ausprobieren!" QR \q 1 \s 60 \f 0x79b428 \b 0xFFFFFF }

Auf diese Weise können wir dann durch Anpassung der Textmarken und drücken von F9 (Felder aktualisieren) auch den QR-Code auf jede neue Rechnung anpassen. Theoretisch könnte man die Textmarken auch setzen, indem man die entsprechenden Texte im menschenlesbaren Teil der Rechnung in Word markiert und per Einfügen > Textmarke benannte Textmarken daraus macht, aber da zumindest der Betrag im menschenlesbaren Teil dem deutschen statt dem englischen EPC-Zahlenformat folgt (z.B. “32,50 €” statt “EUR32.50”), müsste man die Zahl dann erst mit einer Formel umwandeln, bevor sie so eingefügt werden kann. Für die Rechnungsnummer (i.d.R. der Betreff der Rechnung) ist dieses Vorgehen kein Problem, aber die Rechnungssumme sollte besser separat mit dem oben beschriebenen Vorgehen übernommen – d.h. doppelt eingegeben – werden. Noch schlauer ist dann natürlich die Rechnungstellung per Serienbrief und MERGEFIELD-Anweisung, die Herr Käflein von ServAndTrain beschrieben hat.

Ich hoffe, das hilft euch weiter. Euer
Christopher von DeFrEnT

Nachtrag – der EPC QR-Code funktioniert bei mir problemlos in der VR Banking App, nicht jedoch in der Sparda Banking App. Weder das Zurückstufen auf Version 001 statt 002 noch das Ändern der Zeichenkodierung von 1 Unicode auf 2 Westlich noch der Verzicht auf Umlaute in den Texten konnten das bisher ändern. Ich bin für Erfahrungsberichte mit anderen Banking-Apps und Ideen zur Problemlösung dankbar!
Nachtrag zum Nachtrag – Mit den veränderten Zeilenumbrüchen klappt’s nun auch bei der Sparda Banking App!

Nachtragsnachtrag zum Nachtrag: Microsoft hat das langjährige Problem behoben (s.o.) und erzeugt seit April 2023 korrekte EPC-QR-Codes.

Christopher Köbel (Portrait)
Christopher Köbel

Inhaber von DeFrEnT Christopher Köbel. Fachübersetzer für Deutsch, Französisch und Englisch für die Branchen IT, Web, Maschinen- und Anlagenbau, Kunststoffe, Industrie 4.0. Allgemein ermächtigter Übersetzer für Französisch und Englisch. Mitglied im Bundesverband der Dolmetscher und Übersetzer (BDÜ).

Leave a Reply