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 inmeta.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.
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 Parameterscope:
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.
PATCH änderst du einen oder beide Werte. Felder, die du weglässt, behalten ihren Wert.
Monate, Zeitraum und Zeitzone
Monate schreibst du alsYYYY-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:
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:"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 HinweisFORECAST_FAILED. Enthält der Zeitraum den laufenden oder spätere Monate, meldet meta.forecast das:
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).
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.