Zum Inhalt springen

Funktionen · Verkaufen & Kassieren

Kasse & Zahlungen

Das ist das Herz des Systems: der Verkaufsvorgang von der ersten Artikelbuchung bis zum gedruckten Beleg. Hier wird ein Warenkorb zusammengestellt, bezahlt — bar, mit Karte am EC-Terminal, per Gutschein, auf Rechnung oder gemischt — und der Beleg erzeugt und ausgegeben. Dazu gehören auch die täglichen Routinen drumherum: Wechselgeld zählen, Ausgaben aus der Kasse buchen, Belege nachdrucken oder stornieren und am Abend den Tagesabschluss machen. Was hier passiert, ist gleichzeitig der fiskalisch relevante Vorgang — jeder Verkauf wird von der TSE signiert (siehe Fiskal Deutschland).

30 geprüfte Funktionen Funktionsstand 07.09.2026
DiKAS-Direktverkauf mit Getränken im Warenkorb

Artikel buchen und den Bon direkt im Blick behalten.

Echte Oberfläche

Kasse & Zahlungen in DiKAS

Keine Stockmotive: Die Aufnahmen stammen aus den reproduzierbaren DiKAS-Demos und zeigen die jeweilige Funktion im Produkt.

DiKAS-Zahldialog mit mehreren Zahlungsarten
Bar, Karte und weitere Zahlungsarten in einem Dialog.
DiKAS-Kassensturz mit Soll- und Ist-Bestand
Die Schicht mit nachvollziehbarem Kassensturz abschließen.

Vollständiger Überblick

Was DiKAS in diesem Bereich kann

Alle folgenden Punkte stammen aus dem gegen den Programmcode geprüften Funktionskatalog.

Externe Preisprüfung (Kundenkondition)

Ist sie eingeschaltet (BackendConfig.CheckPriceEnabled + URL), schickt die Kasse den Korb bei jeder Änderung an einen fremden Preisdienst und übernimmt dessen Preise. Seit 07.09.2026 sind drei Zustände unterscheidbar (Befund T3): priceCheckEnabled=false = abgeschaltet · enabled=true, available=true = geprüft · enabled=true, available=false = AUSGEFALLEN (PRICE_CHECK_UNAVAILABLE). Im Ausfall übernimmt die Kasse die Antwort nicht mehr — der Korb bleibt auf den Preisen aus dem Artikelstamm und neben der Summe steht „Preisprüfung aus". Vorher waren „abgeschaltet" und „ausgefallen" Zeichen für Zeichen dieselbe Antwort: die Kasse buchte den Listenpreis statt der Kundenkondition, ohne Hinweis

Warenkorb / Kassieren

Artikel buchen, Mengen und Preise ändern, Rabatte geben, Positionen splitten; schnelle wiederholte Touch-Tipps auf denselben Artikel werden einzeln und ohne Doppelbuchung übernommen

Anleitung öffnen

Zahlung abschließen

Zahlungsvorgang mit einer oder mehreren Zahlungsarten, Wechselgeld und Trinkgeld; Geldfelder werden an der HTTP-Grenze centgenau normalisiert. Bon-Stapel und Zahlung verwenden denselben stabilen, auch nach Reload wiederverwendeten Vorgangsschlüssel; das Backend persistiert Fingerprint, deterministische Dokument-ID und Abschlussmarker, sodass auch ein Prozessneustart keinen zweiten Beleg erzeugt

Anleitung öffnen

Nachbuchungen nach erfolgreichem Kassenbeleg

Werkstatt-Zahlung und Lieferauftrag werden vor dem API-Aufruf in einem lokalen Journal mit stabilem Idempotency-Key gesichert. Fehler, Reload und Offline-Zeit verlieren den Schritt nicht; offene Nachbuchungen sind in der Kasse sichtbar und werden einzeln wiederholt. Bei 100 Klärfällen sperrt der Client weitere Einträge sichtbar, statt alte zu verdrängen

Trinkgeld am EC-Terminal übernehmen

Gibt der Gast am ZVT-Terminal Trinkgeld ein, belastet das Terminal mehr als angefordert. Die Kasse übernimmt die Differenz als Trinkgeld und hebt das Zahlungs-Bein auf den tatsächlich belasteten Betrag an. Gilt seit 19.08.2026 auf allen vier Terminal-Wegen — der Disco-Ausgang war bis dahin ohne

Anleitung öffnen

Allergen-Sofortauskunft (Info-Tab)

Langdruck auf eine Artikelkachel (Kasse UND Tischbuchung) öffnet den Options-Dialog; dessen Info-Tab (seit 21.08.2026 immer sichtbar) zeigt Groß Allergene (Code + Klartext aus den Betriebs-Stammdaten), Zusatzstoffe, Beschreibung und die lazy nachgeladene Zubereitung — für die Frage des Gastes an die Bedienung. Auch „keine Allergene hinterlegt" ist eine Antwort, der Tab fehlt nie

