Skip to Content
🔐 Closed Beta – Jetzt auf die Warteliste eintragen! Limitierte Plätze für Early Adopters →

Kassenbuch (Cash Register)

💬

Hallo, ich bin Sophie! 👋 Ich führe Sie durch alles, was Sie zum Kassenbuch wissen müssen. Von der lückenlosen Aufzeichnung bis zum automatischen Tagesabschluss - keine Sorge, ich mache es Ihnen so einfach wie möglich!

Kurzfassung (5 Minuten)

⏱️

Keine Zeit für Details? Diese Kurzfassung gibt Ihnen das Wichtigste zum Kassenbuch in 5 Minuten. Für detaillierte Informationen scrollen Sie zu den jeweiligen Abschnitten.

Was ist ein Kassenbuch?

Das Kassenbuch dokumentiert alle Bargeld-Bewegungen Ihres Unternehmens - lückenlos, chronologisch und 7 Jahre lang aufbewahrt.

Wann brauchen Sie ein Kassenbuch?

✅ Kassenbuch Pflicht❌ Optional
Sie nehmen Bargeld ein (z.B. Café, Retail)Nur unbare Zahlungen
Registrierkasse im EinsatzKeine Bargeldgeschäfte
POS-System vorhandenE-Commerce ohne Cash

Die 5 wichtigsten Fakten:

  1. BAO §131: Lückenlose Aufzeichnung - jede Kassenbewegung muss dokumentiert sein
  2. BAO §132: 7-Jahre Aufbewahrung - automatisch mit retention_until Trigger
  3. Tagesabschluss: Täglich Kassenbestand prüfen und dokumentieren
  4. 20-Zeichen Minimum: Audit-konforme Beschreibungen (z.B. “Barverkauf Kuchen Tisch 5”)
  5. Unveränderbar: Nach Buchung sind Einträge immutabel (nur Stornierung möglich)
💡

Sophie’s Quick-Tipp: Das Kassenbuch ist verfügbar ab dem Private-Tarif (€9,99/Mo). Die POS-Integration (HelloCash, ETRON, Ready2Order) benötigt Pro-Tarif (€49,99/Mo).

Schnellnavigation:


Das Kassenbuch ist Ihre zentrale Dokumentation für alle Bargeld-Bewegungen im Unternehmen. Es erfüllt die strengen Anforderungen der österreichischen Bundesabgabenordnung (BAO) und ist unverzichtbar für jeden, der mit Bargeld arbeitet.

Auf einen Blick: Kassenbuch

AspektWertHinweis
Gesetzliche GrundlageBAO §131, §132Lückenlose Aufzeichnung + 7-Jahre Retention
PrinzipChronologisch, lückenlosAuto-increment entry_number
TagesabschlussTäglich Pflichtcash_register_closures Tabelle
Aufbewahrung7 JahreAutomatisch via retention_until Trigger
20-Zeichen MinimumBeschreibungenAudit-Konformität (BAO §132)
BuchhaltGenie TarifAb Private (€9,99/Mo)POS-Integration ab Pro

Was ist ein Kassenbuch?

Das Kassenbuch ist eine chronologische Aufzeichnung aller Bargeldbewegungen in Ihrem Unternehmen. Es dokumentiert:

  • Kasseneingang (Barverkäufe, Einzahlungen)
  • Kassenausgang (Barauszahlungen, Entnahmen)
  • Kassenbestand (Soll- und Ist-Bestand)
  • Tagesabschluss (tägliche Kassendifferenz)
💡

Das Grundprinzip:

Anfangsbestand (z.B. Wechselgeld €200) + Kasseneingang (Barverkäufe des Tages) - Kassenausgang (Barauszahlungen) = Kassenendbestand (gezähltes Bargeld am Abend) Differenz = Ist-Bestand minus Soll-Bestand → Muss dokumentiert werden!

Jede Bewegung erhält eine automatisch fortlaufende Nummer (entry_number) - ohne Lücken!

Wann brauchen Sie ein Kassenbuch?

BrancheBargeldgeschäfteKassenbuch Pflicht?
Retail/EinzelhandelTäglich✅ Ja
GastronomieTäglich✅ Ja
Friseur/SalonHäufig✅ Ja
Dienstleister (EPU)Selten⚠️ Nur für Bargeld-Einnahmen
E-CommerceKeine❌ Nein
SteuerberaterKeine❌ Nein
⚠️

Wichtig: Auch wenn Sie nur gelegentlich Bargeld einnehmen (z.B. 1x im Monat), müssen diese Einnahmen lückenlos dokumentiert werden. Das Kassenbuch ist dann Pflicht!

Gesetzliche Grundlage: BAO §131 & §132

Die Bundesabgabenordnung (BAO) regelt die Kassenbuchführung in Österreich:

BAO §131 - Lückenlose Aufzeichnung:

“Abgabepflichtige haben auf Verlangen der Abgabenbehörde Aufzeichnungen über ihre Einnahmen und Ausgaben zu führen.”

Übersetzt: Alle Bargeld-Bewegungen müssen chronologisch, vollständig und ohne Lücken dokumentiert werden.

BAO §132 - 7-Jahre Aufbewahrung:

“Bücher und Aufzeichnungen sind 7 Jahre aufzubewahren.”

