Zur Startseite Live-Demo

Kartenzahlung am Terminal

Wozu dient das?#

Das Modul für Kartenzahlung regelt die bargeldlose Abrechnung von Bestellungen über ein angebundenes ZVT-Bezahlterminal. Es steuert den Zahlungseinzug direkt aus dem Zahlungsfenster der Kasse, erfasst Trinkgelder vor der Autorisierung, druckt Zahlungs- und Trinkgeldzeilen auf dem Kassenbeleg und unterstützt Stornos sowie Erstattungen über das Terminal.

Kartenzahlung per Smartphone gibt es nicht. Merkuron spricht mit einem physischen Terminal über das ZVT-Netzwerkprotokoll (im Testbetrieb über ein simuliertes Terminal). Eine Abrechnung direkt über das NFC-Feld eines Smartphones (SoftPOS) ist nicht gebaut, und es gibt dafür weder einen Konnektor noch einen Vertrag. Kontaktlose Zahlungen per Smartphone (Apple Pay, Google Pay) oder Smartwatch hält der Gast wie eine Karte an das physische Bezahlterminal.

Rollen#

  • Inhaber / Administrator: Auswahl des Acquirers, Abschluss des Händlervertrags, Anschluss und Einrichtung des Terminals, Durchführung von Kartenzahlungen, Stornos, Erstattungen, Klärung unklarer Transaktionen und Tagesabschluss am Terminal.
  • Manager / Schichtleiter: Durchführung von Kartenzahlungen, Stornos, Erstattungen, Klärung unklarer Transaktionen und Tagesabschluss am Terminal.
  • Servicekraft / Kellner: Durchführung von Kartenzahlungen und Teilzahlungen an der Kasse. Stornierung von Kartenzahlungen bis maximal 20,00 € oder mit Manager-PIN-Freigabe; Rückerstattungen nur mit Manager-PIN-Freigabe.

Vorbereitungs-Checkliste für Betriebsinhaber (Vor dem Go-Live)#

Bevor Sie echte Kartenzahlungen in Ihrem Betrieb anbieten können, müssen Sie folgende Schritte durchlaufen:

  1. Die girocard-Frage stellen (Wichtigste Frage an jeden Anbieter):
    • In Deutschland ist die girocard (ehemals EC-Karte) die führende Debitkarte. Ein Terminal, das ausschließlich internationale Kreditkartennetze (Visa/Mastercard) unterstützt, wird von vielen deutschen Gästen abgelehnt.
    • Verlangen Sie vom Zahlungsanbieter schriftlich, ob und in welchem Tarif die girocard-Akzeptanz unterstützt wird.
  2. Händlervertrag (Merchant Agreement) abschließen:
    • Schließen Sie einen Händlervertrag mit einem Acquirer ab. Das Kassensystem ist eine Software-Schicht und verarbeitet selbst kein Geld.
  3. Terminal beschaffen und im Netzwerk anschließen:
    • Merkuron kommuniziert über das standardisierte ZVT-Protokoll über TCP/IP im lokalen Netzwerk. Klären Sie mit dem Anbieter, dass das Gerät ZVT über LAN oder WLAN unterstützt, und notieren Sie sich die IP-Adresse und Terminal-ID.

Technische Begriffsklärung: Die Transaktionszustände#

Damit Sie Berichte und Fehlerprotokolle verstehen, nutzt das Kassensystem folgende eindeutige Transaktionszustände:

  • pending: Die Zahlung wurde im Kassensystem vorbereitet, aber noch nicht an das Terminal übermittelt.
  • authorizing: Das Terminal kommuniziert mit dem Zahlungsnetzwerk der Bank.
  • authorized: Der Betrag wurde auf dem Kundenkonto reserviert, aber noch nicht final eingezogen.
  • captured: Die Zahlung wurde erfolgreich eingezogen und dem Beleg zugeordnet.
  • voided: Die Autorisierung wurde vor dem Einzug storniert; es fand keine Abbuchung statt.
  • refunded: Eine bereits abgebuchte Kartenzahlung wurde dem Kunden über das Terminal gutgeschrieben.
  • partially_refunded: Ein Teilbetrag einer Kartenzahlung wurde zurückerstattet.
  • declined: Die Zahlung wurde von der Bank des Kunden abgelehnt (z. B. Deckung fehlt, PIN falsch) oder am Terminal abgebrochen.
  • timed_out: Das Terminal hat innerhalb des Zeitfensters keine Bestätigung geliefert (Ergebnis unklar).
  • reversed: Eine Transaktion wurde am Terminal storniert (bei Vollstorno am selben Tag vor dem Tagesabschluss oder bei automatischer Stornierung nach Verbindungsabbruch).