Altersfreigabe an der Kasse (Jugendschutz)

Artikel mit Mindestalter (Article.MinAge) lösen vor dem Kassieren eine Bestätigung aus; ohne quittiertes Alter lehnt der Server mit AGE_VERIFICATION_REQUIRED ab. Kein Lizenzmodul — gilt auch ohne Disco (Tabak, Vape, Shisha, Spirituosen). Seit 20.08.2026 prüft auch der Tisch-Zahlweg, aber nur auf dem Direktverkaufs-Tisch (); die Kasse fragt seither auch für FREMDE Bons nach, die nie quittiert wurden

Leergut-Rücknahme an der Kasse

Pfand zurückgeben: Schalter „Leergut zurückgeben" über dem Artikelraster (nur sichtbar, wenn der Betrieb Pfandartikel führt); ein Tipp auf einen Pfandartikel bucht dann eine Position mit negativer Menge (isDepositReturn). Ergebnis: TSE-signierter Beleg mit negativem Betrag (Auszahlung) bzw. Verrechnung auf einem gemischten Bon, und das Leergutlager wird gegengebucht. Ohne das Kennzeichen bleibt „Menge > 0" für den gesamten Direktverkauf bestehen

Automatische Pfandposition auf Bon und Beleg

Ein Artikel mit hinterlegtem Pfand legt beim Bonieren eine EIGENE Pfandposition bei — sichtbar, mit eigenem Steuersatz, nie als Aufschlag am Hauptartikel. Gilt an allen vier Wegen (Direktverkauf, Tisch einzeln, Tisch im Stapel, Online-/QR-Bestellung); welcher Pfandartikel und welcher Betrag, entscheidet eine gemeinsame Stelle

Rabatt- und Preisrecht an der Kasse (serverseitig)

Seit 05.09.2026 prüft der Server das Kassenrecht AllowRabatt (oder eine Rolle aus RoleBundles.AdminRoles) bei negativem Positionspreis und bei Rabattartikeln (ArticleExtraOption.Rabatt); ohne Recht kommt PERMISSION_DENIED. Den Steuersatz nimmt der Server vom Client gar nicht mehr an (DirectSaleItem.OverrideTaxRate trägt [JsonIgnore]) — er ist ausschließlich ein serverseitiger Schnappschuss (Disco-Eintrittstarif, Liefergebühr). Delegationen des Hauses mit negativem Preis (Disco-Guthabenauszahlung, Ticket-Erstattung) markieren sich mit ServerDelegated (ebenfalls [JsonIgnore], Wächtertest). Ein Preis unter dem Artikelpreis bleibt bewusst ungeprüft (Owner-Entscheid 06.09.2026: „bewusst offen“)

Barzahlung / Kassenlade

Bargeld-Bein mit Wechselgeld (CashGiven/ChangeGiven), Ladenöffnung über die Zahlart-Konfiguration (CashDrawerMode), Bestandsführung über die Schicht

Anleitung öffnen

Bargeldautomat (Cashmatic/VNE)

Barzahlung am Geldwechsler: der Automat nimmt das Bargeld an und gibt Wechselgeld; Start, Abbruch und Status aus der Kasse, Verbindungstest nur für Admins

EC-/Kartenzahlung (ZVT)

Kartenzahlung über ein per ZVT angebundenes Terminal, inkl. Storno (Reversal) und Kassenschnitt. Belegzahlungen frieren Terminal-ID und Transaktionsreferenz ein; ein Beleg-Storno erzeugt den Fiskal-Gegenbeleg erst nach erfolgreichem Provider-Reversal und scheitert ohne eindeutige Referenz geschlossen

Anleitung öffnen

Stripe Terminal

Kartenzahlung über Stripe-Terminal (Tap to Pay)

Softpay (Tap to Pay auf dem Android-Gerät)

Kartenzahlung ohne Terminal — das Kassen-Tablet selbst liest die Karte über das Softpay-SDK. Zwei Betriebsarten: der eingebettete Server der MAUI-App bedient sie direkt, im Client-Modus (Angular-Kasse gegen einen entfernten Server) kassiert der SoftpayBridgeHandler auf DIESEM Gerät — der Server hat weder NFC noch SDK. Der Doppelbelastungsschutz ist prozesslokal (Dictionary je Terminal in SoftpayCardService): der Bridge-Handler MUSS Singleton bleiben, eine Instanz je Aufruf macht ihn wirkungslos, und ein Android-Prozessende verliert den Merker — die protokollierte RequestId ist dann die einzige Spur. Fehlerschlüssel 1300 (TRANSACTION_INCOMPLETE) ist KEINE Ablehnung, sondern „Auftrag draußen, Ausgang unbekannt" — als Ablehnung gelesen umgeht er genau diesen Schutz. Einrichtung: ConfigureSoftpay.Caller.Call mit der IStore-Überladung, nicht mit einem String — ein String wird als ACQUIRER_STORE_ID gedeutet und liefert mit Softpays eigener IStore.Id ein STORE_NOT_FOUND

