Zum Hauptinhalt springen
Die Finanzberichte-API liefert dieselben Zahlen, die du in der App unter Berichte siehst: MRR und seine Bewegungen, Accounted MRR, Zahlungen, Forderungen, Umsatz, die Kundenbasis und Monatsabschlüsse. Diese Seite erklärt die Begriffe, die in allen Antworten vorkommen. Die Beispiele auf allen Seiten dieser Gruppe stammen aus derselben Beispielorganisation wie die Benutzerhandbücher der Berichte, der Taktwerk GmbH, und passen zueinander.

Zugriff

Du authentifizierst jede Anfrage mit einem API-Token deiner Organisation, wie unter Authentifizierung beschrieben. Die Finanzberichte schaltet Fynn für deine Organisation frei. Bis dahin antwortet jeder Endpunkt dieser API mit 403 und dem Typ feature-not-available, siehe Fehler.

Wie die Zahlen entstehen

Fynn berechnet die Kennzahlen einer Organisation stündlich im Hintergrund. Die Berechnung liest die Verträge (Abonnements, Positionen, Zeitpläne, Preisverläufe, Rabatte, Pausen und Kündigungen), die abgeschlossenen Belege, die Zahlungen und die Abrechnungsprognose. Daraus entsteht für jeden Monat und jede Position ein Monatsbeitrag, und aus den Beiträgen entstehen Bestände, Bewegungen und alle weiteren Kennzahlen. Jede Antwort nennt in meta.asOf den Zeitpunkt der Berechnung, aus der ihre Zahlen stammen. Die Berechnung repariert keine Daten. Wenn sie eine Annahme treffen muss, zum Beispiel weil der Preisverlauf einer Position fehlt, rechnet sie mit einer festen Regel weiter und hält das als Hinweis fest. So bleibt jede Zahl nachvollziehbar: Über die Drill-downs erreichst du die Zeilen hinter jeder Zelle, und ihre Summe ergibt genau den Wert der Zelle. Am 1. jedes Monats um 05:00 Uhr in der Zeitzone deiner Organisation hält Fynn die MRR-Zahlen und die Geldwerte des Vormonats als Snapshot fest. Spätere Korrekturen an einem abgeschlossenen Monat ändern die laufende Berechnung, aber nie den Snapshot. Die Differenz heißt Nachtrag und ist mit Ursache abrufbar.

Vier Zahlen, vier Quellen

Vier Kennzahlen beschreiben Umsatz aus unterschiedlichen Quellen. Sie weichen deshalb voneinander ab, und das ist gewollt. Ein Jahresvertrag über 1.200,00 € netto zeigt den Unterschied. Die Rechnung wird im Januar abgeschlossen und im Februar bezahlt, der Leistungszeitraum ist das Kalenderjahr.
  • MRR: 100,00 € in jedem Monat des Vertrags, weil der Vertrag auf den Monat umgerechnet wird.
  • Accounted MRR: 100,00 € in jedem Monat, weil die Rechnung nach 30/360 auf ihren Leistungszeitraum verteilt wird (30 von 360 Tagen je Monat).
  • Zahlungseingang: 1.428,00 € brutto im Februar, dem Monat der Zahlung.
  • Umsatz: 1.200,00 € im Januar, dem Monat, in dem die Rechnung abgeschlossen wurde.
MRR und Accounted MRR liegen nahe beieinander, solange die Rechnungen den Verträgen folgen. Im September 2026 sind sie bei der Taktwerk GmbH gleich. Die Differenz steht als eigene Zeile billing_gap (Differenz Vertrag zu Rechnung) in der MRR-Tabelle, gerechnet als Vertrag minus Rechnung und nach Ursachen aufgeteilt. Ein positiver Wert heißt: Es wurde weniger abgerechnet, als der Vertrag vorsieht. Im August 2026 sind das +79,00 €, weil eine Rechnung über 79,00 € noch aussteht (not_yet_billed). Im Juli 2026 sind es −149,00 €, weil eine Rechnung 149,00 € über dem Vertrag liegt (price_mismatch).
Accounted MRR folgt den Rechnungen, nicht den Erlösbuchungen. Die Buchhaltung kann eine Gutschrift in einem anderen Monat erfassen als die Berechnung. Für den Jahresabschluss gilt immer die Buchhaltung.