Voraussetzungen#

  • Eine geöffnete Schicht des Bedieners im Kassensystem (→ Kapitel 12).
  • Eine ausgewählte aktive Bestellung mit offenem Restbetrag (→ Kapitel 13 und → Kapitel 14).
  • Ein einsatzbereites, im lokalen Netzwerk erreichbares ZVT-Kartenterminal.

Bildschirm für Bildschirm#

1. Abrechnungsmaske (PaymentWorkspace)#

  • Kopfbereich: Zeigt die Tischbezeichnung sowie den zu zahlenden Gesamtbetrag Gesamtbetrag (total_amount).
  • Rechnungszusammenfassung: Listet Artikel, Zwischensumme Zwischensumme (subtotal), Rabatt Rabatt (discount), Steuer Steuer (tax), bereits geleistete Zahlungen Bereits bezahlt (already_paid) und den noch offenen Restbetrag Verbleibend (remaining) auf.
  • Zahlungsarten:
    • Karte (payment_method_card): Startet die Kartenzahlung und öffnet das Dialogfenster Kartenterminal (card_terminal).
    • Bar (payment_method_cash): Öffnet die Barzahlungsmaske (→ Kapitel 14).
  • Trinkgeld-Erfassung:
    • Schaltfläche Trinkgeld hinzufügen (add_tip) mit den Schnellauswahltasten Kein (tip_none), 5%, 10%, 15%, €1, €2, €5 und €10.
    • Ein gewähltes Trinkgeld wird in der Zusammenfassung als Inklusive Trinkgeld (included_tip) ausgewiesen.
  • Rechnungsaufteilung: Schaltfläche {{session}} aufteilen (split_session) zur Aufteilung des Rechnungsbetrags auf mehrere Personen.

2. Dialogfenster Kartenterminal (CardTerminalDialog)#

Dialog Kartenterminal in drei Zuständen Drei Zustände des Dialogs Kartenterminal nebeneinander: Karte bitte vorhalten mit Hinweis Fenster nicht schließen; Zahlung angenommen mit Kartenart, letzten vier Ziffern und Fertig; Ergebnis unklar mit Terminal abfragen. 48,60 inkl. 4,86 Trinkgeld Karte bitte vorhalten Fenster nicht schließen 48,60 inkl. 4,86 Trinkgeld Zahlung angenommen girocard •••• 4242 Fertig 48,60 inkl. 4,86 Trinkgeld ? Ergebnis unklar Das Terminal hat nicht geantwortet. Ob die Karte belastet wurde, ist offen — bitte nachfragen, nicht raten. Terminal abfragen 1 2 3 4 5 6 7
Dialog Kartenterminal in drei Zuständen: Karte bitte vorhalten, Zahlung angenommen, Ergebnis unklar
  • 1 Der an das Terminal übermittelte Betrag, groß, in jedem Zustand oben.
  • 2 Bei erfasstem Trinkgeld der Hinweis inkl. … Trinkgeld.
  • 3 Links: Karte bitte vorhalten mit dem Hinweis Fenster nicht schließen, solange das Terminal arbeitet.
  • 4 Mitte: Zahlung angenommen mit Kartenart und den letzten vier Ziffern.
  • 5 Fertig schließt den Dialog und führt zur Belegansicht.
  • 6 Rechts: Ergebnis unklar mit der Erläuterung, dass ein Nachfragen nötig ist.
  • 7 Terminal abfragen fragt das Terminal nach dem Ausgang der letzten Buchung.
  • Betragsanzeige: Große Anzeige des an das Terminal übermittelten Gesamtbetrags (Rechnungsanteil plus Trinkgeld).
  • Trinkgeldanzeige: Wurde an der Kasse Trinkgeld ausgewählt, erscheint direkt unter dem Betrag der Hinweis inkl. {{tip}} Trinkgeld (card_includes_tip).
  • Ablauf- und Statusanzeigen:
    • Karte bitte vorhalten (card_present_the_card) mit dem Hinweis Fenster nicht schließen (card_do_not_close): Fordert den Gast auf, die Karte vorzuhalten oder einzustecken.
    • Zahlung wird abgeschlossen (card_completing): Terminal hat autorisiert; Kasse schließt den Einzug ab.
    • Zahlung angenommen (card_approved): Autorisierung erfolgreich; zeigt die erkannte Kartenart (z. B. girocard, Visa, Mastercard) und die letzten vier Ziffern der Karte an. Schaltfläche Fertig (done).
    • Karte abgelehnt (card_declined): Zahlung wurde von der Bank abgelehnt oder am Terminal abgebrochen; zeigt den Grund an. Schaltflächen Erneut versuchen (card_try_again) und Abbrechen (cancel).
    • Ergebnis unklar (card_outcome_unknown): Verbindungsabbruch während der Transaktion. Erläuterung: Das Terminal hat nicht geantwortet. Ob die Karte belastet wurde, ist offen — bitte nachfragen, nicht raten. (card_outcome_unknown_explain).
    • Terminal abfragen (card_ask_the_terminal): Fragt den Status der letzten Buchung am Terminal ab (Terminal wird abgefragt / card_asking_the_terminal).
    • Zahlung storniert (card_reversed): Erscheint, wenn das Terminal nach unklarem Ausgang die Stornierung bestätigt hat: Das Terminal konnte den Vorgang nicht bestätigen. Die Zahlung wurde storniert, es wurde nichts abgebucht. (card_reversed_explain).

