dunkles Output Rocks Logo

Was sind QR-Codes?

QR-Codes (Quick Response Codes) sind zweidimensionale Barcodes, die Informationen wie URLs, Kontaktdaten oder Texte speichern können. In Output.Rocks können Sie dynamische QR-Codes erstellen, die sich automatisch an Ihre Kundendaten anpassen und nahtlos in Ihre Dokumente integrieren lassen.

Beispiel eines QR-Codes mit zentralem Logo

Beispiel: QR-Code einer Test-URL und mit zentralem Logo

QR-Codes in Output.Rocks werden ähnlich wie Bilder über Bildmarken in Ihre .docx-Vorlagen eingefügt. Der Unterschied: Statt statische Bilder zu referenzieren, generiert das System die QR-Codes dynamisch basierend auf Ihren Konfigurationen und Daten.

Mit dem QR-Code-Editor können Sie verschiedene Aspekte Ihrer QR-Codes anpassen - von der visuellen Gestaltung bis hin zu technischen Parametern wie der Fehlerkorrektur.

Die generierten QR-Codes können interaktive Elemente enthalten, die Ihre Kunden direkt zu relevanten Informationen, Zahlungsportalen oder Kontaktformularen führen. Verwenden Sie dafür Payload-Platzhalter wie <<payload.customer.contract_id>>, um Inhalte aus ihrem System zu integrieren, zbsp. um Links zu Kundenportalen dynamisch zu generieren.

Die ersten Schritte

  1. QR-Code-Konfiguration im Editor
  2. Integration in Ihre Vorlagen
  3. Dynamische QR-Codes mit Kundendaten
  4. EPC-Banking-QR-Codes für SEPA-Überweisungen
  5. Schweizer QR-Rechnung

1. QR-Code-Konfiguration im Editor

Der QR-Code-Editor

Sie finden den QR-Code-Editor über das Menü unter Werkzeuge -> QR-Code-Editor.

Erstellte QR-Codes sind im Backend unter Vorlagen-Management → QR-Codes zu finden.

Der QR-Code-Editor ist Ihr zentrales Werkzeug für die Erstellung und Verwaltung von QR-Codes. Hier können Sie sowohl den Inhalt als auch die visuelle Erscheinung Ihrer QR-Codes definieren und eine Live-Vorschau generieren.

Grundkonfiguration

Der erste Schritt ist die Definition des QR-Code-Inhalts und der technischen Parameter:

Kodierter Text:

https://kundenportal.stadtwerke-beispiel.de/rechnung/<<contract.id>>

Der Text kann statische URLs, dynamische Platzhalter oder auch komplette Kontaktdaten (vCard-Format) enthalten.

Fehlerkorrekturstufen verstehen

EC-Level steht für "Error Correction Level" und bestimmt, wie viele Schäden der QR-Code verkraften kann, bevor er unlesbar wird:

  • L (Low): ~7% Korrektur - für saubere Druckumgebungen
  • M (Medium): ~15% Korrektur - Standard für die meisten Anwendungen
  • Q (Quartile): ~25% Korrektur - für Umgebungen mit möglichen Beschädigungen
  • H (High): ~30% Korrektur - für kritische Anwendungen oder schwierige Bedingungen

Farbgestaltung

QR-Codes können an Ihr Corporate Design angepasst werden. Die wichtigsten Gestaltungsoptionen:

ElementStandardfarbeVerwendung
Dunkel#000000Datenführende QR-Rasterzellen
Hell#FFFFFFHintergrund und leere Bereiche

Achten Sie auf ausreichenden Kontrast zwischen dunklen und hellen Bereichen. Ein zu geringer Kontrast kann die Lesbarkeit des QR-Codes beeinträchtigen.

Logo-Integration

Für eine stärkere Markenidentität können Sie zentrale Logos hinzufügen, die in der Mitte des QR-Codes platziert werden und dessen Lesbarkeit nicht beeinträchtigen.

ParameterWertBeschreibung
URL des zentralen Bildeshttps://cdn.firma-beispiel.de/logo-small.pngLink zum Logo-Bild
Größenverhältnis0.330% der QR-Code-Fläche

Das zentrale Bild wird in der Mitte des QR-Codes platziert. Dank der Fehlerkorrektur bleibt der Code lesbar, auch wenn ein Teil durch das Logo verdeckt wird.