Konten und Ebenen

Bewegungen (Neu, Expansion, Kontraktion, Verloren, Reaktiviert) entstehen je Konto. Welche Einheit ein Konto ist, bestimmt die Ebene im Parameter scope: Die Ebene ändert keine Summen. MRR am Monatsende ist auf jeder Ebene gleich. Sie ändert, wie sich Änderungen auf Bewegungen und Kontenzahlen verteilen. Ein Beispiel: Ein Kunde hat zwei Abonnements. Beim ersten steigt die Menge um 100,00 €, das zweite über 60,00 € endet. Mit scope=subscription siehst du eine Expansion über 100,00 € und einen Verlust über 60,00 €. Mit scope=customer bleibt ein Konto mit einer Expansion über 40,00 €, deren Ursachen die beiden Änderungen sind. Fynn berechnet immer alle vier Ebenen. Welche gilt, wenn eine Anfrage keinen scope mitschickt, legst du in den Einstellungen fest. Die Taktwerk GmbH zählt je Kunde. Dort steht auch der Schwellenwert für Nachträge.
Mit PATCH änderst du einen oder beide Werte. Felder, die du weglässt, behalten ihren Wert.

Monate, Zeitraum und Zeitzone

Monate schreibst du als YYYY-MM zwischen 1900 und 2099. Ein Monat beginnt und endet in der Zeitzone deiner Organisation. MRR ist der Bestand in der letzten Sekunde des Monats. Ein Zeitraum umfasst höchstens 36 Monate, und from darf nicht nach to liegen. Beträge werden nie zwischen Währungen umgerechnet: Jede Antwort enthält genau eine Währung. Verträge mit anderen Intervallen werden auf einen Monat mit 30 Tagen umgerechnet. Ein Wochenpreis von 70,00 € ergibt 300,00 € MRR, weil eine Woche 7/30 eines Monats ist. Für Monate nach dem laufenden gibt es noch keine Zahlungen. Solche Werte sind null. Bestände wie offene Forderungen schreibt die Berechnung dort als Prognose mit den heute offenen Rechnungen fort. Ab welchem Monat das gilt, steht in meta.projectedFrom.

Der laufende Monat

Jede Kennzahl-Kachel sagt, für welchen Monat ihr Wert gilt: asOfMonth nennt den Monat, monthComplete ist false, solange er läuft. Die Kacheln des Wiederkehrenden Umsatzes zeigen immer den letzten abgeschlossenen Monat, wie der MRR-Waterfall. Reicht der Zeitraum bis in den laufenden Monat, steht dessen bisheriger Wert daneben in current. Am 01.10.2026 mit to=2026-10 sieht die MRR-Kachel so aus:
Der September ist abgeschlossen und zeigt 53.414,80 €. Der Oktober läuft und steht bisher bei 53.530,80 €, weil ein Rabatt über 116,00 € endet. Endet der Zeitraum vor dem laufenden Monat, ist current null. Kacheln mit dem Bezug „heute”, etwa die offenen Forderungen, tragen den laufenden Monat mit monthComplete: false.

Beträge, Raten und Vorzeichen

Beträge sind exakte Dezimalzahlen als Text mit zwei Nachkommastellen, nie Gleitkommazahlen. Meist stehen sie in einem Objekt mit Währung:
Raten und Anteile haben sechs Nachkommastellen: "0.032575" sind 3,2575 %. Die Umsatz-Churn-Rate im September ist (350,90 + 1.338,00) / 51.846,00 = "0.032575". Die API formatiert nie Prozente. Die Differenz Vertrag zu Rechnung rechnet überall gleich: Vertrag minus Rechnung, in der MRR-Tabelle, im Abgleich der Liquiditätsseite, in den Drill-downs und in Excel.

Das meta-Objekt

Jeder Datensatz enthält ein meta-Objekt mit dem Kontext der Antwort:

