Zum Hauptinhalt springen
Jede Berichtsseite der App lädt genau einen Datensatz. Mit denselben Endpunkten baust du eigene Auswertungen, ein Board-Dashboard oder einen Abgleich mit deinem Data Warehouse. Die Zahlen sind identisch mit denen der App, weil beide aus derselben Berechnung lesen.

Übersicht

Alle Endpunkte brauchen analytics:read. Jeder Datensatz enthält das meta-Objekt mit dem Stand der Berechnung und meta.forecast.

Gemeinsame Parameter

Weitere Parameter: month wählt bei recurring den Monat des MRR-Waterfalls (ohne Angabe der letzte abgeschlossene Monat des Zeitraums). compareSegmentId und granularity (month, quarter) gelten für customers. page, pageSize (50, höchstens 100) und search blättern und suchen in der Tabelle Umsatz je Kunde und Produkt.

Die MRR-Tabelle

GET /api/analytics/mrr-financials liefert die Tabelle, die in der App unter Wiederkehrender Umsatz steht. months gibt die Spalten vor, jede Zeile unter rows hat genau einen Wert je Monat in derselben Reihenfolge.
Die Zeilen im Überblick: Die Zahlen prüfen sich gegenseitig. Im September gilt 51.846,00 + 1.976,00 + 1.281,70 + 0,00 − 350,90 − 1.338,00 = 53.414,80 für den Waterfall und 42.103,00 + 17.766,28 + 0,00 = 59.869,28 für den Zahlungseingang. Im August erklärt die Ursache not_yet_billed die ganze Differenz Vertrag zu Rechnung von 79,00 €. totals ist die Summenspalte. Bewegungen und Zahlungen werden über den Zeitraum addiert: Neu ergibt von Juli bis September 3.961,00 €. Bestände wie mrr_eop, accounted_mrr und receivables_eop zeigen den letzten Monat, mrr_bop den ersten. Raten haben keine Summe. reasons teilt die Bewegungen nach Ursachen auf, mit Vorzeichen. reasonLabels nennt für jeden Schlüssel aus reasons den deutschen Namen, den auch die Karte Ursachen der Bewegungen und die Excel-Bücher zeigen. Jede Ursache ist eine eigene Unterzeile: Hinzugefügte und entfernte Produkte werden nie verrechnet, und „Sonstiges” gibt es nur für einen unbekannten Schlüssel. Eine Ursache kann gegenläufig sein: Im Juli enthält die Expansion einen beginnenden Rabatt über −63,80 €.

Wiederkehrender Umsatz

GET /api/analytics/finance/recurring liefert alles für die Seite Wiederkehrender Umsatz in einer Antwort.
Im Beispiel ist mrrWire auf die MRR-Zeilen gekürzt, backlog.events auf drei Ereignisse, definitions auf zwei Einträge ohne Änderungsverlauf und movementMonths auf den gewählten Monat. Die API liefert mrrWire vollständig in der Form der MRR-Tabelle oben, movementMonths für jeden Monat des Zeitraums und den ganzen Definitionskatalog.
valueKind sagt, wie ein Kachelwert zu lesen ist: money, rate, ratio, count oder days. better gibt die günstige Richtung an. Für DSO ist das down. Reicht der Zeitraum bis in den laufenden Monat, steht dessen bisheriger Wert in current, siehe Der laufende Monat. Die Accounted-MRR-Kachel vergleicht nur abgeschlossene Monate, ihr current.delta ist immer null. mrrCells.mrr_eop zeigt im August den Nachtrag: Festgehalten sind 51.646,00 €, heute sind es 51.846,00 €. Die Differenz von +200,00 € mit der Ursache segment_added betrifft ein Konto.

Kundenbasis

GET /api/analytics/finance/customers liefert unter customers sieben Bereiche: Ausschnitt der Antwort für den Zeitraum bis September 2026:
ARPA ist MRR je zahlendem Konto: 53.414,80 € / 53 Konten = 1.007,83 €. Tragen zwei verschiedene Kunden oder Produkte in einer Liste denselben Namen, hängt die API die Nummer an, zum Beispiel „Fynn Pro (P-10001)”.

Liquidität