2. Integration in Ihre Vorlagen

Schritt 1: QR-Codes als Bildmarken einsetzen

QR-Codes werden in Output.Rocks genau wie normale Bilder über das Bildmarken-System in Ihre .docx-Vorlagen integriert. Der Prozess funktioniert in zwei Schritten: Zuerst erstellen und konfigurieren Sie den QR-Code im Backend, dann fügen Sie ein Platzhalter-Bild mit der entsprechenden Bildmarke img_identifierDesQrCodes am Platzhalter in Ihr Word-Dokument ein.

Beim Rendern wird das Platzhalter-Bild automatisch durch den generierten QR-Code ersetzt und orientiert sich an dessen Maßen.

QR-Codes werden wie Bilder über Bildmarken in Ihre Vorlagen integriert.

Schritt 2: Vorlagen-Zuweisung im Backend

Wichtig: QR-Codes müssen den Vorlagen im Backend zugewiesen werden, damit das Vorab-Rendering mit Daten funktioniert. Ohne diese Zuweisung bleibt die Bildmarke leer, da kein QR-Code vorgerendert wurde.

Die Zuweisung von QR-Codes zu Vorlagen ist essentiell für das korrekte Funktionieren. Sie haben zwei Möglichkeiten, diese Verbindung herzustellen:

MethodeVorgehenIdeal für
Über die VorlageVorlage öffnen → "QR-Codes" Schaltfläche → QR-Codes auswählenMehrere QR-Codes für eine Vorlage
Über den QR-CodeQR-Code öffnen → Reiter "Vorlagen" → Vorlagen auswählenEin QR-Code für mehrere Vorlagen

Die erste Methode eignet sich besonders, wenn Sie eine spezifische Vorlage bearbeiten und wissen möchten, welche QR-Codes verfügbar sind. Die zweite Methode ist effizienter, wenn Sie einen QR-Code erstellt haben und diesen für mehrere Vorlagen gleichzeitig aktivieren möchten. Beide Zuweisungsoptionen sind auch im Vorlagen-Editor verfügbar, sodass Sie QR-Codes direkt während der Bearbeitung zuweisen können.

Bildmarken-Präfixe für korrekte Skalierung

Wie bei normalen Bildern können Sie verschiedene Skalierungsoptionen verwenden:

PrefixEffekt
img_Der QR-Code wird gestreckt, um die Maße des Platzhalterbildes auszufüllen (kann zu Verzerrungen führen).
imgfit_Der QR-Code wird skaliert, um in das Platzhalterbild zu passen, behält aber sein quadratisches Format bei.

Empfehlung: Verwenden Sie imgfit_ für QR-Codes, da diese immer quadratisch sein sollten. Das Prefix img_ kann zu unlesbaren, verzerrten QR-Codes führen falls der Platzhalter nicht quadratisch ist.

3. Dynamische QR-Codes mit Logik und Kundendaten

Ein besonderer Mehrwert von QR-Codes entsteht durch die Integration von kunden- oder systemspezifischen Parametern. Typische Anwendungsfälle sind etwa die Integration

  • von Kundennummern, die direkt zu Rechnungen, Zählerständen oder Vertragsverwaltung führen.
  • von Systemparametern, die direkt zu immer aktuellen Service-Funktionen führen.
  • von berechneten oder logischen Werten, um z.Bsp. relevante Angebote oder Kampagnen auswählen

Kundenspezifische URLs und Inhalte

Rechnungsportale

Kodierter Text:

https://kundenportal.stadtwerke-beispiel.de/rechnung/<<contract.id>>?token=<<customer.loginToken>>

Tip: Kunden werden direkt zu ihrer spezifischen Rechnung geleitet, ohne separate Anmeldung.

Zählerstände melden

Kodierter Text:

https://ablesung.stadtwerke-beispiel.de/erfassen?kunde=<<customer.id>>&zaehler=<<meter.serialNumber>>

Tip: Kundendaten sind bereits vorausgefüllt, der Kunde muss nur noch den aktuellen Zählerstand eingeben.

Vertragsmanagement

Kodierter Text:

https://services.stadtwerke-beispiel.de/vertrag/<<contract.id>>/verwalten