3. Geräteverwaltung (Devices)#

  • Hauptansicht: Menüpunkt Geräte (devices). Listet alle am Standort registrierten Geräte mit Terminal-Name (terminal_name), Typ (type), MAC (mac) und Zuletzt gesehen (last_seen).
  • Registrierung: Schaltfläche Station registrieren (register_station).

Schritt für Schritt#

Pfad A: Kartenzahlung am Terminal durchführen#

  1. Öffnen Sie die offene Bestellung und tippen Sie auf Abrechnen / Bon erstellen.
  2. Prüfen Sie die Positionen und den Betrag unter Gesamtbetrag (total_amount).
  3. Möchte der Gast Trinkgeld geben, tippen Sie unter Trinkgeld hinzufügen (add_tip) auf den gewünschten Wert (z. B. 10% oder €2). Das Trinkgeld wird in der Zusammenfassung unter Inklusive Trinkgeld (included_tip) eingerechnet.
  4. Tippen Sie unter Zahlungsart (payment_method) auf Karte (payment_method_card).
  5. Das Dialogfenster Kartenterminal (card_terminal) öffnet sich. Es zeigt die Gesamtsumme und bei erfasstem Trinkgeld den Hinweis inkl. {{tip}} Trinkgeld (card_includes_tip).
  6. Das Fenster meldet Karte bitte vorhalten (card_present_the_card) und Fenster nicht schließen (card_do_not_close). Der Gast hält seine Karte an das Terminal oder steckt sie ein und gibt bei Bedarf die PIN ein.
  7. Nach der Freigabe wechselt die Anzeige über Zahlung wird abgeschlossen (card_completing) zu Zahlung angenommen (card_approved).
  8. Tippen Sie auf Fertig (done). Das System schließt den Dialog und leitet zur Belegansicht weiter.

Auch über den KI-Assistenten: Eine Kartenzahlung kann ebenso per Chat angestoßen werden ("Tisch 4 zahlt mit Karte"); sie läuft über dasselbe Terminal. Siehe 30c. KI-Assistent, Hauptpfad D.

Pfad B: Teilzahlung per Karte (Split Payment)#

  1. Tippen Sie im Zahlungsfenster auf {{session}} aufteilen (split_session) und wählen Sie die Anzahl der zahlenden Personen.
  2. Möchte der Gast für seinen Anteil Trinkgeld geben, wählen Sie dieses unter Trinkgeld hinzufügen (add_tip) aus. Das Trinkgeld gilt nur für diese Teilzahlung und wird danach automatisch zurückgesetzt.
  3. Tippen Sie auf Karte (payment_method_card) und wickeln Sie die Zahlung am Terminal ab.
  4. Nach erfolgreicher Teilzahlung weist die Kasse den gezahlten Teil unter Bereits bezahlt (already_paid) und den verbleibenden Betrag unter Verbleibend (remaining) aus.
  5. Kassieren Sie die weiteren Anteile bar oder mit einer weiteren Karte ab.