Unvollständige Rechnungsprognose

Scheitert die Abrechnungsprognose für ein Abonnement, fehlt es in jedem Prognosemonat, und es entsteht der Hinweis FORECAST_FAILED. Enthält der Zeitraum den laufenden oder spätere Monate, meldet meta.forecast das:
Ein Prognosewert ist dann eine Untergrenze, keine Aussage „keine Rechnungen”. Zeige ihn als unvollständig an, nie als 0,00 €. Die Excel-Bücher schreiben die Zeile als „Rechnungsprognose (brutto), unvollständig (2 Abos ohne Prognose)”.

Abgebrochene Berechnung

Jede Berechnung prüft ihre Zahlen, bevor sie sie speichert, zum Beispiel dass der Zahlungseingang einer Rechnung ihren Bruttobetrag nicht übersteigt. Schlägt eine Prüfung fehl, wird die Berechnung abgebrochen und nichts davon gespeichert. Die Antworten zeigen weiter die Zahlen der letzten erfolgreichen Berechnung (dataBuildId, asOf), und meta.build beschreibt den Abbruch:
Die einzelnen Abweichungen liest du über die Detail-Kennzahl build_failure. Die nächste erfolgreiche Berechnung setzt status wieder auf succeeded. Die App zeigt einen Abbruch als Hinweis „Berechnung abgebrochen” über den Finanzseiten.

Snapshots und Nachträge

Ein Snapshot hält die Zahlen eines abgeschlossenen Monats fest: MRR zu Beginn und Ende, die fünf Bewegungen und ihre Ursachen, Kohorten, Kundenkonzentration, gebundenen MRR und seit dem 28.09.2026 auch Zahlungseingang, Zahlungsausgang, offene Forderungen und DSO. Version 1 entsteht automatisch am 1. des Folgemonats. Weitere Versionen legst du bewusst an, mit einem Grund. Ändert sich ein festgehaltener Wert später, zeigt die laufende Berechnung den neuen Wert und der Snapshot den alten. Bei der Taktwerk GmbH hielt der Abschluss für August 2026 einen MRR von 51.646,00 € fest. Am 04.09. wurde ein Abo mit Start im August angelegt, seitdem hat der August 51.846,00 €. Der Nachtrag beträgt +200,00 €. Details stehen unter Snapshots.

Hinweise

Hinweise (Findings) melden, wo die Berechnung eine Annahme getroffen hat oder Daten auffällig sind. Jeder Hinweis hat einen Code, eine Stufe und eine Erklärung. Die Liste lässt sich nach severity, code, customerId und month filtern und ist seitenweise abrufbar (25 je Seite, höchstens 200).
Im Beispiel ist catalog auf drei der Codes gekürzt:
codeLabel ist der deutsche Name des Codes. counts zählt alle Hinweise ohne Filter. catalog enthält jeden Code mit deutschem Namen und der Annahme, die die Berechnung für ihn trifft. Diesen Katalog drucken auch die Excel-Bücher. GET /api/analytics/mrr-financials/findings/{id} liefert einen Hinweis mit seiner vollständigen Erklärung: die betroffenen Datensätze, die Fakten, und bei BILLED_VS_CONTRACT_DIFF jeden geprüften Monat mit Vertrag, Abrechnung, Toleranz und den Rechnungspositionen. Drei Codes betreffen die Abrechnung, nicht den Vertrag: Vier Codes betreffen offene Posten und Guthaben eines Kunden:
Die App nutzt einen weiteren Endpunkt, der nicht Teil der öffentlichen API ist: das Anstoßen einer Neuberechnung (/api/analytics/mrr-financials/rebuild). Er kann sich ohne Ankündigung ändern. Die Zahlen werden ohnehin stündlich neu berechnet.

Weiter

Datensätze

Die Datensätze der vier Berichtsseiten und die MRR-Tabelle.

Drill-downs

Die Zeilen hinter jeder Zelle.

Snapshots

Monatsabschlüsse, Versionen und Nachträge.

Definitionen

Der versionierte Katalog aller Kennzahlen und das Glossar.