Tip: Direkte Links zu Vertragsänderungen, Umzugsmeldungen oder Tarifwechseln erhöhen die Servicequalität.

Dynamische QR-Code-Parameter

Auch die QR-Code-Konfiguration selbst kann dynamisch angepasst werden:

<<$qrIdentifier = map(customer.tariff, 'premium', 'qr_premium_portal', 'qr_standard_portal')>>

Je nach Kundentarif wird ein anderer QR-Code mit angepasstem Design und Ziel-URL verwendet.

Fehlerbehandlung und Best Practices

Testen Sie Ihre QR-Codes immer mit verschiedenen Scannern und Smartphones, bevor Sie sie in Produktionsdokumenten verwenden.

Datenschutz beachten: Vermeiden Sie persönliche Daten direkt in QR-Codes. Verwenden Sie stattdessen sichere Token oder Session-IDs.

Größe optimieren: QR-Codes sollten mindestens 2x2 cm groß sein, um zuverlässig gescannt werden zu können. Bei komplexen Inhalten oder niedrigen EC-Levels entsprechend größer.

Qualitätskontrolle: Der QR-Code-Editor zeigt Ihnen sofort an, wenn Ihre Konfiguration zu Problemen führen könnte.

Ideen für erweiterte Anwendungsfälle:

  • Notfall-Hotlines: QR-Codes mit Telefonnummern für sofortige Hilfe bei Störungen
  • Kundenfeedback: Direkte Weiterleitung zu Bewertungsportalen oder Umfragen
  • Smart Meter Integration: Links zu Apps für Verbrauchsmonitoring und Energieanalysen

4. EPC-Banking-QR-Codes für SEPA-Überweisungen

EPC-QR-Codes (European Payments Council) sind ein standardisiertes Format für Banking-QR-Codes, die direkte SEPA-Überweisungen ermöglichen. Diese speziellen QR-Codes werden von Banking-Apps in Deutschland, Österreich, Belgien, Finnland und den Niederlanden automatisch erkannt und ermöglichen es Kunden, Rechnungen mit einem einzigen Scan zu bezahlen.

Solche EPC-QR-Codes können auch mit Output.Rocks QR-Code-Editor erstellt werden, solange sie der BCD-Struktur folgen.

EPC-QR-Codes verwenden ein BCD-Format (Banking Communication Data) und folgen strengen europäischen Standards für Zahlungsverkehr.

Offizielle EPC-Spezifikation: Die komplette technische Dokumentation finden Sie im offiziellen EPC-Dokument "Quick Response Code - Guidelines to Enable the Data Capture for the Initiation of a SEPA Credit Transfer" (EPC069-12 Version 3.0, September 2022).

Datenschutz beachten: EPC-QR-Codes enthalten sensible Banking-Daten. Stellen Sie sicher, dass diese nur in sicheren, autorisierten Dokumenten verwendet werden.

Offizielle technische EPC-Spezifikationen:

ParameterEPC-Standard (EPC069-12)
Error Correction LevelM (15% der Code-Wörter wiederherstellbar)
ZeichensätzeUTF-8 (empfohlen), ISO 8859-1 bis ISO 8859-15

EPC-QR-Code-Struktur verstehen

EPC-QR-Codes nutzen eine zeilenbasierte Datenstruktur (jede Zeile ist ein Datenfeld) mit fest definierten Feldern:

Wichtig: Jede Zeile entspricht einem Datenfeld. Leere optionale Felder werden als leere Zeilen dargestellt.

PositionFeldPflichtMax. ZeichenBeschreibung
1Service Tag

Ja*

3Immer BCD - identifiziert Banking-QR-Code
2Version

Ja*

3001 oder 002 - EPC-Standard-Version
3Zeichensatz

Ja*

11 für UTF-8 Kodierung nach ISO 8859-1
4Identifikation

Ja*

3SCT - SEPA Credit Transfer
5BIC-Code

Ja*

11Bank-Identifikation
6Empfängername

Ja*

70Name des Zahlungsempfängers
7IBAN

Ja*

34Empfänger-Kontonummer
8BetragNein12Format: EUR + Dezimalzahl (0.01-999999999.99), z.B. EUR125.80
9VerwendungszweckNein4

4-stelliger SEPA Purpose Code - siehe ISO 20022 External Purpose Codes