Übersetzt: Kassenbücher, Tagesabschlüsse und Belege müssen 7 Jahre lang unveränderbar archiviert werden.


BAO §131: Lückenlose Aufzeichnung

Das Kernprinzip der Kassenbuchführung ist die lückenlose, chronologische Dokumentation. BuchhaltGenie stellt das durch technische Maßnahmen sicher.

🔑

Die 3 Säulen der Lückenlosigkeit:

  1. Auto-Increment entry_number: Jeder Eintrag erhält eine fortlaufende Nummer (1, 2, 3, …)
  2. Chronologische Reihenfolge: Einträge werden nach Datum + Uhrzeit sortiert
  3. Unveränderbar nach Buchung: Einträge können nicht gelöscht werden (nur storniert)

Was bedeutet “lückenlos”?

Ein Kassenbuch ist lückenlos, wenn:

KriteriumErklärungBuchhaltGenie
Keine fehlenden Nummern1, 2, 3, 4, … (nicht 1, 2, 4)✅ Auto-Increment
Vollständige EinträgeAlle Bargeldbewegungen erfasst✅ Pflichtfelder
Zeitliche OrdnungNach Datum sortiert✅ Automatisch
UnveränderbarNach Buchung fixiert✅ Immutability
20-Zeichen MinimumAussagekräftige Beschreibungen✅ Validierung

Die entry_number (Automatische Nummerierung)

BuchhaltGenie vergibt für jeden Kasseneintrag eine automatisch fortlaufende Nummer:

┌──────────────────────────────────────────────────┐ │ Kassenbuch - Jänner 2026 │ ├────────┬──────────┬────────────────────┬─────────┤ │ Nr. │ Datum │ Beschreibung │ Betrag │ ├────────┼──────────┼────────────────────┼─────────┤ │ 1 │ 02.01. │ Barverkauf Kaffee │ +€3,50 │ │ 2 │ 02.01. │ Barverkauf Kuchen │ +€4,20 │ │ 3 │ 02.01. │ Wechselgeld Bank │ -€100 │ │ 4 │ 03.01. │ Barverkauf Frühst. │ +€12,50 │ │ 5 │ 03.01. │ Privatentnahme │ -€50 │ └────────┴──────────┴────────────────────┴─────────┘

Niemals: 1, 2, 4, 5 (Nummer 3 fehlt = Lücke!)

⚠️

Prüfungsrisiko: Das Finanzamt prüft bei Betriebsprüfungen als erstes die Lückenlosigkeit. Fehlende Nummern können zu Schätzungen führen!

20-Zeichen Minimum für Beschreibungen

Seit der Einführung der Registrierkassenpflicht (RKSV) gilt in Österreich de facto ein 20-Zeichen Minimum für Kassenbuch-Beschreibungen. BuchhaltGenie erzwingt das technisch:

❌ Zu kurz✅ Richtig (≥20 Zeichen)
“Verkauf""Barverkauf Cappuccino Tisch 5"
"Kunde""Barverkauf Haarschnitt Kunde Schmidt"
"Einnahme""Barverkauf Pizza Margherita To-Go"
"Privat""Privatentnahme Lebenshaltung 30.01.”

Warum 20 Zeichen? Audit-Konformität und Nachvollziehbarkeit für das Finanzamt.


Kassenbuch-Einträge (cash_register_entries)

BuchhaltGenie speichert jeden Kasseneintrag in der Tabelle cash_register_entries:

Datenmodell

FeldTypBeschreibungValidierung
entry_numberINTAuto-Increment, lückenlos✅ Datenbank-generiert
transaction_dateDATEDatum der Bewegung✅ Pflicht
transaction_timeTIMEUhrzeit der Bewegung✅ Pflicht
descriptionTEXTBeschreibung (≥20 Zeichen)✅ 20-Char Minimum
amountDECIMALBetrag (positiv/negativ)✅ ≠0
categoryTEXTKasseneingang/Kassenausgang✅ Enum
is_bookedBOOLEANGebucht = immutabel✅ Nach Tagesabschluss
retention_untilDATEBAO §132 (7 Jahre)✅ Auto-Trigger

Unveränderbarkeit nach Buchung

Sobald ein Eintrag gebucht ist (is_booked = true), kann er nicht mehr gelöscht oder geändert werden:

┌─────────────────────────────────────────┐ │ Kasseneintrag #42 │ ├─────────────────────────────────────────┤ │ Datum: 02.01.2026 │ │ Beschreibung: Barverkauf Kaffee To-Go │ │ Betrag: +€3,50 │ │ Status: ✅ Gebucht │ │ │ │ ❌ Löschen nicht möglich │ │ ❌ Bearbeiten nicht möglich │ │ ✅ Stornierung erstellen │ └─────────────────────────────────────────┘

Korrektur nur durch Stornierung:

Eintrag #42: +€3,50 (Barverkauf Kaffee) Eintrag #43: -€3,50 (Stornierung #42 - Irrtum) Eintrag #44: +€4,20 (Barverkauf Kuchen - Korrektur)

Resultat: Eintrag #42 bleibt im Kassenbuch sichtbar, wird aber durch #43 storniert.


Unveränderbarkeit und Retention (BAO-Compliance)

