Buchhaltung
Automatische Buchungen — was sich von selbst ins Kassenbuch schreibt
Viele Vorgänge im Verein sind im Kern eine Buchung — eine bezahlte Rechnung, eine bestätigte Vereinsheim-Buchung, eine ausgestellte Spendenbescheinigung. Damit Sie diese Vorgänge nicht ein zweites Mal im Kassenbuch erfassen müssen, schreibt die App sie automatisch ins Kassenbuch.
Diese Seite erklärt, welche Ereignisse automatisch buchen, welche Konten sie verwenden, und wie Sie diese Zuordnung anpassen.
#Wie funktioniert das?
Sobald in der App ein passendes Ereignis stattfindet, schaut die App in die Tabelle Konten-Zuordnung (Buchhaltung → Konten-Zuordnung). Dort steht für jedes Ereignis:
- Soll-Konto — welches Konto belastet wird (typisch:
1200 Bank) - Haben-Konto — welches Gegenkonto verwendet wird (z. B.
3200 Pachteinnahmen) - Aktiv — ob die automatische Buchung überhaupt ausgelöst wird
Die App nimmt diese Werte, ruft PostJournalEntryAction auf, und der Eintrag erscheint im Kassenbuch — mit Quelle Automatisch und einem Verweis auf den auslösenden Vorgang (postable_type / postable_id).
#Welche Ereignisse buchen automatisch?
| Ereignis | Wann wird gebucht? |
|---|---|
| Pacht bezahlt | Rechnung mit Pacht-Positionen wird als bezahlt markiert |
| Wasser bezahlt | Rechnung mit Wasser-Positionen wird beglichen |
| Müll bezahlt | Rechnung mit Müll-Positionen wird beglichen |
| Strom bezahlt | Rechnung mit Strom-Positionen wird beglichen |
| Mitgliedsbeitrag bezahlt | Mitgliedsbeitrags-Rechnung wird beglichen |
| Sonstige Rechnung bezahlt | Individuelle Rechnung (Plan 33) wird beglichen |
| Zahlung ohne Rechnung | Eine Zahlung wurde verbucht, konnte aber keiner Rechnungsposition zugeordnet werden |
| Vereinsheim-Buchung bestätigt | Buchung mit Gebühr > 0 € wird bestätigt |
| Geldspende | Zuwendungsbestätigung für eine Geldspende wird ausgestellt |
| Sachspende | Zuwendungsbestätigung für eine Sachspende wird ausgestellt |
| Aufwandsspende | Zuwendungsbestätigung für eine Aufwandsspende wird ausgestellt |
Jedes Ereignis hat eine eigene Detailseite — klicken Sie das Info-Symbol neben der Zeile in der Konten-Zuordnung, um die genaue Buchung und die Voraussetzungen zu sehen.
#Zuordnung anpassen
Auf der Seite Konten-Zuordnung können Sie pro Ereignis das Soll- und Haben-Konto ändern. Beispiele:
- Sie führen zwei Bankkonten (Sparkasse + GLS) und wollen Pacht-Eingänge auf das GLS-Konto buchen → bei
Pacht bezahltdas Soll-Konto auf1201 GLS Banksetzen. - Sie wollen Sachspenden auf ein eigenes Konto „Sachwerte Inventar“ buchen → bei
Sachspendedas Soll-Konto entsprechend anpassen.
Wichtig: Änderungen wirken nur auf zukünftige Buchungen. Bereits erfolgte Buchungen bleiben unverändert (GoBD-Unveränderbarkeit) — siehe Stornobuchung.
#„Aktiv“-Schalter
Wenn Sie ein Ereignis vorübergehend nicht automatisch buchen lassen wollen — z. B. weil Sie einen Sonderfall manuell erfassen — deaktivieren Sie die Zeile in der Spalte Aktiv. Der Vorgang in der App läuft trotzdem durch (die Rechnung wird bezahlt, die Buchung bestätigt), nur das Kassenbuch bleibt unberührt.
#Jahreswechsel — die Zuordnung fürs nächste Jahr
Die Konten-Zuordnung gilt immer für ein Geschäftsjahr. Eine Buchung mit Datum im nächsten Jahr — etwa eine Vereinsheim-Buchung, die heute bestätigt wird, aber erst im Januar stattfindet — braucht deshalb die Zuordnung des nächsten Jahres. Die Zuordnung des laufenden Jahres wird dafür nicht herangezogen.
Damit Sie das nicht jedes Jahr von Hand vorbereiten müssen, legt die App die Zuordnung fürs nächste Jahr jede Nacht automatisch an, sobald die Buchhaltung für Ihren Verein eingeschaltet ist:
- Kopie des laufenden Jahres — Soll- und Haben-Konto und der Aktiv-Schalter jeder Zeile werden übernommen. Zeilen, deren Konto inzwischen archiviert oder ausgeblendet ist, bleiben dabei leer — wie beim Knopf Aus JJJJ kopieren. Hat das laufende Jahr keine Zuordnung, nimmt die App das letzte Jahr davor, das eine hat.
- Standardwerte, wenn es kein solches Jahr gibt oder sich nichts übernehmen lässt (z. B. weil alle zugeordneten Konten inzwischen archiviert sind) — dieselben Konten, die auch der Knopf Standardwerte verwenden setzt.
- Bestehende Zuordnungen bleiben unangetastet. Hat das nächste Jahr bereits mindestens eine Zeile — weil Sie es schon gepflegt haben oder die App es in einer früheren Nacht angelegt hat —, ändert die App daran nichts und ergänzt auch keine fehlenden Zeilen.
- Übersprungene Buchungen werden nachgeholt. Wurde ein Vorgang des nächsten Jahres gebucht, bevor dessen Zuordnung bestand, holt die App ihn in derselben Nacht nach — so, als hätten Sie Fehlende Buchungen nachholen geklickt, aber ohne eine weitere Benachrichtigung.
Ab dem Moment, in dem das nächste Jahr seine eigene Zuordnung hat, wirken Änderungen am laufenden Jahr nicht mehr auf das nächste. Die Seite Konten-Zuordnung weist im laufenden Jahr darauf hin („Für JJJJ besteht bereits eine eigene Konten-Zuordnung. Änderungen hier gelten nur für …“) und verlinkt direkt auf das nächste Jahr. Ändern Sie z. B. im November das Pacht-Konto, prüfen Sie über diesen Link, ob das nächste Jahr dieselbe Änderung braucht.
Automatisch vorbereitet wird immer nur das nächste Jahr. Für Vorgänge, die noch weiter in der Zukunft liegen (z. B. eine Vereinsheim-Buchung für übernächstes Jahr), kommt weiterhin die Benachrichtigung aus dem folgenden Abschnitt — oder Sie legen die Zuordnung dieses Jahres selbst an.
Für Administratoren mit Serverzugriff: Der nächtliche Lauf ist der Befehl
php artisan accounting:ensure-next-year-mappings. Mit--year=JJJJbereiten Sie ein anderes Jahr vor, z. B. das übernächste.
#Negative Positionen — Vorauszahlungen und Guthaben
Manche Rechnungspositionen sind negativ: die Wasser- oder Stromvorauszahlung des Vorjahres, ein Guthaben aus dem Vorjahr, ein negativer Differenzbetrag. Sie mindern die Rechnungssumme, sind aber keine eigene Einnahme — und bekommen deshalb kein eigenes Konto.
Die App verrechnet sie stattdessen mit ihrem fachlichen Gegenstück, bevor der Zahlbetrag auf die Konten verteilt wird:
| Negative Position | wird verrechnet mit |
|---|---|
| Wasservorauszahlung (Vorjahr) | Wasservorauszahlung des laufenden Jahres, danach Wasserverbrauch und die übrigen Wasser-Positionen |
| Stromvorauszahlung (Vorjahr) | Stromvorauszahlung des laufenden Jahres, danach Stromverbrauch und Grundgebühr |
| Guthaben / Vorauszahlungen | Offener Betrag Vorjahr, danach Differenzbetrag Vorjahr |
| Negativer Differenzbetrag | anteilig über alle übrigen Positionen |
#Beispiel
Eine kombinierte Rechnung über 430,00 €:
| Position | Betrag |
|---|---|
| Pacht | 200,00 € |
| Verbandsbeitrag BV | 55,24 € |
| Vereinsbeitrag 1. Mitglied | 6,00 € |
| Müllgebühren | 38,76 € |
| Wasserverbrauch | 120,00 € |
| Wasservorauszahlung (Vorjahr) | −100,00 € |
| Wasservorauszahlung (akt. Jahr) | 110,00 € |
Gebucht wird: Pacht 200,00 €, Verbandsbeitrag 55,24 €, Vereinsbeitrag 6,00 €, Müll 38,76 €, Verbrauch 120,00 € und Vorauszahlung 10,00 € — also die 110 € neue Vorauszahlung abzüglich der 100 € aus dem Vorjahr, die im letzten Jahr bereits auf das Vorauszahlungskonto vereinnahmt wurden. Für die negative Position selbst entsteht keine Buchung.
Reicht die neue Vorauszahlung nicht aus — etwa weil ein Mitglied ausscheidet und keine neue Vorauszahlung mehr anfällt — hat die alte Vorauszahlung den Verbrauch bezahlt: der Rest wird dann gegen Wasserverbrauch verrechnet.
Bei einer Teilzahlung verteilt sich der eingegangene Betrag anteilig über die so verrechneten Positionen. Zahlt das Mitglied im Beispiel die Hälfte, werden 100,00 € Pacht, 60,00 € Verbrauch und 5,00 € Vorauszahlung gebucht.
#Warum stehen dort „Verrechnet“ statt Konten?
In der Konten-Zuordnung erscheinen Wasservorauszahlung (Vorjahr) und Guthaben / Vorauszahlungen mit dem Hinweis Verrechnet und ohne Soll- und Haben-Konto. Das ist kein Fehler: Diese Positionen buchen nie auf ein eigenes Konto, ein dort eingetragenes Konto hätte also keinerlei Wirkung.
#Mein Vorgang ist passiert — aber im Kassenbuch steht nichts. Was tun?
Wenn eine Rechnung als bezahlt markiert wurde, aber im Kassenbuch fehlt der Eintrag, liegt fast immer eine fehlende oder inaktive Konten-Zuordnung vor. Der Vorgang selbst läuft trotzdem durch — die Zahlung wird gespeichert, der Import abgeschlossen —, nur die Buchung bleibt aus. Die App sendet in diesem Fall eine Benachrichtigung an Vorstand und Administratoren („Buchung nicht möglich: …“ mit der betroffenen Position, per E-Mail mit dem Betreff „Buchhaltung: Konten-Zuordnung fehlt“).
Damit ein Zahlungsimport mit hundert Zeilen nicht hundert Benachrichtigungen auslöst, kommt pro Position und Jahr höchstens eine Benachrichtigung alle 24 Stunden. Die nächste nennt dann, wie viele Buchungen in der Zwischenzeit zusätzlich betroffen waren („Betroffen: dieser Vorgang und 12 weitere Buchungen.“).
Zur Behebung:
- Konten-Zuordnung öffnen (
Buchhaltung → Konten-Zuordnung) — der Link in der Benachrichtigung und in der E-Mail („Zur Konten-Zuordnung JJJJ“) führt direkt zum richtigen Jahr. - Ist das Jahr noch ganz leer, übernehmen Sie mit Aus JJJJ kopieren die Zuordnung eines früheren Jahres oder setzen mit Standardwerte verwenden die empfohlenen Konten — weiter mit Schritt 4. Andernfalls die Zeile suchen (z. B.
Pacht). - Soll- und Haben-Konto setzen, Aktiv einschalten, Speichern
- Oben auf der Seite Fehlende Buchungen nachholen klicken. Die App geht alle Vorgänge des gewählten Jahres durch und bucht genau die, die noch nicht im Kassenbuch stehen. Die Meldung danach nennt das Ergebnis, z. B. „12 Buchung(en) nachgeholt, 0 weiterhin ohne Zuordnung.“ Steht dort noch eine Zahl bei „weiterhin ohne Zuordnung“, fehlt noch eine weitere Zeile in der Konten-Zuordnung — ergänzen und erneut klicken. Endet die Meldung mit „… fehlgeschlagen (Details im Protokoll).“, konnte die App einzelne Vorgänge auch mit vorhandener Zuordnung nicht buchen (z. B. weil ein zugeordnetes Konto inzwischen archiviert ist) — dann hilft Ihnen der Administrator weiter.
Den ursprünglichen Vorgang lösen Sie dafür nicht erneut aus, und Sie buchen auch nichts von Hand nach. Das Nachholen lässt sich gefahrlos wiederholen: Was bereits im Kassenbuch steht, wird übersprungen, doppelte Buchungen entstehen nicht.
Für Administratoren mit Serverzugriff: Dasselbe gibt es als Befehl,
php artisan accounting:repost-missing <verein> --year=JJJJ. Mit--dry-runzeigt er nur an, wie viele Buchungen nachgeholt würden, und ändert nichts.
#Zahlung in einem abgeschlossenen Jahr — die Nachbuchung
Manchmal kommt eine Zahlung zu einem Datum herein, dessen Geschäftsjahr bereits abgeschlossen ist — typisch: Sie ordnen im Februar eine Überweisung vom 28.12. des Vorjahres zu, der Jahresabschluss ist aber schon gemacht. In ein abgeschlossenes Jahr darf nichts mehr gebucht werden. Die Zuordnung der Zahlung soll aber trotzdem gelingen.
Die App bucht in diesem Fall automatisch eine Nachbuchung:
- Datum: die Buchung landet im ersten noch offenen Geschäftsjahr — ist das das laufende Jahr, mit dem heutigen Datum, sonst zum 01.01. dieses Jahres.
- Buchungstext: am Ende steht das ursprüngliche Datum, z. B. „Rechnung RE-2025-042 – Pacht (Teilzahlung) (Nachbuchung; Zahlungsdatum 28.12.2025)“. Bei allen übrigen automatischen Buchungen (z. B. Vereinsheim, Geräteverleih, Spenden) heißt es „Belegdatum“ statt „Zahlungsdatum“.
Das abgeschlossene Jahr bleibt dadurch unverändert, und der Prüfpfad bleibt lückenlos: Am Buchungstext ist jederzeit erkennbar, zu welchem Datum der Vorgang eigentlich gehört.
Das gilt nur für die automatischen Buchungen auf dieser Seite. Eine Buchung, die Sie von Hand im Kassenbuch erfassen, und die Zeilen des Bankimports werden in einem abgeschlossenen Jahr weiterhin abgelehnt — dort entscheiden Sie selbst, wohin die Buchung gehört.
#Was passiert, wenn eine Zahlung wieder gelöscht oder umgehängt wird?
Eine automatische Buchung bleibt an ihren Vorgang gebunden — auch rückwärts. Wird die zugrunde liegende Zahlungszuordnung wieder aufgelöst, entsteht dafür eine Stornobuchung mit dem Text „Zahlungszuordnung gelöscht“. Die ursprüngliche Buchung bleibt stehen (GoBD-Unveränderbarkeit), das Storno hebt sie auf. Das gilt für alle Wege:
- eine Zahlung wird gelöscht (Zahlungsliste, Mitglieds- oder Parzellen-Flyout),
- eine Gutschrift wird im Zahlungs-Flyout auf einen anderen Soll-Posten oder ein anderes Mitglied umgehängt,
- eine Gutschrift wird nachträglich zu einem Soll-Posten gemacht,
- der Betrag einer bestehenden Zuordnung wird geändert — dann wird die alte Buchung storniert und in neuer Höhe neu gebucht.
Der praktische Effekt: Eine umgehängte Zahlung steht danach genau einmal als Ertrag im Kassenbuch, nicht zweimal. Die Summen in EÜR und Jahresabschluss stimmen ohne Nacharbeit.
#Wenn das Geschäftsjahr bereits abgeschlossen ist
Liegt auch nur eine Buchung der betroffenen Zuordnung in einem abgeschlossenen Geschäftsjahr, lässt sich die Zahlung nicht löschen, umhängen oder in der Höhe ändern. Sie bekommen den Hinweis „Zahlung kann nicht gelöscht werden. Buchung im abgeschlossenen Jahr JJJJ nicht erlaubt.“, und es bleibt alles unverändert — auch die Zahlung selbst.
Das ist Absicht: Ein Storno in einem abgeschlossenen Jahr würde den bereits festgestellten Jahresabschluss nachträglich verändern. Wenn die Korrektur wirklich nötig ist, muss zuerst das Geschäftsjahr wieder geöffnet werden (siehe Jahresabschluss). Eine einzelne falsche Buchung im abgeschlossenen Jahr korrigieren Sie stattdessen im Kassenbuch per Stornobuchung — sie wird in der offenen Periode gebucht.
#Was wird nicht automatisch gebucht?
- Bankimport-Zeilen, die noch keiner Rechnung zugeordnet sind — die müssen Sie zuerst zuordnen (siehe Plan 38d), erst danach läuft die Auto-Buchung.
- Mahngebühren / Säumniszuschläge — diese werden manuell gebucht, weil die genaue Höhe satzungsabhängig ist.
- Anfangsbestände — werden über
Kontenrahmen → Anfangsbestand setzengegen das EBK (9000) gebucht.
#Was bedeutet das für die Kassenprüfung?
Jede automatische Buchung trägt im Kassenbuch:
- die Quelle (Rechnung, Zahlung, Vereinsheim, Spende),
- den Verweis auf den auslösenden Vorgang (postable_type/postable_id) — beim Klick auf den Eintrag sieht die Prüfung den ursprünglichen Beleg,
- ein eindeutiges Buchungsdatum und einen unveränderlichen Buchungstext.
Damit ist der Prüfpfad lückenlos: vom Bankkontoauszug über die Rechnung bis zur Buchung im Kassenbuch.