Pfad C: Zahlungsabbruch, Ablehnung oder Verbindungsunterbrechung handhaben#

  1. Ablehnung durch die Bank oder Abbruch durch den Gast:
    • Das Fenster zeigt Karte abgelehnt (card_declined) und nennt die Ursache (z. B. Falsche PIN oder Abbruch durch Karteninhaber).
    • Tippen Sie auf Erneut versuchen (card_try_again), um die Autorisierung erneut zu starten, oder auf Abbrechen (cancel), um zur Kasse zurückzukehren und bar abzurechnen.
  2. Verbindungsabbruch während der Zahlung (Timeout / Unklarer Ausgang):
    • Reagiert das Terminal während der Datenübertragung nicht mehr, schließt die Kasse das Fenster nicht eigenmächtig. Sie zeigt Ergebnis unklar (card_outcome_unknown) und den Hinweis Das Terminal hat nicht geantwortet. Ob die Karte belastet wurde, ist offen — bitte nachfragen, nicht raten. (card_outcome_unknown_explain).
    • Tippen Sie auf Terminal abfragen (card_ask_the_terminal). Die Kasse fragt das Terminal über das Netzwerk nach dem letzten Beleg ab (Terminal wird abgefragt / card_asking_the_terminal).
    • Hat das Terminal die Zahlung erfolgreich verbucht: Das System übernimmt die Belegdaten und schließt die Zahlung als Zahlung angenommen (card_approved) ab.
    • War die Buchung am Terminal nicht erfolgreich: Das System leitet eine Stornierung ein. Bestätigt das Terminal die Stornierung, meldet das Fenster Zahlung storniert (card_reversed) mit der Erläuterung Das Terminal konnte den Vorgang nicht bestätigen. Die Zahlung wurde storniert, es wurde nichts abgebucht. (card_reversed_explain).
    • Kann das Terminal weiterhin nicht erreicht werden: Der Vorgang bleibt im Status timed_out gesichert. Er wird nicht still als Erfolg oder Misserfolg verbucht. Im abendlichen Tagesabschluss am Terminal (→ Kapitel 35a) wird die Transaktion als Differenz ausgewiesen und kann geprüft werden.

Pfad D: Kartenzahlung stornieren oder erstatten (Storno vs. Gutschrift)#

Muss eine bereits bezahlte Kartenzahlung rückabgewickelt werden, unterscheidet das System automatisch zwischen zwei technischen Vorgängen:

  1. Vollstorno am selben Tag (vor dem Tagesabschluss am Terminal):
    • Befindet sich die Kartenzahlung noch im laufenden Abrechnungszeitraum (vor dem Tagesabschluss am Bezahlterminal) und wird der volle Betrag storniert, sendet das System einen Stornobefehl mit der Belegnummer (Beleg-Nr.) der ursprünglichen Kartenzahlung an das Terminal.
    • Vorteil für den Gast: Der Gast muss seine Karte nicht erneut vorhalten. Das Terminal storniert die Buchung direkt anhand der Belegnummer im internen Speicher.
    • Der Transaktionsstatus wechselt auf reversed.
  2. Gutschrift / Erstattung (nach dem Tagesabschluss am Terminal oder bei Teilerstattung):
    • Wurde am Bezahlterminal bereits der Tagesabschluss (Kassenschnitt) durchgeführt oder soll nur ein Teilbetrag erstattet werden, ist ein Belegstorno am Terminal technisch ausgeschlossen.
    • Das System führt stattdessen eine Erstattung (Gutschrift) über das Terminal aus.
    • Wichtig: Für eine Gutschrift muss der Gast seine Karte erneut an das Terminal halten oder einstecken.
    • Der Transaktionsstatus wechselt auf partially_refunded bzw. refunded.
  3. Aufteilung bei Zahlungen mit Trinkgeld:
    • Wurde bei der ursprünglichen Zahlung Trinkgeld gegeben, mindert eine Erstattung zuerst den steuerbaren Rechnungsanteil (mit negativer Gegenbuchung an der TSE) und erst danach das Trinkgeld.
  4. Fehlgeschlagene Erstattung:
    • Antwortet das Terminal bei einem Storno oder einer Erstattung nicht oder schlägt der Vorgang fehl, wird in der Kasse keine Buchung vorgenommen. Das System bricht mit einem Hinweis ab, damit Kasse und Terminal nicht voneinander abweichen.