BuchhaltGenie stellt die Unveränderbarkeit und 7-Jahres-Aufbewahrung des Kassenbuches durch technische Maßnahmen sicher. Dies sind zentrale Anforderungen der Bundesabgabenordnung.

Unveränderbarkeit (BAO §131 - Lückenlose Aufzeichnung)

BAO §131 Abs. 1 verlangt lückenlose, chronologische Aufzeichnungen. BuchhaltGenie garantiert dies durch:

1. Immutability nach Buchung

Sobald ein Kasseneintrag oder Tagesabschluss gebucht ist, wird er unveränderbar:

-- Datenbank-Constraint (PostgreSQL) CREATE POLICY "no_updates_after_booking" ON cash_register_entries FOR UPDATE USING (is_booked = FALSE); -- Resultat: UPDATE-Versuche auf gebuchte Einträge werden abgelehnt

Technische Umsetzung:

LayerSchutz
Datenbank (PostgreSQL)Row-Level-Security Policy verhindert UPDATEs
Server ActionsZod-Validation prüft is_booked Status
FrontendBearbeiten-Button nur bei is_booked = false
Audit LogÄnderungsversuche werden protokolliert

2. Auto-Increment entry_number

Die entry_number wird automatisch und lückenlos vergeben:

-- PostgreSQL Sequenz (niemals Lücken!) CREATE SEQUENCE cash_register_entries_entry_number_seq START 1 INCREMENT 1 NO CYCLE; -- Trigger bei INSERT CREATE TRIGGER set_entry_number BEFORE INSERT ON cash_register_entries FOR EACH ROW EXECUTE FUNCTION assign_next_entry_number();

Garantie: Die entry_number ist immer lückenlos (1, 2, 3, 4, …). Selbst bei gelöschten Entwürfen gibt es keine Lücken, da nur gebuchte Einträge eine Nummer erhalten.

3. Stornierung statt Löschen

Nach der Buchung ist Löschen nicht möglich. Korrekturen erfolgen durch Storno-Einträge:

┌──────────────────────────────────────────────────┐ │ Kassenbuch - Stornierung │ ├──────────────────────────────────────────────────┤ │ #42 02.01. Barverkauf Kaffee To-Go +€3,50 │ │ #43 02.01. Storno #42 (Irrtum) -€3,50 │ │ #44 02.01. Barverkauf Kuchen +€4,20 │ │ │ │ Resultat: Eintrag #42 wird durch #43 storniert │ │ Beide bleiben sichtbar (lückenlose Historie!) │ └──────────────────────────────────────────────────┘

Vorteil: Vollständige Audit-Trail - jede Korrektur ist nachvollziehbar.

🔒

Warum Unveränderbarkeit? BAO §131 fordert, dass Kassenbuch-Einträge nicht nachträglich manipuliert werden können. Bei Betriebsprüfungen wäre sonst nicht nachweisbar, ob die Buchungen authentisch sind!

retention_until Column (BAO §132 - 7-Jahre Aufbewahrung)

BAO §132 Abs. 1 schreibt vor: “Bücher und Aufzeichnungen sind 7 Jahre aufzubewahren.”

BuchhaltGenie erfüllt dies durch eine automatische retention_until Spalte mit Datenbank-Trigger:

Automatischer Trigger (7-Jahres-Berechnung)

-- Trigger: Berechnet retention_until automatisch bei INSERT CREATE TRIGGER calculate_retention_date BEFORE INSERT ON cash_register_entries FOR EACH ROW EXECUTE FUNCTION set_retention_until(); -- Funktion: 7 Jahre + Rest des Anschaffungsjahres CREATE FUNCTION set_retention_until() RETURNS TRIGGER AS $$ BEGIN -- Retention = Datum + 7 Jahre + bis Jahresende NEW.retention_until := (DATE_TRUNC('year', NEW.transaction_date) + INTERVAL '7 years' + INTERVAL '1 year - 1 day')::DATE; RETURN NEW; END; $$ LANGUAGE plpgsql;

Beispiel:

Kasseneintrag-DatumBerechnungretention_until
15.03.20262026 + 7 Jahre = 203331.12.2033
10.10.20262026 + 7 Jahre = 203331.12.2033
05.01.20272027 + 7 Jahre = 203431.12.2034

Formel: retention_until = (Transaktionsjahr + 7 Jahre) + bis Jahresende

Gilt für alle Kassenbuch-Tabellen

TabelleRetention
cash_register_entries✅ 7 Jahre (BAO §132)
cash_register_closures✅ 7 Jahre (Tagesabschlüsse)
pos_transactions✅ 7 Jahre (POS-Import)
eigenbelege (als Kassenbuch-Anhang)✅ 7 Jahre

Automatische Cleanup-Jobs:

# Cron-Job läuft täglich um 2:00 Uhr /api/cron/kassenbuch-cleanup # Logik: - Finde Einträge mit retention_until < HEUTE - Soft-Delete (deleted_at setzen, nicht physisch löschen!) - DSGVO: PII-Daten maskieren (Namen, Adressen) - Archiv-Export erstellen (optional)

Automatisch compliant: Sie müssen sich nicht um die 7-Jahres-Frist kümmern! BuchhaltGenie berechnet retention_until automatisch und archiviert Einträge gesetzeskonform.

Compliance-Ansicht im Dashboard