10ReferenzNein35Für ihre System-Referenz, z.B. <<Rechnungs-/Kundennummer>>
11ZusatzinfoNein70Erweitert das 'Referenz'-Feld, unstrukturiert

Beispiel: EPC-QR-Code für Stromrechnungen

EPC Banking QR-Code Inhalt:

BCD
001
1
SCT
STWBDE33XXX
Stadtwerke Beispiel GmbH
DE89370400440532013000
EUR<<invoice.totalAmount>>

<<contract.contractNumber>>

Die leere vorletzte Zeile entspricht dem hier nicht angegebenen, optionalen SEPA Purpose Code.

Erweiterte EPC-QR-Code-Varianten:

SEPA Purpose Code und erweiterter Verwendungszweck:

BCD
001
1
SCT
STWBDE33XXX
Stadtwerke Beispiel GmbH
DE89370400440532013000
EUR<<invoice.totalAmount>>
ELEC
<<contract.contractNumber>>
Stromrechnung <<invoice.period>>

ELEC ist der spezifische Code für Stromrechnungen.

Mögliche SEPA Purpose Codes für Elektrizitätsversorger:

  • ELEC - Electricity Bill (Stromrechnung)
  • GASB - Gas Bill (Gasrechnung)
  • ENRG - Energies (Allgemeine Energieversorgung)
  • RCPT - Receipt Payment (Quittungszahlung)
  • MSVC - Multiple Service Types (Mehrere Service-Arten)

Konsultieren Sie auch die folgende Liste, um weitere Codes zBsp. für Hardware-Installationen oder Einmalzahlungen zu finden:

Vollständige Liste: ISO 20022 External Purpose Codes

5. Schweizer QR-Rechnung

Die Schweizer QR-Rechnung ist ein nationaler Schweizer Standard für Rechnungen und Einzahlungsscheine. Der kodierte String, das Layout mit Zahlteil und Empfangsschein sowie die Verarbeitungsregeln folgen den Swiss Payment Standards der SIX bzw. der auf paymentstandards.ch gebündelten Dokumentation.

Offizielle Spezifikation und weiterführende Informationen

Technische Details (Felder im QR-String, Layoutvorgaben, Adressformate) entnehmen Sie bitte direkt den aktuellen PDFs der Implementation Guidelines und des Style Guides vom SIX-Downloadbereich – Versionen und Gültigkeiten ändern sich mit den Swiss Payment Standards.

Der Zahlteil der Schweizer QR-Rechnung wird als modularer Baustein in der Fußzeile der .docx‑Stammvorlage eingebunden: technisch handelt es sich dabei um eine Teil‑Vorlage, die Sie mit <<refLookup:template.chQRinvoiceFooter>> an genau dieser Stelle einfügen und die beim Rendern mit der Stammvorlage zusammengeführt wird.

Wir verwenden in diesem Beispiel die unten downloadbare Teil‑Vorlage qrInvoice_module.docx mit dem Identifier chQRinvoiceFooter.

Die Fußzeile nur für die erste Seite sollte für diesen Zahlteil links, rechts und unten keinerlei zusätzlichen Rand aufweisen. Die genaue Umsetzung ist weiter unten beschrieben.

Downloadbare Vorlage zum Einbinden und Anpassen:

qrInvoice_module.docx

QR-Code-Element im Backend

Sowohl Reihenfolge wie auch Art der zeilenweise Ausgabe der kodierten Zahldaten im QR-Code müssen dem Swiss Payment Standards folgen. Auch die Konfiguration der Darstellung des QR-Codes, wie Fehlerkorrekturstufe, Farben und Größen, müssen diesen Standards entsprechen. Hier sehen sie, welche Eingaben sie dringend befolgen sollten.

Im QR-Code-Element im Backend befüllen Sie das Pflichtfeld Text * mit dem QR-Datenkontext. Dadurch wird der QR-Code mit dem dynamischen Objekt befüllt. Standardmäßig setzen Sie ihn aus den Werten unter dem Payload-Objekt QRCH zusammen — zeilenweise und in der Reihenfolge gemäß SIX IG QR-bill v2.4 (PDF). Die dazu passenden Einträge für dieses Text-Feld mit Platzhaltern sind:

