Was macht Finanzplanung?
Regeln
- MRR-Berechnung: Summe aller monatlichen Werte aktiver Abonnements – Jahrespläne geteilt durch 12, einmalige Gebühren ausschließen
- ARR: MRR * 12 – beide Werte im Dashboard anzeigen, MRR für monatliche Trends, ARR für Jahresplanung verwenden
- MRR-Komponenten: Erfasse neuen MRR, Expansions-MRR (Upgrades), Kontraktions-MRR (Downgrades), Abwanderungs-MRR (Kündigungen), Reaktivierungs-MRR – als Wasserfalldiagramm darstellen
- Burn-Rate: (Anfangsliquidität – Endliquidität) / Monate – monatlich berechnen, Laufzeit in Monaten bei aktueller Verbrauchsrate anzeigen
- Umsatz-Dashboard: MRR, ARR, MRR-Wachstumsrate (MoM%), Nettoumsatzerhaltung, Gesamtkunden anzeigen – täglich aktualisieren
- Finanzprognosen: 3 Szenarien modellieren (konservativ, Basis, optimistisch) – je nach Wachstumsrate und Abwanderungsrate variieren, 12–24 Monate prognostizieren
- Währungsverarbeitung: Alle Beträge in Cent (ganze Zahlen) speichern – niemals Fließkommazahlen für Geld verwenden – mit
Intl.NumberFormatanzeigen - Datumsbereiche: Standardmäßig letzte 12 Monate, benutzerdefinierte Bereiche zulassen – nach Monat für Trends aggregieren, nach Tag für aktuelle Aktivitäten
Datenmodell des Dashboards
CREATE TABLE revenue_events (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
type TEXT NOT NULL, -- 'new' | 'expansion' | 'contraction' | 'churn' | 'reactivation'
amount_cents INTEGER NOT NULL,
customer_id UUID NOT NULL,
occurred_at DATE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
MRR pro Monat aggregieren: SELECT date_trunc('month', occurred_at), type, SUM(amount_cents) FROM revenue_events GROUP BY 1, 2.
Vermeiden
- Fließkommazahlen für Geld – stattdessen überall ganze Zahlen in Cent verwenden
- MRR ohne Aufteilung in Komponenten zu zählen – du musst wissen, warum sich der MRR geändert hat
- Nur monatliche Granularität – tägliche Ereignisse speichern, für die Anzeige aggregieren
- Kontraktions-MRR zu ignorieren – Downgrades sind frühe Abwanderungssignale