Rechnungen
Rechnungsvorlagen
Ein Rechnungstemplate (InvoiceTemplate) beschreibt, welche Posten in welcher Reihenfolge auf den Jahresrechnungen eines Vereins erscheinen. Pro Verein und Abrechnungsjahr gibt es genau ein Template. Das Template steuert die Berechnung — die Rechenlogik liest ausschließlich das Template, es gibt keine fest codierten Positionen.
Nur Administratoren und Vorstandsmitglieder können Rechnungstemplates einsehen und bearbeiten. Der Editor liegt unter Vereinseinstellungen → Rechnungsvorlage.
#Aufbau der Template-Konfiguration
Das Template speichert seine Struktur als JSON-Objekt im Feld config. Die Grundstruktur:
1{
2 "mode": "combined",
3 "invoices": [
4 {
5 "type": "lease",
6 "label": "Jahresrechnung",
7 "sections": [
8 {
9 "id": "pacht",
10 "label": "Pacht",
11 "items": [
12 { "type": "base_rent", "id": "9d23b74a-e7e8-46a2-8e4a-a23b8b4de5dc", "position": 1 },
13 { "type": "public_legal_rate", "id": "62a2c581-681d-403b-b8fd-647bec4267bf", "position": 2 }
14 ]
15 }
16 ]
17 }
18 ]
19}
| Feld | Beschreibung |
|---|---|
mode |
combined oder separate — bestimmt ob eine oder zwei Rechnungen pro Parzelle erzeugt werden |
invoices |
Array mit einem Eintrag (combined) oder zwei Einträgen (separate) |
invoices[].type |
lease für Pacht-/Gebührenrechnung, water für Wasserrechnung |
invoices[].sections |
Abschnitte der Rechnung mit Label und Positionsliste |
sections[].id |
Kennung des Abschnitts, eindeutig innerhalb der Rechnung |
items[].type |
Positionstyp aus InvoiceLineItemTypeEnum (siehe unten) |
items[].id |
Kennung der Zeile, eindeutig innerhalb des Abschnitts |
items[].position |
Anzeigereihenfolge innerhalb des Abschnitts |
items[].addon_id |
Nur für Typ addon: UUID des verknüpften RentPaymentAddOn-Eintrags |
Die beiden id-Felder werden beim Anlegen vergeben und identifizieren eine Zeile beim
Umsortieren — die Position allein genügt dafür nicht, und der Typ auch nicht, weil ein
Abschnitt dieselbe Zwischensumme mehrfach enthalten darf. Ältere Konfigurationen ohne
id bekommen beim Öffnen im Editor eine; von Hand vergebene Dubletten werden dabei
ersetzt. Beides wirkt sich erst mit dem nächsten Speichern auf die gespeicherte
Konfiguration aus.
Eine Zwischensumme zeigt die laufende Summe aller Positionen ihres Abschnitts bis zu ihr selbst; frühere Zwischensummen zählen dabei nicht mit. Ist eine Wasser-Umsatzsteuer eingestellt, steht die Zwischensumme brutto da, mit der Zeile „inkl. … MwSt“ darunter. PDF und der Reiter Pacht im Parzellen-Flyout rechnen sie gleich; Abschnittssumme und Gesamtbetrag ändert sie nicht.
Im Modus separate enthält das invoices-Array zwei Einträge: einen mit "type": "lease" und einen mit "type": "water". Der Wasserabschnitt erscheint dann nur in der Wasserrechnung.
#Modus wechseln
Ein Wechsel zwischen Kombiniert und Getrennt ersetzt die Rechnungsstruktur durch die Standardkonfiguration des neuen Modus. Weicht die Struktur davon ab — Abschnitte, Bezeichnungen, Posten, Reihenfolge, Zwischensummen oder eingefügte Zusatzposten —, fragt der Editor zuerst nach: „Rechnungsstruktur zurücksetzen?“ mit Abbrechen und Zurücksetzen. Das gilt für jede Vorlage, auch für eine neue und eine ohne Rechnungen.
- Abbrechen, Escape oder das Schließen-X lassen Modus und Struktur unverändert; die Modus-Auswahl springt auf den bisherigen Wert zurück. Escape schließt dabei nur die Rückfrage, nicht den Editor.
- Zurücksetzen wechselt den Modus und übernimmt die Standardkonfiguration. Dauerhaft wird das erst mit Speichern.
Entspricht die Struktur noch der Standardkonfiguration — etwa direkt nach Neue Vorlage —,
wechselt der Modus ohne Rückfrage. Die beim Anlegen vergebenen Zeilen-ids zählen nicht als
Abweichung.
#Abschnitte und Posten umsortieren
Im Editor lässt sich jede Zeile auf zwei Wegen verschieben:
- Ziehen am Griff links (
≡) — für Abschnitte wie für einzelne Posten. - „Nach oben“ / „Nach unten“ über die Pfeil-Schaltflächen rechts in der Zeile. Sie sind mit der Tastatur erreichbar und an der ersten beziehungsweise letzten Position deaktiviert.
Ein Posten bleibt dabei immer in seinem Abschnitt; verschoben wird ausschließlich innerhalb der Liste, in der die Zeile angefasst wurde. Die neue Reihenfolge steht erst nach Speichern fest und schreibt gleichzeitig die position-Werte des Abschnitts lückenlos neu.
#Editor ohne Speichern verlassen
Escape, Klick außerhalb, Abbrechen und das Schließen-X fragen zuerst nach, wenn der Editor ungespeicherte Änderungen enthält: „Ungespeicherte Änderungen verwerfen?“ mit Weiter bearbeiten und Verwerfen. Das gilt auch für Escape bei geöffnetem Menü „Element hinzufügen“. Weiter bearbeiten — oder Escape im Dialog — schließt nur die Rückfrage; alle Eingaben bleiben erhalten. Verwerfen schließt den Editor, ohne zu speichern.
Als Änderung zählt jede Abweichung vom Stand beim Öffnen: Rechnungsstruktur (Abschnitte, Posten, Reihenfolge, Bezeichnungen), Anschreiben, Wichtige Hinweise, Ratenplan, der Schalter „Kopf- und Fußzeile nur auf der ersten Seite“ und bei einer neuen Vorlage Jahr und Modus. Die beim Öffnen vergebenen Zeilen-ids gehören zum Ausgangsstand und lösen keine Rückfrage aus. Text im Feld „Neuer Abschnitt“, der noch nicht hinzugefügt wurde, zählt nicht. Ohne Änderungen schließt der Editor sofort.
#Kopf- und Fußzeile nur auf der ersten Seite
Im Abschnitt PDF-Layout des Editors steht der Schalter „Kopf- und Fußzeile nur auf der ersten Seite“. Er ist standardmäßig aus; dann stehen Briefkopf und Fußzeile auf jeder Seite (Falz- und Lochmarken stehen immer nur auf der ersten Seite).
Eingeschaltet bleibt die erste Seite unverändert. Ab Seite 2 entfallen Briefkopf, Fußzeile sowie Falz- und Lochmarken, und der Rand beträgt ringsum 20 mm — lange Rechnungen brauchen dadurch weniger Seiten. Unten rechts steht dann nur noch die Seitenzahl („Seite 2 / 3“), und zwar genau dann, wenn auch die erste Seite eine trägt: ohne gestaltetes PDF-Layout immer, mit einem unter Vereinseinstellungen → Allgemein → Layout gestalten gestalteten Layout nur, wenn dort das Element Seitenzahl eingeschaltet ist.
Der Schalter gilt pro Rechnungsvorlage, also pro Abrechnungsjahr. Er wirkt auf Rechnungs-PDFs, die nach dem Speichern erzeugt werden. Rechnungen aus Briefen & Rechnungen folgen dem Schalter ihrer eigenen Vorlage, nicht diesem. PDFs ohne Vorlage — etwa die Vereinsheim- oder Geräteverleih-Rechnung — behalten Kopf- und Fußzeile auf jeder Seite.
#Verfügbare Positionstypen
Jede Position trägt einen Begriff — denselben in den Jahressätzen (wo Sie den Betrag
pflegen), in der Rechnungsvorlage (wo Sie die Position auswählen) und auf der Rechnung
(wo Sie sie dem Mitglied erklären). Die Rechnung ergänzt ihn nur um die konkreten Zahlen,
etwa Wasserverbrauch (55,00 m³).
Die Spalte Bezeichnung unten ist damit auch der Name, unter dem Sie den Satz in den Jahressätzen finden. Bereits erzeugte Rechnungen behalten die Beschriftung ihres Erstellungszeitpunkts — ein Beleg dokumentiert den Stand, zu dem er ausgestellt wurde.
#Pacht
| Typ | Bezeichnung | Berechnung |
|---|---|---|
base_rent |
Pacht | (Parzellenfl. + Gemeinschaftsfl.) × Pachtsatz |
public_legal_rate |
Öffentlich-rechtliche Lasten | (Parzellenfl. + Gemeinschaftsfl.) × Satz |
Die Pacht ist ein einziger Posten für die Gartenfläche inkl. Gemeinschaftsflächenanteil. Es gibt keine separaten Posten für Hausfläche, Schuppen oder Gewächshaus.
#Verbands- und Vereinsbeiträge
| Typ | Bezeichnung | Berechnung |
|---|---|---|
federation_bv_fee |
Verbandsbeitrag BV | BV-Satz × Mitgliederzahl oder BV-Satz × 1 — je nach eingestellter Bezugsgröße |
federation_lv_fee |
Verbandsbeitrag LV | LV-Satz × Mitgliederzahl oder LV-Satz × 1 — je nach eingestellter Bezugsgröße |
membership_fee_first |
Vereinsbeitrag 1. Mitglied | Mitgliedsbeitrag, je nach Einstellung als Monats- oder Jahresbetrag |
membership_fee_others |
Vereinsbeitrag weitere Mitglieder | Beitrag × (Mitgliederzahl − 1) |
Pro Mitglied oder pro Parzelle?
Für den BV- und den LV-Beitrag legen Sie unter Vereinseinstellungen → Jahressätze je Beitrag getrennt fest, worauf sich der Satz bezieht:
| Auswahl | Wirkung | Feldbeschriftung |
|---|---|---|
| Pro Mitglied (Voreinstellung) | Der Satz wird mit der Mitgliederzahl der Parzelle multipliziert. | BV-Beitrag (€/Mitglied) |
| Pro Parzelle | Der Satz wird einmal je Parzelle berechnet, unabhängig davon, wie viele Mitglieder auf ihr stehen. | BV-Beitrag (€/Parzelle) |
Viele Vereine führen die Verbandsbeiträge je Parzelle ab, nicht je Person — für sie war die feste Berechnung pro Mitglied bei einer Parzelle mit zwei Mitgliedern der doppelte Beitrag.
Die Auswahl gehört zum Jahressatz, ist also pro Jahr einstellbar: eine Umstellung für 2027 lässt Rechnungen für 2026 unverändert. Bestehende Jahressätze stehen auf Pro Mitglied und rechnen damit unverändert weiter.
Der Zeitanteil bei einem unterjährigen Pächterwechsel wirkt in beiden Fällen. Bei Pro Parzelle entfällt der Zusatz „(2 Mitglieder)“ hinter der Positionsbezeichnung, und es werden keine gezählten Namen gespeichert — es wurde niemand gezählt.
Wer zählt als Mitglied?
Die Zählung unten gilt für alle vier Positionen, für Zusatzposten mit Anzahl = Mitglied und für die
Verbandsbeiträge, solange diese auf Pro Mitglied stehen:
- Archivierte Mitglieder zählen nie mit.
- Maßgeblich ist nicht „heute Mitglied“, sondern „im Abrechnungsjahr Mitglied“. Wer im Laufe des Jahres ausscheidet, zählt für dieses Jahr noch voll mit; wer schon vor dem Jahr ausgeschieden ist, gar nicht mehr.
- Bei BV und LV wird jedes befreite Mitglied einzeln übersprungen. Eine Parzelle mit drei Mitgliedern, von denen eines vom BV-Beitrag befreit ist, wird mit zwei Mitgliedern berechnet. Ist das Mitglied befreit, an das die Rechnung geht, entfällt die Position ganz.
- Bei Pro Parzelle bleiben die Befreiungen wirksam, verringern den Betrag aber nicht: Ist das rechnungsempfangende Mitglied befreit, entfällt die Position; ist jedes Mitglied der Parzelle befreit, entfällt sie ebenfalls. Ist nur eines von zweien befreit, wird der volle Parzellen-Beitrag berechnet.
- Eine Befreiung wirkt ab dem Jahr, in dem sie beginnt — eine ab 2026 geltende Befreiung ändert nichts an einer Rechnung für 2024.
Welche Personen in die Anzahl eingeflossen sind, steht auf der Rechnungsvorschau und in der Rechnungsprüfung unter der jeweiligen Position.
#Feste und variable Gebühren
| Typ | Bezeichnung | Berechnung |
|---|---|---|
winter_service |
Winterdienst | Pauschalbetrag pro Parzelle |
working_hours_fee |
Abgeltung Arbeitsstunden | Fehlstunden × Stundensatz; nur wenn Fehlstunden > 0 |
waste_fee |
Müllgebühren | Aus Waste/WasteCommunity-Einträgen; nur wenn Feature Müll aktiv |
addon |
(benutzerdefiniert) | Betrag × Anzahl (Parzelle oder Mitglied); erfordert addon_id im Template |
working_hours_feeist nur verfügbar, wenn das Feature Arbeitsstunden aktiv ist.waste_feesetzt das Feature Müll voraus. Alle Wasserposten setzen das Feature Wasser voraus.
#Überträge aus dem Vorjahr
| Typ | Bezeichnung | Berechnung |
|---|---|---|
open_balance_prev_year |
Offener Betrag [Jahr−1] | Summe unbeglichener Belastungszahlungen aus dem Vorjahr |
credits_prev_year |
Guthaben/Vorauszahlungen [Jahr−1] | Summe ungenutzter Guthabenzahlungen aus dem Vorjahr (negativer Wert) |
balance_carryover |
Differenzbetrag [Jahr−1] | Offene Soll- und Guthabenposten des Vorjahres saldiert; ersetzt die beiden Zeilen darüber |
#Welchem Jahr eine Zahlung zugerechnet wird
Alle Vorjahrespositionen — die drei oben und die beiden Vorauszahlungs-Abzüge weiter unten — fragen dasselbe: In welchem Jahr hat diese Zahlung wirtschaftlich stattgefunden? Maßgeblich ist das Datum auf dem Kontoauszug, nicht der Zeitpunkt, zu dem die Zeile in der Anwendung entstanden ist:
| Art der Zahlung | Maßgebliches Datum |
|---|---|
| Guthaben / Zahlungseingang | Valutadatum (paid_at) |
| Soll-Posten / Forderung | Fälligkeitsdatum (due_at) |
| Zeile ganz ohne Datum (Altbestand, Handbuchung) | Anlagedatum |
Der Bankimport übernimmt das Valutadatum aus der CSV — deshalb ist der Normalfall unkritisch: Sie können die Kontoauszüge des Vorjahres im Januar einlesen und danach die Jahresrechnung erzeugen. Die im Vorjahr geflossenen Zahlungen landen im Vorjahr, auch wenn sie erst jetzt erfasst wurden. Umgekehrt zieht ein nachträglich erfasster Alt-Beleg das Geld nicht in das Jahr der Erfassung.
Erfassen Sie eine Zahlung von Hand, tragen Sie das Datum vom Kontoauszug ein und nicht das heutige. Ohne Datum fällt die Zuordnung auf den Erfassungszeitpunkt zurück — und damit möglicherweise in das falsche Rechnungsjahr.
#Wasserposten
| Typ | Bezeichnung | Berechnung |
|---|---|---|
water_usage |
Wasserverbrauch | Verbrauch (m³) × Satz je m³; Mehrwertsteuer wird auf Rechnungsebene aufgeschlagen |
water_wastewater_levy |
Abwasser | Voller Verbrauch × Satz je m³ — oder, wenn ein Abwasseranteil in Prozent gepflegt ist, nur dieser Anteil der Verbrauchsmenge zum selben Satz |
water_meter_fee |
Wassergrundgebühr | Pauschalbetrag pro Parzelle — die Grundgebühr des Vereins, nicht der Zähler der Parzelle |
water_meter_difference |
Messdifferenz | Differenz bei nicht übereinstimmenden Zählerständen; nur wenn > 0 |
water_prepayment_deduction |
Wasservorauszahlung [Jahr−1] | Summe der im Vorjahr geleisteten Wasser-Vorauszahlungen als negativer Posten — siehe Welchem Jahr eine Zahlung zugerechnet wird |
water_prepayment_current_year |
Wasservorauszahlung [Jahr] | Vorauszahlung, die mit dieser Rechnung für das laufende Jahr eingezogen wird |
meter_info |
Wasserzähler | Kopfzeile ohne Betrag: Zählernummer und Ablauf der Eichung der Parzelle |
#Zusatzposten (Add-ons)
RentPaymentAddOn-Einträge erlauben vereinsspezifische Posten (z. B. Versicherung, Kulturgebühr, Zeitung). Jedes Add-on hat:
| Feld | Beschreibung |
|---|---|
| Name | Anzeigename auf der Rechnung |
| Betrag | Betrag in Cent |
| Bezug | plot (einmal pro Parzelle) oder member (einmal je aktivem Mitglied) |
| Gültig ab / bis | Optionaler Gültigkeitszeitraum. Das Add-on wird in jedem Jahr berechnet — und im Editor dort angeboten —, in das der Zeitraum hineinreicht, und zwar anteilig nach Tagen: „Gültig ab 01.07.2026“ kostet 2026 die Hälfte, „Gültig bis 31.12.2026“ den vollen Betrag. Nur ein Zeitraum, der das Jahr gar nicht berührt, wird nicht berechnet |
Ein Add-on wird in das Template aufgenommen, indem ein Positionseintrag mit "type": "addon" und der entsprechenden addon_id eingefügt wird. Im Editor geschieht das über Element hinzufügen → Gruppe Zusatzposten.
Eine Schritt-für-Schritt-Anleitung für Vereine — Zusatzposten anlegen, in die Vorlage des Jahres einfügen, Ergebnis prüfen — steht unter Zusatzposten auf die Rechnung bringen.
#Proratierung
Posten werden anteilig berechnet, wenn ein Mitglied das Pachtjahr nicht vollständig belegt oder eine Parzelle zeitweise zahlungsfrei gestellt ist. Es gibt zwei unabhängige Faktoren:
| Faktor | Basis |
|---|---|
membershipFactor |
Zeitraum, in dem das Mitglied die Parzelle als Erstbelegter nutzt |
paymentPeriodFactor |
Freistellungszeitraum der Parzelle (no_payment_from / no_payment_until) |
Der effektive Faktor ist min(membershipFactor, paymentPeriodFactor) und wird auf alle Geldposten angewendet. Der Arbeitsstunden-Ausgleich wird nicht proratiert — hier zählt nur die tatsächliche Fehlstundenzahl.
Weitere Details zur Berechnung finden Sie unter Rechnungen generieren.