<<QRCH.Header.Version>>
<<QRCH.Header.Coding>>
<<QRCH.CdtrInf.IBAN>>
<<QRCH.CdtrInf.Cdtr.AdrTp>>
<<QRCH.CdtrInf.Cdtr.Name>>
<<QRCH.CdtrInf.Cdtr.StrtNmOrAdrLine1>>
<<QRCH.CdtrInf.Cdtr.BldgNbOrAdrLine2>>
<<QRCH.CdtrInf.Cdtr.PstCd>>
<<QRCH.CdtrInf.Cdtr.TwnNm>>
<<QRCH.CdtrInf.Cdtr.Ctry>>
<<QRCH.UltmtCdtr.AdrTp>>
<<QRCH.UltmtCdtr.Name>>
<<QRCH.UltmtCdtr.StrtNmOrAdrLine1>>
<<QRCH.UltmtCdtr.BldgNbOrAdrLine2>>
<<QRCH.UltmtCdtr.PstCd>>
<<QRCH.UltmtCdtr.TwnNm>>
<<QRCH.UltmtCdtr.Ctry>>
<<QRCH.CcyAmt.Amt>>
<<QRCH.CcyAmt.Ccy>>
<<QRCH.UltmtDbtr.AdrTp>>
<<QRCH.UltmtDbtr.Name>>
<<QRCH.UltmtDbtr.StrtNmOrAdrLine1>>
<<QRCH.UltmtDbtr.BldgNbOrAdrLine2>>
<<QRCH.UltmtDbtr.PstCd>>
<<QRCH.UltmtDbtr.TwnNm>>
<<QRCH.UltmtDbtr.Ctry>>
<<QRCH.RmtInf.Tp>>
<<QRCH.RmtInf.Ref>>
<<QRCH.RmtInf.AddInf.Ustrd>>
<<QRCH.RmtInf.AddInf.Trailer>>
<<QRCH.RmtInf.AddInf.StrdBkgInf>>
<<QRCH.AltPmtInf.AltPmt[0]>>
<<QRCH.AltPmtInf.AltPmt[1]>>

Die Platzhalter beziehen sich auf QRCH im JSON-Payload; der gerenderte String ist dann der Inhalt aus ihrem System, den Scanner und Banking-Apps aus dem QR-Code lesen.

Datenobjekt QRCH im Payload

Zur Laufzeit erwartet die Teil‑Vorlage chQRinvoiceFooter die Felder unter dem Payload‑Objekt QRCH. Struktur und Inhalte richten sich nach der Swiss QR-Rechnung in der zum Lieferzeitpunkt gültigen Fassung der Implementation Guidelines; für die Ausrichtung an der aktuellen Norm dient die verlinkte Version 2.4 der Implementation Guidelines (PDF, deutsch).

QRCH ist das konventionsgebundene Objekt für diesen Standard‑Zahlteil im Payload — Abweichungen von der SIX‑Spezifikation oder eine Platzierung des Objekts an einer anderen Stelle im Payload können zu abweichenden Platzhaltern im QR‑String führen.

{
  "QRCH": {
    "specReference": "Schweizer Implementation Guidelines QR-Rechnung, Kap. 4.2.2 (Datenelemente in der QR-Rechnung), Version 2.4",
    "Header": {
      "QRType": "SPC",
      "Version": "0200",
      "Coding": "1"
    },
    "CdtrInf": {
      "IBAN": "CH4431999123000889012",
      "Cdtr": {
        "AdrTp": "S",
        "Name": "Max Muster & Söhne",
        "StrtNmOrAdrLine1": "Musterstrasse",
        "BldgNbOrAdrLine2": "123",
        "PstCd": "8000",
        "TwnNm": "Seldwyla",
        "Ctry": "CH"
      }
    },
    "UltmtCdtr": {
      "AdrTp": "",
      "Name": "",
      "StrtNmOrAdrLine1": "",
      "BldgNbOrAdrLine2": "",
      "PstCd": "",
      "TwnNm": "",
      "Ctry": ""
    },
    "CcyAmt": {
      "Amt": "1949.75",
      "Ccy": "CHF"
    },
    "UltmtDbtr": {
      "AdrTp": "S",
      "Name": "Simon Muster",
      "StrtNmOrAdrLine1": "Musterstrasse",
      "BldgNbOrAdrLine2": "1",
      "PstCd": "8000",
      "TwnNm": "Seldwyla",
      "Ctry": "CH"
    },
    "RmtInf": {
      "Tp": "QRR",
      "Ref": "210000000003139471430009017",
      "AddInf": {
        "Ustrd": "Auftrag vom 15.10.2020",
        "Trailer": "EPD",
        "StrdBkgInf": "//S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30"
      }
    },
    "AltPmtInf": {
      "AltPmt": [
        "eBill/B/simon.muster@example.com",
        ""
      ]
    }
  }
}