Sie können die Retention-Fristen jederzeit einsehen:

┌──────────────────────────────────────────────────┐ │ Kassenbuch-Archiv (BAO §132) │ ├──────────────────────────────────────────────────┤ │ Eintrag #42 (02.01.2026) │ │ Beschreibung: Barverkauf Kaffee To-Go │ │ Betrag: +€3,50 │ │ Status: ✅ Gebucht (immutabel) │ │ Retention bis: 31.12.2033 (7 Jahre) │ │ Verbleibende Zeit: 7 Jahre 11 Monate │ │ │ │ [Archiv exportieren] │ └──────────────────────────────────────────────────┘

Export-Optionen (vor Ablauf der Frist):

  • PDF: Lesbare Übersicht für physisches Archiv
  • CSV: Tabellenkalkulation
  • DATEV: Steuerberater-kompatibel
  • BMD: BMD-Format

20-Zeichen Minimum (Audit-Konformität)

BAO §132 Abs. 1 fordert ausreichend detaillierte Beschreibungen. In Österreich hat sich ein 20-Zeichen-Minimum etabliert (angelehnt an RKSV-Anforderungen).

BuchhaltGenie erzwingt dies technisch:

// Zod-Validation für Kassenbuch-Einträge const cashRegisterEntrySchema = z.object({ description: z .string() .min(20, { message: "Beschreibung muss mindestens 20 Zeichen lang sein (BAO §132 Audit-Konformität)" }) .max(500), // ... weitere Felder });

Frontend-Feedback (Live-Validation):

┌──────────────────────────────────────────────────┐ │ Kasseneintrag erfassen │ ├──────────────────────────────────────────────────┤ │ Beschreibung: │ │ ┌────────────────────────────────────────────┐ │ │ │ Barverkauf Kaffee To-Go │ │ │ └────────────────────────────────────────────┘ │ │ 23 / 20 Zeichen ✅ │ │ │ │ ⚠️ Zu kurz: "Verkauf" (7/20 Zeichen) │ │ ✅ Richtig: "Barverkauf Cappuccino Tisch 5" │ └──────────────────────────────────────────────────┘

Beispiele (Kassenbuch-Beschreibungen):

❌ Zu kurz (nicht audit-konform)✅ 20+ Zeichen (BAO §132 konform)
“Kaffee” (6 Zeichen)“Barverkauf Cappuccino Tisch 5” (30 Zeichen)
“Verkauf” (7 Zeichen)“Barverkauf Croissant und Kaffee To-Go” (40 Zeichen)
“Kunde” (5 Zeichen)“Barverkauf Mittagsmenü Gast Müller” (38 Zeichen)
“Privat” (6 Zeichen)“Privatentnahme Lebenshaltung 30.01.2026” (45 Zeichen)
⚠️

Finanzamts-Prüfung: Bei Betriebsprüfungen prüfen Prüfer die Nachvollziehbarkeit der Kassenbuch-Einträge. Zu kurze Beschreibungen (“Verkauf”) gelten als nicht nachvollziehbar und können zu Schätzungen führen!

Tagesabschlüsse (cash_register_closures)

Auch Tagesabschlüsse sind unveränderbar und haben retention_until:

-- Tagesabschluss-Tabelle (gleiche Constraints) CREATE TABLE cash_register_closures ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), business_id UUID NOT NULL REFERENCES businesses(id), closure_date DATE NOT NULL, opening_balance DECIMAL(10,2) NOT NULL, total_income DECIMAL(10,2) NOT NULL, total_expenses DECIMAL(10,2) NOT NULL, calculated_balance DECIMAL(10,2) NOT NULL, counted_balance DECIMAL(10,2) NOT NULL, difference DECIMAL(10,2) NOT NULL, difference_reason TEXT CHECK (char_length(difference_reason) >= 20), -- 20-Char Minimum! is_finalized BOOLEAN DEFAULT FALSE, retention_until DATE NOT NULL, -- ← Automatischer Trigger created_at TIMESTAMPTZ DEFAULT NOW(), finalized_at TIMESTAMPTZ ); -- Unveränderbarkeit nach Finalisierung CREATE POLICY "no_updates_after_finalization" ON cash_register_closures FOR UPDATE USING (is_finalized = FALSE);

Tagesabschluss-Beispiel:

┌──────────────────────────────────────────────────┐ │ Tagesabschluss 02.01.2026 │ ├──────────────────────────────────────────────────┤ │ Anfangsbestand: €200,00 │ │ Kasseneingang: +€129,10 │ │ Kassenausgang: -€100,00 │ │ ──────────────────── │ │ Soll-Bestand: €229,10 │ │ Ist-Bestand: €229,10 │ │ Differenz: €0,00 │ │ │ │ Status: ✅ Finalisiert (immutabel) │ │ Retention bis: 31.12.2033 (7 Jahre) │ │ Finalisiert am: 02.01.2026 22:15 UTC │ └──────────────────────────────────────────────────┘

Nach Finalisierung: Tagesabschluss kann nicht mehr geändert werden. Die Differenz-Begründung muss ≥20 Zeichen haben (falls Differenz ≠€0).

Zusammenfassung: BAO-Compliance

BAO-AnforderungTechnische Umsetzung
§131: LückenlosAuto-Increment entry_number, keine Lücken möglich
§131: ChronologischSortierung nach transaction_date + transaction_time
§131: UnveränderbarRLS Policy + is_booked Status + Audit Log
§132: 7-Jahreretention_until Column + automatischer Trigger
§132: Detailliert20-Zeichen Minimum (Zod-Validation)
§132: ArchivierungSoft-Delete + DSGVO-Masking + Export-Option

Tagesabschluss (Daily Closure)

Der Tagesabschluss ist die täglich Pflicht-Dokumentation des Kassenstandes. Sie wird in der Tabelle cash_register_closures gespeichert.

📊

Warum täglich? Bei einer Betriebsprüfung muss nachweisbar sein, dass der Kassenbestand jeden Tag stimmt. Fehlende Tagesabschlüsse können zu Schätzungen führen!

Tagesabschluss-Flow

Tagesbeginn: Anfangsbestand

Vor dem ersten Geschäftsvorfall dokumentieren Sie den Anfangsbestand (meist Wechselgeld):

┌──────────────────────────────────────┐ │ Tagesabschluss 01.01.2026 │ ├──────────────────────────────────────┤ │ Anfangsbestand: €200,00 (Wechselgeld) └──────────────────────────────────────┘

Tagesgeschäft: Einträge erfassen

Alle Kassenbewegungen werden lückenlos erfasst:

+ €3,50 Barverkauf Kaffee + €4,20 Barverkauf Kuchen + €12,50 Barverkauf Frühstück - €100 Wechselgeld Bank + €8,90 Barverkauf Mittagessen

Soll-Bestand: €200 + €29,10 - €100 = €129,10

Tagesende: Ist-Bestand zählen

Sie zählen das tatsächliche Bargeld in der Kasse:

┌──────────────────────────────────────┐ │ Kassenzählung 01.01.2026 │ ├──────────────────────────────────────┤ │ 50 EUR-Scheine: 2x = 100,00 EUR │ │ 20 EUR-Scheine: 1x = 20,00 EUR │ │ 10 EUR-Scheine: 0x = 0,00 EUR │ │ 5 EUR-Scheine: 1x = 5,00 EUR │ │ 2 EUR-Münzen: 2x = 4,00 EUR │ │ 1 EUR-Münzen: 0x = 0,00 EUR │ │ Restmünzen: 0,10 EUR │ │ ─────── │ │ Ist-Bestand: 129,10 EUR │ └──────────────────────────────────────┘

Tagesabschluss: Differenz dokumentieren

┌──────────────────────────────────────┐ │ Tagesabschluss 01.01.2026 │ ├──────────────────────────────────────┤ │ Anfangsbestand: 200,00 EUR │ │ + Kasseneingang: +29,10 EUR │ │ - Kassenausgang: -100,00 EUR │ │ ──────────────────────── │ │ Soll-Bestand: 129,10 EUR │ │ Ist-Bestand: 129,10 EUR │ │ ──────────────────────── │ │ Differenz: 0,00 EUR │ │ │ │ Status: Gebucht (immutabel) │ │ Retention bis: 31.12.2033 (7 Jahre) │ └──────────────────────────────────────┘

Kassendifferenzen behandeln

DifferenzUrsacheBehandlung
€0,00Keine✅ Perfekt - keine Aktion nötig
+€2,00 (Mehr Geld)Zuviel kassiert, Retoure vergessen⚠️ Dokumentieren, als “Kassendifferenz Plus” buchen
-€5,00 (Weniger Geld)Fehler beim Herausgeben⚠️ Dokumentieren, als “Kassendifferenz Minus” buchen
über €10 (groß)Systematischer Fehler❌ Prüfen, ggf. Eigenbeleg erstellen
⚠️

Wichtig: Wiederholte oder große Kassendifferenzen sind ein Prüfungsrisiko! Das Finanzamt kann dahinter Schwarzeinnahmen vermuten. Dokumentieren Sie Differenzen immer transparent.

Tagesabschluss-Datenmodell

Tabelle: cash_register_closures

FeldTypBeschreibung
closure_dateDATEDatum des Abschlusses
opening_balanceDECIMALAnfangsbestand (€)
total_incomeDECIMALSumme Kasseneingang (€)
total_expensesDECIMALSumme Kassenausgang (€)
calculated_balanceDECIMALSoll-Bestand (€)
counted_balanceDECIMALIst-Bestand (€)
differenceDECIMALDifferenz (€)
difference_reasonTEXTBegründung (≥20 Zeichen)
is_finalizedBOOLEANGebucht = immutabel
retention_untilDATE7-Jahre Trigger

Schritt-für-Schritt: Das Kassenbuch

BuchhaltGenie bietet ein vollständig integriertes Kassenbuch-Modul. Hier eine Tour durch alle Funktionen.

Das Kassenbuch-Dashboard

Kassenbuch öffnen

Navigieren Sie zu Buchhaltung → Kassenbuch. Sie sehen:

┌──────────────────────────────────────────────────┐ │ Kassenbuch 02.01.2026 │ ├──────────────────────────────────────────────────┤ │ Aktueller Kassenstand: €129,10 │ │ Letzte Bewegung: 13:45 Uhr │ │ Tagesabschluss: ❌ Noch offen │ │ │ │ [+ Kasseneingang] [- Kassenausgang] │ └──────────────────────────────────────────────────┘