Kartengutschrift (EC-Refund)

Erstattung auf die Karte als eigener negativer, TSE-signierter Beleg — frei nur am ZVT-Terminal; Stripe und SumUp erstatten auf die Originalzahlung

Anleitung öffnen

Belege / Kassenbelege

Verkaufsbelege serverseitig durchsuchen und seitenweise vollständig abrufen, nachdrucken, als PDF/QR-Link bereitstellen und per Mail senden; Suche umfasst Nummer (R000123), Tisch, Personal und Kunde. Die reine Zahlart-Umbuchung ist auf nebenwirkungsfreie Typen beschränkt und braucht Storno-Recht

Anleitung öffnen

Storno & Wiedereröffnen

Beleg stornieren (TSE-signierter Gegenbeleg mit Bestandsrückbuchung, Storno-Level-Recht) oder wiedereröffnen. Kartenbelege werden vorher am ursprünglichen Terminal reversiert; fehlende Referenz, fehlendes Recht oder mehrere Kartenbeine führen ohne Fiskalmutation in einen sichtbaren Klärfall

Anleitung öffnen

Schicht öffnen/schließen (Kassensturz)

Schicht mit Anfangsbestand öffnen; beim Schließen Ist-Bestand zählen, Differenz sehen, TSE-signiert abschließen und Zählprotokoll drucken

Anleitung öffnen

Tagesabschluss (Z-Bon)

Tagesumsatz abrechnen und Abschlussbeleg TSE-signiert erzeugen; mit Vorschau, Liste offener Tage und nächtlichem Auto-Abschluss durch den Server selbst (AutoDayCloseJob, stündlich, je Mandant — seit 18.08.2026 KEIN externer Cron mehr); im Kassenbuch je Abschluss CSV-Export der Bonpositionen (Excel-kompatibel) mit Preisen, MwSt-Satz und Buchungsdaten

Anleitung öffnen

Ausgaben / Kassenbuch

Entnahmen und Einlagen aus der Kasse buchen und belegen; die Beleg-Erfassung (Kassenbuch UND Kasse, pos-spending) warnt bei einem unplausiblen KI-erkannten Betrag (Faktor-1000-Verdacht) statt ihn automatisch zu übernehmen, und meldet einen Ausfall der Erkennung separat von „nichts erkannt" (Audit Task 8)

Anleitung öffnen

Gutschein-Import

Bestandsgutscheine aus einem Altsystem übernehmen

Lieferung an der Kasse

Lieferauftrag aus dem Kassenvorgang heraus

Münzstände Bargeldautomat

Ist-/Soll-Bestände je Münz- und Scheinart des angeschlossenen Bargeldautomaten anzeigen

Arbeitsplatz-Auswahl

Gerät einer Kasse/einem Arbeitsplatz zuordnen

Rappenrundung bei Barzahlung (CH-MVP T4)

Ist OperationalConfig.CashRoundingUnit > 0 (CH: 0.05), wird nur der Bar-Zahlbetrag kaufmännisch auf die Münzeinheit gerundet (12.32 → 12.30, 12.33 → 12.35, 12.38 → 12.40; negativ spiegelbildlich). Die Belegsumme (GrandTotal, Steuer) bleibt exakt; die Differenz steht als Receipt.CashRoundingDifference am Beleg, als Zeile „Rundung" auf Textbon UND Grafik-Bon und als DayClose.RoundingDifference im Tagesabschluss/Z-Bon (Σ Zahlungen = Σ Brutto + Σ Rundung). Bei Mischzahlung wird nur der Bar-Rest nach den unbaren Beinen gerundet. Gerundete Wege: Direktverkauf, Tischzahlung (Bar-Bein). Bewusst exakt: Karte, QR-Selbstzahler, Online-Bestellung (Tests RappenrundungTests). Die Kasse zeigt den gerundeten Bar-Betrag (Bar-Knopf, Zahldialog „Bar zu zahlen", „Passend", Rückgeld, Bargeld-Gerät), schickt aber den exakten Rest — der Server rundet verbindlich (CashRounding.Apply). Storno trägt die Differenz gespiegelt. Die Web-Belegansicht (Admin → Belege, Detail) zeigt die Zeile „Rundung +0.02 CHF" im Zahlungsblock, nur wenn ≠ 0 (Nachzug CH-2). Default 0 = keine Rundung (DE/AT/ES)

Oft gesucht

Begriffe rund um Kasse & Zahlungen

AltersfreigabeJugendschutzMindestalterBonKassenbonBelegStornoRetoureUmtauschWiedereröffnenZ-BonTagesabschlussSchichtKassensturzKassenstandAbrechnungTrinkgeldEC-Terminal