GET /api/analytics/finance/liquidity liefert die Zahlungs- und Forderungssicht. overviewWire hat die Form der Finanzübersicht (Cashflow, Forderungsalter, Forderungstabelle), liquidity die Kennzahlen, das Zahlungsverhalten und den Abgleich Vertrag und Rechnung. accountingClosed sagt je Monat, ob die Buchhaltung ihn abgeschlossen hat. Ausschnitt liquidity für Juli bis September 2026:
Netto-Cash gilt für den Zeitraum und trägt dessen letzten Monat. Offene und überfällige Forderungen gelten für heute und tragen den laufenden Monat mit monthComplete: false. Abgleich Vertrag und Rechnung. reconciliation enthält jede Position und jeden Monat, in dem Vertrag und Accounted MRR auseinanderliegen, also genau die Bestandteile der Zeile Differenz Vertrag zu Rechnung der MRR-Tabelle. monthTotals ist je Monat gleich der Zelle billing_gap der MRR-Tabelle, totalDifference ihre Summe: −149,00 + 79,00 + 0,00 = −70,00 €. Die Eichenhof Senioren GmbH hat im Juli 149,00 € im Vertrag und 298,00 € auf der Rechnung RE-2026-0278, die Havelland Reinigung GmbH im August 79,00 € im Vertrag und noch keine Rechnung. Die Erklärung eines Hinweises öffnest du mit GET /api/analytics/mrr-financials/findings/{findingId}. Ausschnitt overviewWire.ageing, das Forderungsalter heute:
Die Buckets ergeben den Gesamtbetrag 28.656,90 €. Alles außer not_due ist überfällig: 6.922,26 €. Zahlungsverhalten und DSO gelten immer für die ganze Organisation. Mit einem Segment steht das in meta.filtersNotApplied.

Umsatz

GET /api/analytics/finance/revenue zeigt den abgerechneten Nettoumsatz aller Klassen nach dem Monat, in dem die Belege ausgestellt wurden: byCountry, byProduct, topProducts (die zehn größten), revenueDetails, arrAtPeriodEnd und byCustomerAndProduct. Gutschriften und Stornos zählen im Monat ihrer Ausstellung negativ. Ausschnitt mit revenueDetails und arrAtPeriodEnd für Juli bis September 2026:
revenueDetails teilt den Umsatz je Währung und Monat in wiederkehrend, einmalig und variabel. total ist ihre Summe, im September 53.866,90 + 1.470,00 + 1.377,00 = 56.713,90 €. totals.total über den Zeitraum ist gleich der Summe aller Länder und aller Produkte. arrAtPeriodEnd.total ist dieselbe ARR wie auf allen anderen Seiten: MRR am Monatsende mal 12, im September 640.977,60 €. committed hat denselben Wert. variable ist eine eigene Reihe, der variable Umsatz der letzten zwölf Monate, und gehört nicht zur ARR. details wiederholt diese Reihen für jede Währung der Organisation. byCustomerAndProduct enthält die erste Seite der Kundentabelle. Weitere Seiten lädst du über GET /api/analytics/finance/revenue/customers mit denselben Filtern und page. Die Reihenfolge ist stabil: Kunden sind absteigend nach Nettoumsatz sortiert, gleiche Beträge nach Kunden-ID. accountingClosed markiert Monate, deren Buchungen abgeschlossen sind. Die Umsatzzahlen folgen den Belegdaten und können sich auch nach dem Abschluss noch ändern, zum Beispiel durch eine spätere Gutschrift. Eine solche Änderung erzeugt den Hinweis POST_CLOSE_CHANGE.

Finanzübersicht

GET /api/analytics/finance/overview liefert Cashflow, MRR-Bewegungen mit Vorzeichen, Umsatz nach Klasse (wiederkehrend, einmalig, variabel), offene Forderungen je Monatsende, das Forderungsalter und die Forderungstabelle. Die Liquiditätsseite enthält denselben Datensatz als overviewWire. Ausschnitt cashflow:
Der Zahlungseingang zählt abgewickelte Zahlungen nach Zahldatum. Die drei Teile ergeben ihn: im August 45.130,08 € für Rechnungen des Monats, 26.851,64 € für Rechnungen anderer Monate und 0,00 € ohne Rechnung, zusammen 71.981,72 €. forecastBilled ist für vergangene Monate null. Meldet meta.forecast.incomplete eine unvollständige Prognose, ist jeder Prognosewert eine Untergrenze.

Weiter

Drill-downs

Die Zeilen hinter einer Zelle der Datensätze.

Excel-Exporte

Jede Seite als Excel-Buch mit allen Rohdaten.