Fußzeile nur auf der ersten Seite (Word und LibreOffice)

Der Zahlteil sitzt typischerweise unten auf der ersten Seite. Ziel: In der Fußzeile keinen Rand links, keinen rechts und keinen nach unten (kein sichtbarer Leerraum unterhalb des Zahlteils am Blattunterrand). Die folgenden Schritte beziehen sich auf die Fußzeile bzw. deren Abstand zum unteren Seitenrand — nicht auf die Seitenränder des normalen Fließtexts (Bildschirmbezeichnungen je nach Version leicht abweichend).

Microsoft Word

  1. Erste Seite anders: Fußzeilenbereich öffnen (Doppelklick unten auf die Seite) → unter Kopf- und Fußzeilentools die Option Erste Seite anders aktivieren, damit die erste Seite eine eigene Fußzeile erhält.
  2. Abstand Fußzeile von unten 0 cm: Weiterhin bei Kopf- und Fußzeilentools im Bereich Position den Wert Abstand von unten (Fußzeilenabstand vom unteren Seitenrand) auf 0 cm setzen.
  3. Linker und rechter Rand in der Fußzeile 0 cm: Fußzeile der ersten Seite bearbeiten → den Absatz mit dem Lookup (bzw. die gesamte Fußzeile) markieren → Start → Dialog Absatz (oder Rechtsklick → Absatz) → Einzug Links und Rechts jeweils 0 cm. Damit ändern Sie nur die Formatierung innerhalb der Fußzeile, nicht die Seitenränder des Fließtexts. Steuern Sie bei Bedarf zusätzlich Kopf- und FußzeilentoolsMit Seitenrändern ausrichten, damit der Fußzeileninhalt nicht ungewollt an den Text-Rändern des Abschnitts hängen bleibt.
  4. In die Fußzeile der ersten Seite die Teil‑Vorlage einfügen, z. B. als Textinhalt <<refLookup:template.chQRinvoiceFooter>> (leere Absätze in der Fußzeile vermeiden, damit nichts den Zahlteil nach oben schiebt).

Referenz zur Steuerung von Kopf- und Fußzeilen in Word: Microsoft Support – Kopf- oder Fußzeile bearbeiten.

LibreOffice Writer

  1. Eigene erste Seite: Arbeiten Sie mit der Seitenvorlage Erste Seite und einer Folgevorlage (Standard) oder legen Sie eigene Seitenstile an. Anleitung: LibreOffice Hilfe – Unterschiedliche Kopf- und Fußzeilen definieren.
  2. Fußzeilenränder und Abstand unten: Für den Seitenstil der ersten Seite FormatSeitenvorlage → Register Fußzeile aktivieren. Linker Rand und Rechter Rand beziehen sich hier auf die Fußzeile selbst — setzen Sie beide auf 0 cm, damit der Zahlteil seitlich nicht zusätzlich eingerückt wird. Den Abstand (Abstand zwischen Textkörper und Fußzeile) nur so groß wählen, wie Ihr Layout erfordert. Die 0 cm vom unteren Seitenrand erreichen Sie, indem Sie im Register Seite den unteren Seitenrand so bemessen, dass der Fußzeilenbereich inkl. Zahlteil ohne Leerraum darunter auskommt — ohne dafür die linken und rechten Seitenränder der Seite (für den normalen Text) auf 0 zu stellen.
  3. In die Fußzeile des ersten Seitenstils <<refLookup:template.chQRinvoiceFooter>> einfügen.

Die Teil-Vorlage qrInvoice_module.docx nutzt die volle Seitenbreite von 210 mm, definiert ihre eigenen Ränder und hat eine feste Mindesthöhe von 105 mm.

Nächste Schritte: