Erst ausprobieren
{{ testPeriodLabel }} ohne Risiko: Artikel und Kassen anlegen, mit dem Team ausprobieren, in Ruhe entscheiden.
Kasse
Kasse fürs Vereinsfest
Die Kasse für Vereinsfest, Weihnachtsmarkt oder Thekendienst: Dein Team verkauft vor Ort, auch wenn das Netz am Zeltplatz schwach ist. Am Ende steht ein Abschlussbericht, den Kassenprüfer und Finanzamt ohne Rückfragen nachvollziehen.
Artikel, Wechselgeld, Verkauf und Kassenzählung gehören für uns in einen einzigen, nachvollziehbaren Ablauf.
Der Preis deckt die laufende Weiterentwicklung der App, die Live-Auswertung während der Veranstaltung und die Weiterleitung von Bons an eine Ausgabe- oder Abholstation. Kein Abo-Zwang: Ihr zahlt pro Event oder einmal im Jahr, genau wie es zu eurem Vereinskalender passt. Lizenzen verlängern sich nicht automatisch. Gemäß § 19 UStG (Kleinunternehmer) wird keine Umsatzsteuer berechnet.
{{ testPeriodLabel }} ohne Risiko: Artikel und Kassen anlegen, mit dem Team ausprobieren, in Ruhe entscheiden.
Für ein einzelnes Fest: Kasse, Live-Sync, Kassenzählung und Export - einmal zahlen, einmal nutzen.
Zahlungspflichtig buchen (PayPal)Für Vereine mit mehreren Festen im Jahr: einmal zahlen, jede Veranstaltung damit abrechnen.
Zahlungspflichtig buchen (PayPal)* Endpreis. Gemäß § 19 UStG (Kleinunternehmer) wird keine Umsatzsteuer berechnet.
Vor dem Fest werden Artikel, Preise und Kassen-Geräte in Ruhe angelegt. Während der Veranstaltung verkauft euer Team offlinefähig - auch im Vereinsheim oder auf der Wiese ohne WLAN. Danach werden Kassenzählung, Differenzen und Kosten bewertet und als PDF oder Excel exportiert.
Weniger Zettelwirtschaft, ein Abschluss, der sich vor der Mitgliederversammlung erklären lässt.
Kein Schulungsaufwand: Kasse anschalten, verkaufen, fertig.
Ein Gast bestellt Bratwurst und Bier an der Kasse. Die Bratwurst erscheint sofort auf dem Bildschirm am Grill, das Bier gleichzeitig an der Theke - jede Ausgabe-Station sieht nur die Bestellungen ihrer eigenen Kategorie. Niemand muss quer über den Platz rufen, niemand verwechselt Bestellungen.
Jeder Bon bekommt eine fortlaufende Nummer, die der Gast als Nachweis behält. An der jeweiligen Ausgabe wird die Bestellung abgehakt, sobald sie fertig ist - nachvollziehbar für Gast und Team, ganz ohne Zettel oder Zuruf über die Theke.
Grill, Theke, Kuchenstand - jedes Ausgabe-Gerät zeigt nur die Kategorie, für die es zuständig ist.
Die Weiterleitung funktioniert im lokalen Netz, auch wenn das Internet am Zeltplatz schwach ist.
Der Abschlussbericht zeigt nicht nur Umsatz und Kassendifferenz, sondern dokumentiert auch Zweck, Mittelverwendung und Begünstigte der Veranstaltung. Genau das verlangen Kassenprüfer und teils das Finanzamt bei gemeinnützigen Vereinen ohnehin - hier steht es direkt im Bericht, statt nachträglich zusammengesucht werden zu müssen.
Zweck der Veranstaltung, Mittelverwendung und Begünstigte werden schon bei der Vorbereitung erfasst und erscheinen automatisch im Abschlussbericht - zusammen mit Umsatz, Zahlarten, Kosten und Kassendifferenzen.
{{ helperPage.text }}
{{ helperPage.hint }}
{{ helperTask.verein }} · {{ helperTask.task.event_name }}
{{ helperTask.task.description }}
Hallo {{ helperTask.helper.name }} – fällig {{ helperTask.task.due_date ? new Date(String(helperTask.task.due_date).slice(0, 10) + 'T12:00:00').toLocaleDateString('de-DE') : 'ohne Termin' }}. Ort: {{ helperTask.task.event_location }}.
Aus Sicherheitsgründen bleibt diese Seite {{ helperCountdown }} geöffnet. Danach einfach den Link aus der E-Mail erneut öffnen.
| Zeit | Kasse | Bon | Zahlart | Summe |
|---|---|---|---|---|
| {{ t.time }} | {{ t.cash_register_name }} | #{{ t.daily_order_number }} | {{ t.payment_method }} | {{ Number(t.total_amount).toFixed(2) }} EUR |
| Noch keine Live-Transaktionen in dieser Sitzung. | ||||
Scanne diesen QR-Code in der App, um sie mit deinem Account zu synchronisieren.
Es wurden noch keine Kassen-Geräte angelegt.
{{ tool.short_description }}
Noch keine Module freigeschaltet.
{{ release.release_notes }}
| Bild | Name | Kategorie | Preis | Status | Aktionen |
|---|---|---|---|---|---|
|
{{ p.icon }}{{ p.icon }}
inventory_2
|
{{ p.name }} | {{ p.category }} | {{ Number(p.price).toFixed(2) }} EUR | {{ isActiveProduct(p) ? 'aktiv' : 'inaktiv' }} |
|
| Noch keine Artikel hinterlegt. | |||||
| Name | Artikel | |
|---|---|---|
| {{ cat.name }} | {{ productCountByCategory[cat.name] || 0 }} | |
| Noch keine Kategorien. | ||
Offene Aufgaben und Einkäufe aller Veranstaltungen. Zum Bearbeiten in die jeweilige Veranstaltung wechseln.
| Bis wann | Aufgabe | Wer | Veranstaltung | |
|---|---|---|---|---|
| {{ new Date(task.due_date).toLocaleDateString('de-DE') }} ohne Termin | {{ task.title }} | {{ task.assignee || '–' }} | {{ task.event_name }} | |
| Nichts offen. | ||||
Wiederkehrende Aufgaben, unabhängig von einer Veranstaltung. Beim Übernehmen entstehen daraus offene Aufgaben ohne Termin.
| Liste | Punkt | Wer (optional) | |
|---|---|---|---|
| {{ punkt.list_name || 'Allgemein' }} | {{ punkt.title }} | {{ punkt.assignee || '–' }} | |
| Noch keine Punkte. | |||
Noch keine Vorlage angelegt.
Helferinnen und Helfer, denen Aufgaben zugeteilt werden. Mit E-Mail-Adresse bekommen sie zuerst eine Bitte um Zustimmung – erst danach verschickt die Plattform Termine an sie.
| Name | Kontakt | Termin-Mails | Offene Aufgaben | |
|---|---|---|---|---|
| {{ h.name }} |
{{ h.phone }}
{{ h.email }}
–
|
{{ consentLabel(h) }} | {{ h.open_tasks || 0 }} | |
| Noch niemand eingetragen. | ||||
| Wo | Was | Menge | Geschätzt | Veranstaltung | |
|---|---|---|---|---|---|
| {{ item.source || '–' }} | {{ item.title }} | {{ quantityText(item) }} | {{ item.estimated_amount !== null ? money(item.estimated_amount) : '–' }} | {{ item.event_name }} | |
| Nichts offen. | |||||
| Kategorie | Summe |
|---|---|
| {{ row.category }} | {{ money(row.total) }} |
| Noch keine Ausgaben. | |
| Datum | Beschreibung | Kategorie | Veranstaltung | Erfasst von | Betrag | |
|---|---|---|---|---|---|---|
| {{ new Date(expense.expense_date || expense.created_at).toLocaleDateString('de-DE') }} | {{ expense.description }} | {{ expense.category || 'Wareneinsatz' }} | {{ expense.event_name || '–' }} | {{ expense.device_name || 'Plattform' }} | {{ money(expense.amount) }} | |
| Keine Ausgaben für diese Auswahl. | ||||||
Wird geladen…
{{ accountData.name }}
{{ accountData.org_name }}
{{ accountData.first_name }} {{ accountData.last_name }}
{{ accountData.street }}
{{ accountData.zip_code }} {{ accountData.city }}
{{ accountData.country }}
{{ accountData.admin_email }}
Steuer-ID: {{ accountData.tax_id }}
{{ licenseLabel }}
Gültig bis: {{ new Date(accountData.license_expires_at).toLocaleDateString('de-DE') }}
Zahlung über PayPal – bitte den Vereinsnamen im Betreff angeben.
* Endpreis. Gemäß § 19 UStG (Kleinunternehmer) wird keine Umsatzsteuer berechnet.
| Datum | Betrag | Art | Zahlweg | Status | Rechnung |
|---|---|---|---|---|---|
| {{ new Date(pay.created_at).toLocaleDateString('de-DE') }} | {{ Number(pay.amount).toFixed(2) }} {{ pay.currency }} | {{ licenseTypeLabel(pay.license_type) }} | {{ pay.payment_method || '–' }} | {{ pay.status === 'completed' ? 'bezahlt' : pay.status }} | |
| Noch keine Zahlungen erfasst. | |||||
Wähle eine Veranstaltung, um {{ eventTab === 'counts' ? 'den Kassensturz' : 'den Bericht' }} zu öffnen.
| Veranstaltung | Status | Kassen | Bons | Umsatz | |
|---|---|---|---|---|---|
| {{ event.name }} {{ event.location || '–' }} |
{{ eventStatusLabel(event.status) }} | {{ event.device_count || 0 }} | {{ event.transaction_count || 0 }} | {{ money(event.revenue) }} | |
| Noch keine Veranstaltungen angelegt. | |||||
{{ eventStatusHint }}
Nur Umsatz-Zahlarten (Bar, Karte, PayPal), ohne Storno.
Noch keine Umsätze für diese Auswahl.
Ausgewählte Kassen bekommen dieses Event in ihre Konfiguration.
Noch keine Kassen angelegt – unter „Kassen & Geräte“ anlegen.
Ein Kassenlauf ist eine Kasse mit eigenem Wechselgeld, z.B. „Ausschank links“.
| Kassenlauf | Kasse | Status | Wechselgeld | Abschluss |
|---|---|---|---|---|
| {{ session.name }} | {{ session.device_name || '–' }} | {{ sessionStatusLabel(session.status) }} | {{ money(session.opening_float) }} | Ist {{ money(session.counted_cash) }}, Differenz {{ signedMoney(session.difference_amount) }} |
| Noch keine Kassenläufe angelegt. | ||||
Bei {{ eventCountSummary.deviceMismatchCount }} Zählung(en) weicht das Soll der App vom Soll des Servers ab – vermutlich sind noch nicht alle Bons synchronisiert.
| Zeit | Art | Kasse / Kassenlauf | Startgeld | Bar-Bons | Soll | Gezählt | Differenz | |
|---|---|---|---|---|---|---|---|---|
| Diese Zählung kam aus der KassenApp. Eine Korrektur hier ändert nichts auf dem Gerät. | ||||||||
| {{ new Date(count.counted_at).toLocaleString('de-DE') }} | {{ countTypeLabel(count.count_type) }} (nachgezählt) | {{ count.cash_session_name || count.device_name || 'Plattform' }} · App | {{ money(count.opening_float) }} | {{ money(count.cash_sales) }} | {{ money(count.expected_cash) }} App: {{ money(count.device_expected_cash) }} |
{{ money(count.amount_cash) }} | {{ signedMoney(count.difference_amount) }} | |
| Noch kein Kassensturz erfasst. | ||||||||
Der Abschlussbericht zieht sie vom Umsatz ab. Nur was bar aus der Veranstaltungskasse bezahlt wurde, fehlt am Ende auch im Kassenbestand – deshalb die Angabe der Quelle.
| Datum | Kategorie | Titel | Bezahlt aus | Betrag |
|---|---|---|---|---|
| {{ cost.cost_date ? new Date(cost.cost_date).toLocaleDateString('de-DE') : '–' }} | {{ cost.category }} | {{ cost.title }} | {{ money(cost.amount) }} | |
| Noch keine Kosten erfasst. | ||||
| Summe (davon bar aus der Kasse {{ money(cashCostsTotal) }}) | {{ money(eventCostsTotal) }} | |||
Von der Kassen-App erfasst, wird ebenfalls abgezogen.
| Datum | Kategorie | Beschreibung | Kasse | Betrag |
|---|---|---|---|---|
| {{ new Date(expense.expense_date || expense.created_at).toLocaleDateString('de-DE') }} | {{ expense.category }} | {{ expense.description }} | {{ expense.device_name || '–' }} | {{ money(expense.amount) }} |
Zuständige werden einfach eingetragen – sie brauchen keinen Zugang zur Plattform. {{ taskCounts.offen }} offen, davon {{ taskCounts.ueberfaellig }} überfällig.
Aufgaben und Einkaufsliste einer früheren Veranstaltung übernehmen – ohne Termine und Beträge von damals.
Fertiger Text mit allen offenen Aufgaben – zum Posten in eure WhatsApp-Gruppe oder den Veranstaltungs-Kanal. Du wählst beim Teilen selbst, wohin es geht.
Wiederkehrende ToDos einmal anlegen und bei jeder Veranstaltung übernehmen – ohne Termine von damals.
Vorlagen pflegst du unter „Planung & Einkauf“.| Status | Aufgabe | Wer | Bis wann | |
|---|---|---|---|---|
| {{ gruppe.name }} · {{ gruppe.erledigt }} von {{ gruppe.gesamt }} erledigt | ||||
|
{{ task.title }}
{{ task.description }}
|
{{ task.assignee || '–' }}
{{ task.assignee_contact }}
{{ helperTaskHint(task) }}
📝 {{ task.helper_note }}
|
{{ new Date(task.due_date).toLocaleDateString('de-DE') }} – | ||
| Noch keine Aufgaben. | ||||
Abgehakte Einkäufe werden zu Kostenpositionen und landen im Abschlussbericht.
Zuletzt {{ money(articleHint.last_unit_price) }} je {{ articleHint.unit || 'Einheit' }} · {{ articleHint.last_source }} · {{ monthYear(articleHint.last_price_at) }} ({{ articleHint.price_is_actual ? 'tatsächlich bezahlt' : 'nur geschätzt' }}). Geschätzt gesamt: {{ money(formEstimate) }}
| Artikel | Menge | Je Einheit | Geschätzt | Tatsächlich | |
|---|---|---|---|---|---|
|
{{ item.title }}
{{ item.assignee }}
{{ item.quantity_note }}
|
{{ quantityText(item) }} | {{ item.unit_price !== null ? money(item.unit_price) : '–' }} | {{ item.estimated_amount !== null ? money(item.estimated_amount) : '–' }} | {{ money(item.actual_amount) }} | |
Noch nichts auf der Einkaufsliste.
Quittung über Bargeld, das an die Vereinskasse geht, und Eigenbelege für Ausgaben ohne Quittung. Fortlaufend nummeriert, als PDF zum Abheften und Verbuchen.
| Beleg-Nr. | Datum | Art | Zweck | Betrag | |
|---|---|---|---|---|---|
| {{ receipt.receipt_no }} | {{ new Date(receipt.issued_on).toLocaleDateString('de-DE') }} | {{ receipt.kind === 'uebergabe' ? 'Kassenübergabe' : 'Eigenbeleg' }} |
{{ receipt.purpose }}
an {{ receipt.target === 'bank' ? 'Vereinskonto (Bank)' : 'Vereinskasse (bar)' }}
Storniert: {{ receipt.cancel_reason }}
|
{{ money(receipt.amount) }} | |
| Zeit | Kasse | Bon | Zahlart | Summe |
|---|---|---|---|---|
| {{ tx.time }} | {{ tx.cash_register_name }} | #{{ tx.daily_order_number }} | {{ tx.payment_method }} | {{ money(tx.total_amount) }} |
| Noch keine Bons für diese Veranstaltung. | ||||
PDF für Kassenprüfer und Vorstand, Excel mit allen Daten. Ist eine Nextcloud eingerichtet, sichert die Plattform beides automatisch.
Schützt den Admin-Bereich der Kassen-App (Einstellungen, Berichte, Kassensturz). Es kommt beim nächsten Abgleich auf jedes Gerät, auch zum Zurücksetzen, und funktioniert danach ohne Internet.
Status: gesetzt (zuletzt geändert {{ new Date(posSettings.admin_password_updated_at).toLocaleString('de-DE') }}) nicht gesetzt, jede Kasse nutzt ihr lokal vergebenes Passwort
Tipp: Ein Wort mit Zahlen ist deutlich schwerer zu erraten als eine reine Zahlen-PIN.Die Kassen-App druckt ab Version 1.4 auf Bondrucker mit ESC/POS, z. B. günstige 58-mm-Bluetooth-Drucker wie Xprinter XP-P323B oder Goojprt PT-210. Den Drucker wählt jedes Gerät selbst aus, hier legt ihr fest, was gedruckt wird.
Noch keine Sicherung gelaufen.
| Name | Token | Zuletzt gesehen | Aktionen |
|---|---|---|---|
|
|
{{ d.access_token ? d.access_token : '************' + (d.access_token_last4 || '----') }}
|
{{ d.last_seen ? new Date(d.last_seen).toLocaleString() : '-' }} |
|
| Noch keine Kassen-Geräte angelegt. | |||