Eigenes Branding (White-Label)
Wozu dient das?#
Die Funktion für eigenes Branding (White-Label) ermöglicht es Gastronomiebetrieben, Franchise-Gruppen und Fachhändlern, das optische Erscheinungsbild der Kassensoftware an ihre eigene Unternehmensidentität (Corporate Identity) anzupassen. Sie können den öffentlichen Markennamen festlegen, ein hochauflösendes Firmenlogo hochladen sowie primäre Marken- und Akzentfarben definieren, die nahtlos auf Kassen-Terminals, Belegausdrucken, Kundenportalen und E-Mails angewendet werden.
Rollen#
- Betriebsinhaber / Administrator: Vollständiger Zugriff auf die Einrichtung von Markenname, Unternehmenslogo, Farbkonzepten und Franchise-Vererbung.
- Servicekraft / Kassenpersonal: Keine Konfigurationsrechte. Erlebt die angepasste Markenoberfläche im täglichen Kassenbetrieb.
Die Kontrastregel im Detail (Betriebssicherheit statt reine Optik)#
Um Betriebsausfälle durch unlesbare Oberflächen zu verhindern, prüft das Kassensystem jede eingegebene Markenfarbe automatisch nach dem internationalen Standard WCAG 2.1 AA auf ein relatives Kontrastverhältnis von mindestens 3,0:1 gegenüber einem hellen Hintergrund (#FFFFFF).
Beispiele für abgewiesene und akzeptierte Farbkombinationen#
| Farbcode | Farbbezeichnung | Kontrastverhältnis zu #FFFFFF | System-Entscheidung | Grund |
|---|---|---|---|---|
#FFFFFF | Reinweiß | 1,00:1 | ❌ Abgewiesen | Völlig unsichtbar (Weiß auf Weiß) |
#FFFF00 | Reingelb | 1,07:1 | ❌ Abgewiesen | Extrem schwer lesbar |
#F0F0F0 | Hellgrau | 1,12:1 | ❌ Abgewiesen | Unterschreitet Mindestkontrast 3,0:1 |
#2563EB | Signalblau | 4,60:1 | ✅ Akzeptiert | Erfüllt WCAG 2.1 AA |
#DC2626 | Karminrot | 4,50:1 | ✅ Akzeptiert | Gut lesbarer Akzent |
#0F172A | Dunkelmarine | 15,80:1 | ✅ Akzeptiert | Exzellenter Kontrast |
Logo-Anforderungen & Automatisierte Sicherheitsprüfung#
Jedes hochgeladene Firmenlogo durchläuft vor der Speicherung automatisierte Validierungsschritte:
- Erlaubte Dateiformate: PNG (
.png), JPEG (.jpg,.jpeg), WebP (.webp), SVG (.svg). - Maximale Dateigröße: Genau 2 MB (2.097.152 Bytes). Größere Dateien werden sofort abgelehnt.
- Magic-Byte- & Header-Prüfung: Das System prüft die ersten Bytes der Datei. Das bloße Umbenennen einer Textdatei (z. B.
foto.txtinfoto.png) wird erkannt und verweigert. - SVG-Sicherheitsbereinigung: SVG-Vektordateien werden auf eingebettetes Schadcode-Verhalten analysiert. Dateien mit
<script>-Tags, Event-Handlern (onload=,onclick=), JavaScript-URIs (javascript:) oder Frames (<iframe>,<embed>) werden aus Sicherheitsgründen abgewiesen.
Vererbungshierarchie bei Franchise-Gruppen#
Bei Betrieben, die einer Franchise-Gruppe oder einem Filialnetz angehören, löst das Kassensystem das Branding über eine dreistufige Logik auf:
- Mandanten-Branding (Höchste Priorität): Wurde für den einzelnen Standort explizit ein Branding konfiguriert, gilt dieses primär.
- Franchise-Gruppen-Vererbung (Mittlere Priorität): Fehlt ein eigenes Standort-Branding, erbt der Betrieb Markenname, Logo und Farbcodes automatisch von der übergeordneten Franchise-Gruppe (
is_inherited: true). - System-Standard (Fallback): Ist weder auf Standort- noch auf Franchise-Ebene ein Branding hinterlegt, greift das System auf die Vorgaben zurück (
brand_name: "Kassensystem",primary_color: "#1E293B",accent_color: "#2563EB",is_default: true).
Unveränderbarkeit fiskalischer Beleginhalte (§ 146a AO & KassenSichV)#
Voraussetzungen#
- Ein Benutzerkonto mit Administratorrechten.
- Der Backoffice-Bereich Eigenes Branding (White-Label). Sie öffnen ihn im Backoffice über den Menüpunkt Branding (nur Administrator).
- Eine vorbereitete Logodatei (max. 2 MB) und die Hex-Farbcodes Ihres Betriebs.
Bildschirm für Bildschirm#
1. Backoffice-Bereich Eigenes Branding (White-Label)#
Oben stehen der Titel Eigenes Branding (White-Label) und die Zeile Passen Sie Markennamen, Farben und Firmenlogo für Terminals, Belege und Gästeseiten an. Darunter zeigt eine Plakette, woher das Erscheinungsbild kommt: Betriebseigenes Branding, Geerbt von Franchise-Gruppe oder System-Standard.
- 1 Die Plakette für die Herkunft des Erscheinungsbilds.
- 2 Die Karte Erscheinungsbild mit Markenname, Primärfarbe und Akzentfarbe. Jede Farbe hat einen Farbwähler und ein Hex-Feld.
- 3 Der Hinweis Kontrast-Prüfung nach WCAG 2.1 AA (Mindestens 3.0:1) sichert die Lesbarkeit im Stoßgeschäft.
- 4 Branding speichern prüft den Kontrast und speichert. Die Kasse meldet Branding gespeichert. Ist eine Farbe zu hell, erscheint stattdessen oben ein roter Hinweis Zu geringer Kontrast … und nichts wird gespeichert.
- 5 Die Karte Firmenlogo hochladen mit der Fläche Zum Hochladen klicken. Darunter stehen die erlaubten Formate. Ein vorhandenes Logo erscheint darüber unter Aktuelles Logo; nach dem Hochladen meldet die Kasse Logo hochgeladen.
- 6 Die Live-Vorschau mit den drei Umschaltern Kassen-Terminal, Beleg / Bon und Gästeansicht (Self-Order). Sie zeigt sofort, wie Name, Farben und Logo wirken, noch bevor Sie speichern.
2. POS-Terminal & Kassenoberfläche#
- Header-Leiste: Zeigt den konfigurierten Markennamen oben links sowie Akzentfarben auf aktiven Bedienelementen und Navigationsreitern.
- Anmeldebildschirm: Präsentiert das Firmenlogo zentriert über der PIN-Eingabe.
3. Kassenbeleg (Thermal & PDF)#
- Thermal-Ausdruck (ESC/POS): Druckt das Schwarz-Weiß-Logo im nicht-fiskalischen Kopfbereich über dem Betriebsnamen.
- PDF- & HTML-Beleg: Stellt das hochauflösende Firmenlogo mit farbiger Randlinie im Kopfbereich dar, während der untere Belegteil den grauen TSE-Fiskalblock zeigt.
4. Gästeschnittstellen (Feedback & Self-Order)#
- Online-Bestellung & Self-Order-Kiosk: Stellt den Header im primären Farbton dar und hebt Schaltflächen in der Akzentfarbe hervor.
Schritt für Schritt#
Pfad A: Eigenes Branding für einen Einzelbetrieb einrichten#
- Melden Sie sich als Administrator im Backoffice an.
- Öffnen Sie den Bereich Eigenes Branding (White-Label).
- Geben Sie unter Markenname Ihren gewünschten Betriebsnamen ein.
- Tragen Sie unter Primärfarbe Ihren Hex-Code ein (z. B.
#0F172A). - Tragen Sie unter Akzentfarbe Ihren Hex-Code ein (z. B.
#DC2626). - Tippen Sie auf Branding speichern. Das System prüft den Kontrast. Bei Erfolg erscheint Branding gespeichert.
- Tippen Sie unter Firmenlogo hochladen auf die Fläche Zum Hochladen klicken und wählen Sie Ihre Logodatei. Das Logo wird sofort hochgeladen und geprüft; bei Erfolg erscheint Logo hochgeladen.
Pfad B: Branding auf Franchise-Ebene vererben oder überschreiben#
- Konfigurieren Sie das Branding in der Hauptverwaltung der Franchise-Gruppe.
- Für Filialen, die dieses Branding übernehmen sollen, lassen Sie die Felder im Mandanten-Branding leer. Die Plakette zeigt Geerbt von Franchise-Gruppe.
- Wünscht eine Filiale ein eigenes Logo oder abweichende Farben, tragen Sie die Daten direkt im Mandanten-Branding ein. Das Standort-Branding überschreibt die Franchise-Vorgabe.
Pfad C: Branding auf System-Standard zurücksetzen#
Die Maske hat weder eine Schaltfläche zum Zurücksetzen noch zum Entfernen des Logos. Solange weder für den Betrieb noch für die Franchise-Gruppe ein Branding hinterlegt ist, gilt der System-Standard (Kassensystem, #1E293B, #2563EB), und die Plakette zeigt System-Standard.
Was passiert im Hintergrund#
Beim Speichern des Logos speichert der Dienst branding_service.py die Datei unter uploads/branding/{tenant_id}_{uuid}.png auf dem Server. Gleichzeitig wird der relative Pfad in der Datenbank unter BrandingSettings abgelegt. Bei jedem Aufruf der Kassenoberfläche oder Generierung eines Belegs fragt das System die Schnittstelle GET /api/v1/tenant-settings/branding ab und wendet die aufgelösten Farben und Pfade dynamisch an.
Häufige Probleme (Original-Fehlermeldungen aus dem Backend)#
1. Meldung: Color #FFFFFF fails legibility check against light background (contrast ratio 1.00:1 is below minimum 3.00:1).#
- Ursache: Die gewählte Primär- oder Akzentfarbe ist zu hell (z. B. Weiß oder Gelb) und unterschreitet das Mindest-Kontrastverhältnis von 3,0:1 gegenüber hellem Hintergrund.
- Lösung: Wählen Sie einen dunkleren Farbton der Markenfarbe, um die Lesbarkeit im Kassenbetrieb zu gewährleisten.
2. Meldung: Invalid hex color format: {color_code}. Expected format #RRGGBB.#
- Ursache: Der eingegebene Farbcode entspricht nicht dem 6-stelligen Hex-Format (z. B.
#FFFstatt#FFFFFFoder fehlendes#-Zeichen). - Lösung: Geben Sie den Farbcode exakt im Format
#RRGGBBan (z. B.#0F172A).
3. Meldung: Logo file size ({bytes}) exceeds maximum permitted limit of 2097152 bytes (2MB).#
- Ursache: Die hochgeladene Logodatei ist größer als das Serverlimit von 2 Megabyte.
- Lösung: Komprimieren Sie das Bild mit einem Bildbearbeitungsprogramm vor dem Hochladen.
4. Meldung: Unsupported logo format: content-type '{content_type}', extension '{ext}'. Allowed: PNG, JPEG, WEBP, SVG.#
- Ursache: Es wurde ein nicht unterstütztes Dateiformat gewählt (z. B. BMP, GIF oder TIFF).
- Lösung: Konvertieren Sie das Logo in ein unterstütztes Format (PNG, JPEG, WebP oder SVG).
5. Meldung: Logo file headers do not match claimed image format.#
- Ursache: Die Dateiendung passt nicht zum tatsächlichen Inhalt der Datei (z. B. eine umbenannte Text- oder PDF-Datei).
- Lösung: Exportieren Sie das Logo korrekt aus Ihrer Grafiksoftware als echte PNG- oder JPEG-Datei.
6. Meldung: SVG logo contains disallowed executable script or event handler payload.#
- Ursache: Die hochgeladene SVG-Vektorgrafik enthält potenziell schädliche Skripte (
<script>oder JavaScript-Attribute). - Lösung: Bereinigen Sie die SVG-Datei in Ihrem Vektoreditor (z. B. Illustrator oder Inkscape) durch Umwandlung aller Objekte in reine Pfade und Entfernung interaktiver Skripte.
7. Meldung: Invalid SVG XML structure: {e}#
- Ursache: Die SVG-Datei ist beschädigt oder enthält fehlerhaften XML-Code.
- Lösung: Öffnen Sie das Bild in einem Grafikprogramm und speichern Sie es erneut als korrekte SVG-Datei ab.
8. Meldung: Logo file not found#
- Ursache: Die im System hinterlegte Bilddatei wurde auf dem Server gelöscht oder verschoben.
- Lösung: Laden Sie das Firmenlogo im Backoffice erneut hoch.
9. Meldung: Uploaded logo file is empty.#
- Ursache: Die hochgeladene Datei hat eine Dateigröße von 0 Bytes.
- Lösung: Überprüfen Sie die Datei auf Ihrem Computer und wiederholen Sie den Upload.
Grenzen#
- Keine freie Beleg-Umgestaltung: Es können keine benutzerdefinierten Schriftarten oder eigenen CSS-Layouts in den Kassenbon eingefügt werden.
- Fiskalblock bleibt unveränderbar: Der gesetzliche TSE-Block am Ende jedes Belegs kann weder farblich angepasst noch ausgeblendet werden.
- Keine dynamischen Animationen: Als Logo werden nur statische Bilddateien akzeptiert; animierte WebP- oder SVG-Animationen werden nicht unterstützt.
Dieses Kapitel gehört zum Merkuron-Handbuch für Inhaber und Servicepersonal.