Kasseneingang erfassen

Klicken Sie auf + Kasseneingang:

  1. Datum/Uhrzeit: Automatisch vorausgefüllt
  2. Betrag: z.B. €3,50
  3. Beschreibung: Mindestens 20 Zeichen (z.B. “Barverkauf Cappuccino Tisch 5”)
  4. Kategorie: z.B. “Umsatzerlöse 20%”
  5. Optional: Beleg hochladen (Kassenbon-Scan)
  6. Speichern → Eintrag erhält automatisch nächste entry_number
💡

Sophie’s Tipp: Bei Bargeld-Einnahmen ohne Kassenbon können Sie einen Eigenbeleg erstellen. BuchhaltGenie generiert automatisch eine BAO-konforme Vorlage!

Kassenausgang erfassen

Klicken Sie auf - Kassenausgang:

  1. Datum/Uhrzeit: Automatisch
  2. Betrag: z.B. €100,00
  3. Beschreibung: z.B. “Wechselgeld Bank Erste €100 Scheine”
  4. Kategorie: z.B. “Geldtransit”, “Privatentnahme”
  5. Speichern

Typische Kassenausgänge:

  • Wechselgeld holen
  • Privatentnahmen
  • Barauszahlungen an Lieferanten
  • Trinkgeld-Auszahlungen

Tagesabschluss erstellen

Am Ende des Geschäftstages:

  1. Klicken Sie auf Tagesabschluss erstellen
  2. BuchhaltGenie berechnet automatisch:
    • Anfangsbestand (von gestern)
    • Summe Kasseneingang (heute)
    • Summe Kassenausgang (heute)
    • Soll-Bestand (Berechnung)
  3. Sie geben ein:
    • Ist-Bestand (gezähltes Bargeld)
  4. BuchhaltGenie zeigt:
    • Differenz (Soll - Ist)
  5. Bei Differenz ≠€0: Begründung eingeben (≥20 Zeichen)
  6. Abschluss buchen → Alle Einträge werden immutabel
⚠️

Wichtig: Nach dem Tagesabschluss können Einträge des Tages nicht mehr gelöscht werden! Korrekturen nur durch Stornierung am Folgetag.

Historie einsehen

Im Kassenbuch-Archiv sehen Sie:

  • Alle Einträge (entry_number, Datum, Beschreibung, Betrag)
  • Alle Tagesabschlüsse (7 Jahre zurück)
  • Filter: Nach Monat, Kategorie, Betrag
  • Export: CSV, PDF, DATEV für Steuerberater

POS-Integration

BuchhaltGenie integriert 3 führende österreichische POS-Anbieter für automatische Kassenbuch-Synchronisation.

🏪

Verfügbar ab: Pro-Tarif (€49,99/Mo) | Feature Flag: pos_integration

Unterstützte POS-Systeme

POS-AnbieterWebhookConnectorStatus
HelloCash/api/webhooks/pos/hellocash/hellocash-connector.ts✅ Vollständig
ETRON/api/webhooks/pos/etron/etron-connector.ts✅ Vollständig
Ready2Order/api/webhooks/pos/ready2order/ready2order-connector.ts✅ Vollständig

Wie funktioniert die Integration?

POS-System verbinden

  1. Gehen Sie zu Einstellungen → Integrationen → POS-Systeme
  2. Wählen Sie Ihren Anbieter (HelloCash, ETRON, Ready2Order)
  3. Folgen Sie dem Setup-Wizard:
    • API-Schlüssel eingeben
    • Webhook-URL kopieren (wird automatisch generiert)
    • Bei POS-Anbieter hinterlegen
  4. Verbindung testen

Automatische Synchronisation

Sobald verbunden:

  • Echtzeitimport: Jede Kassenbewegung wird sofort importiert
  • Auto-Kategorisierung: Sophie ordnet Einträge dem richtigen EKR-Konto zu
  • Lückenlos: entry_number wird automatisch vergeben
  • Tagesabschluss-Sync: Tagesabschlüsse werden übernommen
┌──────────────────────────────────────────────────┐ │ POS-Import: HelloCash │ ├──────────────────────────────────────────────────┤ │ 13:24 Barverkauf Espresso +€2,80 │ │ → Auto: Umsatzerlöse 20% (EKR 4000) │ │ │ │ 13:26 Barverkauf Käsekuchen +€4,50 │ │ → Auto: Umsatzerlöse 10% (EKR 4100) │ │ │ │ 13:28 Barverkauf Mittagsmenü +€12,90 │ │ → Auto: Umsatzerlöse 10% (EKR 4100) │ └──────────────────────────────────────────────────┘

Duplikaterkennung

BuchhaltGenie erkennt Duplikate automatisch (90% Threshold):

  • Gleicher Betrag ± €0,10
  • Gleiche Uhrzeit ± 2 Minuten
  • Gleiche Beschreibung (Ähnlichkeit ≥90%)

→ Verhindert doppelte Buchungen bei manueller Erfassung + POS-Import

Anomalie-Erkennung

Sophie warnt Sie bei:

  • Ungewöhnlich hohe Beträge (>€500 Barverkauf)
  • Negative Kassenbestände (nicht erlaubt!)
  • Große Tagesabschluss-Differenzen (>€20)
  • Fehlende Tagesabschlüsse (>2 Tage)

POS-Tabellen (Datenbank)

TabelleZweck
pos_connectionsVerbindungsdaten (API-Keys, Webhook-URLs)
pos_transactionsImportierte POS-Transaktionen
pos_sync_historySync-Protokoll (Zeitstempel, Fehler)

Compliance und Sicherheit

AspektUmsetzung
BAO §131/§132Lückenlose Import-Protokollierung
UStG §11USt-Sätze automatisch erkannt
SEC-003Rate Limiting (100 req/15min)
SEC-005Webhook Signature Verification
SEC-006Zod-Validation für alle POS-Daten
DSGVOPII-Masking bei Kundennamen

Integration mit E/A-Rechnung

Das Kassenbuch ist vollständig in die E/A-Rechnung integriert:

Automatische Buchungen

Kasseneintrag: ┌──────────────────────────────────────┐ │ Barverkauf Cappuccino Tisch 5 │ │ Betrag: €3,50 (inkl. 20% USt) │ └──────────────────────────────────────┘ Erzeugt automatisch: ┌──────────────────────────────────────┐ │ E/A-Rechnung: │ │ + Einnahme: €3,50 (Zufluss-Prinzip) │ │ + USt-Konto: €0,58 (20%) │ │ + Kategorie: Umsatzerlöse 20% │ └──────────────────────────────────────┘

Kassenbuch im E/A-Dashboard

Im E/A-Dashboard sehen Sie:

┌──────────────────────────────────────────────────┐ │ Einnahmen-Übersicht Jänner 2026 │ ├──────────────────────────────────────────────────┤ │ Umsatzerlöse (gesamt): €12.450,00 │ │ davon Bargeld (Kassenbuch): €3.280,00 (26%) │ │ davon Banküberweisung: €9.170,00 (74%) │ │ │ │ → Kassenbuch zeigt 78 Barverkäufe │ └──────────────────────────────────────────────────┘

Export für Steuerberater

Kassenbuch-Exporte enthalten:

  • CSV: Alle Einträge mit entry_number, Datum, Beschreibung, Betrag
  • DATEV: BAO-konforme Kassenbuch-Datei
  • BMD: BMD-kompatibles Format
  • PDF: Lesbare Übersicht für Archiv

Eigenbelege

Wenn Sie Bargeld einnehmen ohne externen Beleg (z.B. Trinkgeld, kleiner Privatverkauf), können Sie einen Eigenbeleg erstellen.

📋

Was ist ein Eigenbeleg? Ein selbst erstellter Beleg, der einen fehlenden Fremdbeleg ersetzt. In Österreich erlaubt nach BAO §132, aber nur in Ausnahmefällen!

Wann sind Eigenbelege erlaubt?

✅ Erlaubt❌ Nicht erlaubt
TrinkgeldRegelmäßige Barverkäufe
Parkuhr (ohne Bon)Größere Beträge (>€100)
Kleinbeträge unter €10 ohne BelegLieferantenrechnungen
Privatverkauf an KollegenSystematischer Ersatz

Eigenbeleg in BuchhaltGenie erstellen

  1. Kasseneintrag erfassen wie gewohnt
  2. Bei “Beleg hochladen”: Eigenbeleg generieren
  3. BuchhaltGenie erstellt automatisch:
┌──────────────────────────────────────┐ │ EIGENBELEG │ ├──────────────────────────────────────┤ │ Datum: 02.01.2026 │ │ Betrag: €5,00 │ │ Zweck: Trinkgeld Kellner Service │ │ Hochzeit Tisch 12 │ │ │ │ Grund: Kein Fremdbeleg vorhanden │ │ │ │ Unterschrift: ________________ │ │ (Max Mustermann, Geschäftsführer) │ └──────────────────────────────────────┘
  1. PDF herunterladen, ausdrucken, unterschreiben
  2. Physisch archivieren (7 Jahre!)
⚠️

Vorsicht: Übermäßiger Gebrauch von Eigenbelegen kann bei Betriebsprüfungen zu Problemen führen! Das Finanzamt kann dahinter Schwarzeinnahmen vermuten.

Mehr zu Eigenbelegen: Siehe Eigenbelege Dokumentation


BAO §132: 7-Jahre Aufbewahrung

BuchhaltGenie archiviert Kassenbuch-Daten automatisch BAO-konform:

Automatischer retention_until Trigger

Jeder Kasseneintrag und Tagesabschluss erhält automatisch ein retention_until Datum:

-- Automatischer Trigger bei Erstellung: retention_until = (Kasseneintrag-Datum) + 7 Jahre + bis Jahresende -- Beispiel: Eintrag vom 15.03.2026 → retention_until = 31.12.2033 (7 Jahre + Rest 2026)

Was wird archiviert?

DatentypTabelleAufbewahrung
Kasseneinträgecash_register_entries7 Jahre
Tagesabschlüssecash_register_closures7 Jahre
POS-Transaktionenpos_transactions7 Jahre
Eigenbelegedocuments (PDF)7 Jahre
Audit-Logsaudit_logs7 Jahre

Unveränderbare Archivierung

