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

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ß)
  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 Umsch + 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.

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:

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.
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 die von Word im QR-Code kodierten Carriage Return-Zeilenumbrüche (Alt+013) nicht korrekt interpretieren und verweigern die Annahme.

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!

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Ü).

16 Kommentare

Andreas Preter Veröffentlicht am8:30 - 21. Mai 2021

Hallo,
danke für die interessante Übersicht.
Das Problem liegt in der Bearbeitung von Displaycode von Word. Jeder Zeilenumbruch im String wird von Word als Leerstelle gesehen. Wenn man den Beispiel QR Code scannt und sich den Text ansieht, stellt man fest, dass es sich um einen fortlaufenden String ohne Zeilenumbrüche handelt. Leider kann Word dies bisher nicht. Einige Banking Apps können damit umgehen andere nicht, da der String nicht den Standardvorgaben von EPC entspricht.
Grüße

    Christopher Köbel Veröffentlicht am12:44 - 21. Mai 2021

    Danke, Herr Preter,
    für den Hinweis auf die Leerzeichenproblematik. Ich war davon ausgegangen, dass Word die Umbrüche (Word Absatzmarken), die ja beim Hin- und Herschalten zwischen den Feldansichten bestehen bleiben, auch im QR-Code codiert. Wenn diese dort natürlich fehlen, ist das leider ein Problem, das wohl nicht ohne Weiteres von Benutzern zu lösen sein wird, bis MS das Verhalten patcht.

Michael Strack Veröffentlicht am19:42 - 25. Mai 2021

Hallo,
vielen Dank für Deinen super Beitrag. Leider funktioniert der QREPC-Code überhaupt nicht. Ich nutze die Banking4A-App. Gab es zwischenzeitlich eine Lösung, warum der wordseitige EPC-Code teilweise nicht funktioniert?

Viele Grüße
Michael

Michael Veröffentlicht am20:01 - 25. Mai 2021

Komisch,
die Kommentare werden erst angezeigt, wenn man einen schreibt…
Mit Alt+010 funktioniert es in der Banking4A App…

Viele Grüße
Michael

Thomas Radman Veröffentlicht am15:49 - 7. Juni 2021

Zumindest in Word 2019 funktioniert diese Vorgehensweise nicht mehr, weil die Funktion DISPLAYBARCODE aus den Absatzmarken im Text einen Zeichencode [13]
(Carriage Return) macht. Der Scanner der Easybank-App erwartet jedoch den Zeichencode [10] (Linefeed).
Die Lösung is in diesem Fall, den String nicht durch Absatzmarken/Enter in Word zu trennen, sondern anstatt dessen mit der Tastenkombination ALT+010 das Sonderzeichen einzufügen.
Das sieht dann in etwa so aus .. “BCD□002□1□SCT□GIBAATWWXXX□Franz Muster□AT902011100044766599□EUR90.00□□□Rechnung Nr. 20210094”

Übrigens: Perfekt zum Testen ist die App “REA CodeScan”, weil sie auch die Steuerzeichen als Ascii-Code anzeigt.

LG
Thomas

    Christopher Köbel Veröffentlicht am16:25 - 7. Juni 2021

    Danke, Herr Radman,

    für den nun zweiten Hinweis auf das LF-Zeichen (Alt+010) statt des von Word bei Umbrüchen (Enter bzw. Shift+Enter) normalerweise gesetzten CR-Zeichens (Alt+013)! Das wäre schon die zweite Banking-App, bei der es dann doch geht… und mit meiner vormals verweigernden Sparda-App die dritte.

    Ich habe diese wichtige Information nun dem Artikel hinzugefügt.

    VG
    Christopher

Leopold Veröffentlicht am9:25 - 13. Juli 2021

DANKE!!!
Sitze als Praktikant in einem IT-Büro und habe nur mal als Probeauftrag bekommen, QR Codes für Rewchnungen zu erstellen.
Bin in Sachen IT vollkommener Laie. Keine Ahnung was CR und LF ist, aber der Tipp war genau das wonach ich die letzten 10h gesucht habe.
Herzlichen Dank.

    Christopher Köbel Veröffentlicht am13:35 - 13. Juli 2021

    Danke für die Blumen!

M Veröffentlicht am12:17 - 20. Juli 2021

Hallo,

ist es auch Möglich irgendwie die EQC-Codes in Word 2010 zu erstellen?

Ice Veröffentlicht am15:22 - 28. Juli 2021

Ich habe das Problem, dass die mit Alt+010 in der Zeichenkette für DISPLAYBARCODE eingefügten Zeichen in einer Word-Vorlage beim Speichern und wieder Öffnen der Vorlage nicht erhalten bleiben, sondern durch Leerstellen ersetzt werden.
Solange man testet und in Word auf der Basis der erstellten Vorlage Serienbrief-Dokumente erstellt ist alles gut; nach dem Schliessen von Word (inkl. Speichern der Vorlage) und erneutem Öffnen werden keinen gültigen QR-Codes mehr erstellt.
Dies hat nichts mit DISPLAYBARCODE zu tun, es passiert auch einfach so irgendwo im Text der Vorlage…
Wie kann man Alt+010 persistent in einer Word-Vorlage (*.dotx) speichern?

    Christopher Köbel Veröffentlicht am15:42 - 28. Juli 2021

    Hallo Ice,

    das ist ja wirklich ärgerlich! Wenn Word das Leerzeichenden LF-Zeilenumbruch beim Speichern automatisch in ein “allgemeines” Leerzeichen konvertiert, wird daran nur, fürchte ich, nichts zu machen sein. Das wäre wohl ein weiteres Bugticket an Microsoft im Zusammenhang mit der DISPLAYBARCODE-Implementierung wert. :-/

    Der einzige Hack, der mir spontan einfällt, wäre, das .DOTX als .ZIP zu öffnen und mit einem Texteditor (z.B. Notepad++) die falsch gespeicherten Leerzeichen an den relevanten Stellen in word/document.xml zu ersetzen – und dann zu gucken, ob die eingefügten LF-Umbrüche das erneute Öffnen in Word als Vorlage überleben.

    Wäre schön, wenn du hier nach einem Test kurz mitteilst, ob das funktioniert!

    Viel Erfolg,
    Christopher

      Ice Veröffentlicht am17:46 - 29. Juli 2021

      Danke für die Antwort.
      Es ist nicht das Leerzeichen, sondern das LF (Alt+010) Zeichen, welches durch eine Leerstelle ersetzt wird – in meinem Fall.
      Bevor ich den vorgeschlagenen Hack versuche, würde ich gerne eine Bestätigung für das beschriebene Verhalten haben: Ist das bei dem hier beschriebenen Vorgehen schliesslich auch so?

        Christopher Köbel Veröffentlicht am10:28 - 30. Juli 2021

        Gerade getestet: Die Alt+010 LF-Zeichen überleben (in Word 2016) offenbar weder das Speichern und erneut öffnen als .docx-Dokument, noch als .dotx-Vorlage.

        Neben dem oben vorgeschlagenen Hack fiel mir noch ein, dass – wenn man ohnehin eine Vorlage (für Seriendokumente?) anlegt, den Textstring für den QR-Code vielleicht als Datenimport aus einem beständigeren Format (.txt, .csv, .xml, …?) eingelesen bekommt? Das könnte noch ggf. noch eine zu testende Option sein.

          Ice Veröffentlicht am15:38 - 2. August 2021

          Da ich definitiv Die QR-Codes innerhalb einer Word-Serienbrief-Vorlage verwende habe ich nun im Prinzip folgenden DISPLAYCODE Befehl geschachtelt mit den Seriendruckfelder und einem einem kleinen Trick aufgebaut:
          { DISPALYBARCODE “BCD {DOCPROPERTY LINEFEED \*MERGEFORMAT}002{DOCPROPERTY LINEFEED \*MERGEFORMAT}1{DOCPROPERTY LINEFEED \*MERGEFORMAT}SCT{DOCPROPERTY LINEFEED \*MERGEFORMAT}{
          MERGEFIELD FIrmenname \”MERGEFORMET{DOCPROPERTY LINEFEED \*MERGEFORMAT}…

          Die DOCPROPERTY kann man in Word unter Datei / Information / Eigenschaften / Anpassen finden. Nur Alt+10 kann man da nicht angeben (diese Eingabe wird nicht als Zeichen erkannt und kann daher nicht gespeichert/hinzugefügt werden).
          Man kann den gewünschten Wert jedoch mit einem Script speichern:

          Sub GetSetDeleteDocVars()

          With ActiveDocument.CustomDocumentProperties
          .Add Name:=”LINEFEED”, _
          LinkToContent:=False, _
          Type:=msoPropertyTypeString, _
          Value:=Chr(10)
          End With

          End Sub

          (Entwickerltools aktivieren, Visual basic anwählen und unter ThisDocument Code anzeigen wählen, Das Script in das Fenster kopieren und ausführen (grünes Dreieck) – Es gibt keine Rückmeldung, ausser es besteht bereits ein Eintrag LINEFEED; in dem Fall einfach manuell wie oben beschrieben zur Anzeige bringen und löschen. Script wieder vollständig löschen und VBA-Fenster schliessen.

          Christopher Köbel Veröffentlicht am18:26 - 2. August 2021

          Hallo Ice,

          danke für diesen kreativen Umweg! Darauf muss man erst einmal kommen – und ich wette, das hilft nicht wenigen, die Word zur Rechnungsstellung einsetzen wollen, aus der Patsche!

          Viele Grüße und eine gute Woche
          Christopher

Schreibe einen Kommentar zu Thomas Radman Antworten abbrechen