Was passiert im Hintergrund#

  • Direkte Steuerung durch die Kasse: Die Kasse übermittelt den Betrag inklusive Trinkgeld an das Bezahlterminal. Das Terminal verlangt keine manuelle Betragseingabe und startet keine eigene Trinkgeldabfrage.
  • TSE-Signierung erst nach Terminalbestätigung: Die fiskalische Signierung (§ 146a AO) und das Abschließen der Bestellung finden erst statt, nachdem das Terminal den erfolgreichen Einzug (captured) bestätigt hat. Bei Ablehnung oder Abbruch bleibt die fiskalische Transaktion unberührt.
  • Zahlungszeilen auf dem Beleg: Auf dem gedruckten und digitalen Beleg weist das System die Zahlungsart transparent aus:
    • Bei Zahlung mit Trinkgeld: Summe Rechnung, Trinkgeld (nicht steuerbar) und Gesamt.
    • Zahlungszeile: Zahlung Karte mit Angabe der Kartenart (z. B. Visa, girocard), der maskierten Kartennummer (z. B. ****1234) und der Terminal-Belegnummer (Beleg-Nr. 0815).
    • Wurde die Rechnung aufgeteilt und enthält dieser Teil Trinkgeld: davon Trinkgeld.
  • Keine sensiblen Kartendaten: Das Kassensystem speichert zu keinem Zeitpunkt Kartennummern (PAN), Ablaufdaten oder Prüfziffern (CVV). In der Datenbank verbleiben lediglich nicht-PCI-relevante Metadaten wie die letzten vier Ziffern (last_4), der Kartenanbieter (card_scheme), die Autorisierungsreferenz und die Belegnummer des Terminals.

Häufige Probleme#

1. Meldung: Nach dem Kassenschnitt bitte erstatten#

  • Ursache: Es wurde versucht, eine Buchung über die Stornofunktion zurückzusetzen, für die am Terminal bereits der Tagesabschluss (Kassenschnitt) gelaufen ist.
  • Lösung: Nach dem Tagesabschluss kann das Terminal eine Buchung nicht mehr per Belegnummer löschen. Führen Sie stattdessen eine Gutschrift / Erstattung durch (Pfad D, Fall 2). Der Gast muss dazu die Karte erneut vorhalten.

2. Meldung: Storno outcome unknown — check the terminal before retrying#

  • Ursache: Das Terminal hat beim Versuch eines Belegstornos keine Rückmeldung gegeben.
  • Lösung: Prüfen Sie das Display und den Belegdrucker des physischen Terminals. Wurde die Buchung dort storniert, darf kein erneuter Stornobefehl gesendet werden.

3. Meldung: Erstattung outcome unknown — check the terminal before retrying#

  • Ursache: Das Terminal hat bei einer Kartengutschrift nicht rechtzeitig geantwortet.
  • Lösung: Kontrollieren Sie den Ausdruck des Terminals, ob eine Gutschrift ausgedruckt wurde.

4. Meldung: Cannot void captured/refunded transaction; use refund instead#

  • Ursache: Eine bereits final verbuchte oder bereits erstattete Transaktion sollte über die einfache Vor-Ort-Stornierung aufgehoben werden.
  • Lösung: Nutzen Sie für bereits abgeschlossene Zahlungen die reguläre Rückerstattungsfunktion.

5. Meldung: Refund amount {amount_cents} cents exceeds remaining captured amount {remaining} cents#

  • Ursache: Der gewünschte Erstattungsbetrag ist höher als der ursprünglich mit dieser Kartenzahlung eingezogene Betrag abzüglich früherer Teilerstattungen.
  • Lösung: Korrigieren Sie den Erstattungsbetrag auf maximal den noch offenen Betrag der Transaktion.

6. Meldung: Payment amount_cents must be greater than or equal to tip_cents#

  • Ursache: Der Gesamtbetrag der Zahlung ist kleiner als das angegebene Trinkgeld.
  • Lösung: Stellen Sie sicher, dass der Zahlungsbetrag mindestens die Summe aus Rechnungsanteil und Trinkgeld umfasst.

Grenzen#

  • Keine Smartphone-Kartenzahlung (SoftPOS): Ein direktes Einlesen von Zahlungskarten über das NFC-Feld eines Handys oder Tablets wird nicht unterstützt.
  • Keine Offline-Kartenzahlung: Das Terminal benötigt für jede Zahlung eine aktive Netzwerkverbindung zum Zahlungsnetzwerk. Fällt das Internet aus, können keine Kartenzahlungen durchgeführt werden; es muss bar kassiert werden (→ Kapitel 14).
  • Trinkgelderfassung ausschließlich an der Kasse: Das Trinkgeld wird vor dem Start der Transaktion an der Kasse erfasst. Das Terminal bietet keine nachträgliche Trinkgeldabfrage auf dem Gerätedisplay an.

Dieses Kapitel gehört zum Merkuron-Handbuch für Inhaber und Servicepersonal.