BuchhaltGenie stellt sicher:

  1. Zeitstempel: Jeder Eintrag erhält unveränderbare created_at und updated_at Timestamps
  2. Immutability: Nach is_booked = true keine Änderungen mehr möglich
  3. Audit-Trail: Alle Änderungsversuche werden protokolliert
  4. DSGVO-konform: Verschlüsselte Speicherung (AES-256)
┌──────────────────────────────────────────────────┐ │ Kasseneintrag #42 (Archiviert) │ ├──────────────────────────────────────────────────┤ │ Datum: 02.01.2026 13:24:15 UTC │ │ Beschreibung: Barverkauf Kaffee To-Go │ │ Betrag: +€3,50 │ │ Status: ✅ Gebucht (immutabel) │ │ Retention bis: 31.12.2033 │ │ │ │ Änderungen: 0 (keine erlaubt) │ │ Audit-Log: 1 Eintrag (Erstellung) │ │ Signatur: SHA-256 Hash verifiziert ✅ │ └──────────────────────────────────────────────────┘

Automatisches Cleanup

Nach Ablauf der 7-Jahres-Frist:

  • Soft-Delete: Einträge werden markiert als deleted_at (nicht physisch gelöscht)
  • DSGVO-Compliance: PII-Daten werden maskiert
  • Export-Möglichkeit: Vor Soft-Delete kann Archiv-Export erstellt werden

Cron-Job: /api/cron/kassenbuch-cleanup/ (läuft täglich um 2:00 Uhr)


Häufige Fragen (FAQ)

Grundlagen

Brauche ich ein Kassenbuch, wenn ich nur gelegentlich Bargeld einnehme?

Ja! Auch wenn Sie nur 1x im Monat Bargeld einnehmen, müssen Sie das dokumentieren. Das Kassenbuch muss alle Bargeldbewegungen lückenlos erfassen - unabhängig von der Häufigkeit.

Was ist der Unterschied zwischen Kassenbuch und E/A-Rechnung?

Das Kassenbuch dokumentiert nur Bargeldbewegungen. Die E/A-Rechnung erfasst alle Einnahmen/Ausgaben (Bank + Bar). Das Kassenbuch ist Teil der E/A-Rechnung und fließt automatisch ein.

Muss ich auch Tagesabschlüsse machen, wenn ich keine Registrierkasse habe?

Ja! Auch ohne Registrierkasse müssen Sie täglich den Kassenbestand dokumentieren. Der Tagesabschluss ist unabhängig von der RKSV-Pflicht.

Praktische Fragen

Was passiert, wenn ich einen Kasseneintrag versehentlich gelöscht habe?

Sobald ein Eintrag gebucht ist, kann er nicht gelöscht werden. Wenn Sie ihn vor der Buchung löschen, entsteht eine Lücke in der entry_number. BuchhaltGenie verhindert das technisch - Sie können nur stornieren.

Wie gehe ich mit Kassendifferenzen um?

Dokumentieren Sie Differenzen transparent im Tagesabschluss:

  • Kleine Differenzen (unter €5): Als “Kassendifferenz Plus/Minus” buchen
  • Große Differenzen (>€10): Ursache suchen, ggf. Eigenbeleg
  • Wiederholte Differenzen: Prozess prüfen, Schulung

Verschweigen Sie Differenzen niemals - das Finanzamt sieht es als Indiz für Schwarzeinnahmen!

Kann ich das Kassenbuch nachträglich ausfüllen?

Grundsätzlich sollte das Kassenbuch zeitnah geführt werden. Nachträgliches Ausfüllen ist erlaubt, aber bei Betriebsprüfungen erklärungsbedürftig. BuchhaltGenie protokolliert die Zeitstempel - Einträge mit Datum 01.01. aber created_at 15.01. fallen auf.

POS-Integration

Brauche ich eine POS-Integration, wenn ich manuell buche?

Nein, die POS-Integration ist optional. Sie können das Kassenbuch auch vollständig manuell führen. Die Integration spart aber Zeit und verhindert Fehler (automatische Kategorisierung, Duplikaterkennung).

Was passiert, wenn die POS-Verbindung abbricht?

Alle POS-Transaktionen werden bei Ihrem Anbieter gespeichert. Sobald die Verbindung wieder steht, synchronisiert BuchhaltGenie automatisch alle fehlenden Einträge. Die Lückenlosigkeit bleibt gewahrt.


BuchhaltGenie Ressourcen

Offizielle Quellen

InstitutionLinkInhalt
BMFwww.bmf.gv.at Bundesministerium für Finanzen
WKOwww.wko.at Kassenbuch-Leitfaden
RISwww.ris.bka.gv.at Rechtsinformationssystem

Gesetzestexte

GesetzParagraphInhalt
BAO§131Aufzeichnungspflichten (lückenlos)
BAO§1327-Jahre Aufbewahrung
UStG§11Rechnungsanforderungen
RKSVGesamtpaketRegistrierkassensicherheitsverordnung

⚠️

Rechtlicher Hinweis: Diese Dokumentation dient der allgemeinen Information und ersetzt keine individuelle Steuerberatung. Bei komplexen Fragen zum Kassenbuch wenden Sie sich bitte an Ihren Steuerberater oder Ihr zuständiges Finanzamt. Stand: Jänner 2026.


Weitere Ressourcen: