> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fynn.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Excel-Exporte

> Die Excel-Bücher der Finanzberichte per API laden: Routen, Parameter, Blätter, Dateinamen, Zellformate und das Verhalten bei großen Datenmengen.

Jede Berichtsseite gibt es als Excel-Buch. Ein Buch enthält die Zahlen jeder Karte der Seite auf einem eigenen Blatt und danach die Zeilen hinter diesen Zahlen ohne Zeilenlimit. Damit lässt sich jede Zahl in der Tabellenkalkulation nachrechnen, zum Beispiel mit einer Pivot-Tabelle über die Rohdaten.

## Routen

| Route | Parameter | Dateiname |
| - | - | - |
| `GET /api/analytics/finance/recurring/excel` | wie `recurring`, dazu `snapshot` | `recurring_taktwerk_2026-07_2026-09.xlsx` |
| `GET /api/analytics/finance/customers/excel` | wie `customers` | `customers_taktwerk_2026-07_2026-09.xlsx` |
| `GET /api/analytics/finance/liquidity/excel` | wie `liquidity` | `liquidity_taktwerk_2026-07_2026-09.xlsx` |
| `GET /api/analytics/finance/revenue/excel` | wie `revenue`; `page` und `pageSize` werden ignoriert | `revenue_taktwerk_2026-07_2026-09.xlsx` |
| `GET /api/analytics/mrr-financials/export/excel` | wie die MRR-Tabelle, dazu `includeDetails` | `mrr-financials_taktwerk_2026-07_2026-09_invoice_address_EUR.xlsx` |
| `GET /api/analytics/mrr-financials/findings/export/excel` | `severity`, `code`, `customerId`, `month` | `mrr-financials-findings_taktwerk.xlsx` |

Alle Routen brauchen `analytics:read`. Der Dateiname beginnt mit der Seite, dann folgen der Kurzname deiner Organisation und der Zeitraum.

```bash theme={null}
curl -OJ "https://coreapi.io/api/analytics/finance/recurring/excel?from=2026-07&to=2026-09&month=2026-09" \
  -H "Authorization: Bearer api_DEIN_TOKEN"
```

```http theme={null}
HTTP/1.1 200 OK
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename="recurring_taktwerk_2026-07_2026-09.xlsx"
```

## Blätter

Jedes Seitenbuch beginnt mit dem Blatt Info und endet mit Definitionen. Info nennt Organisation, Zeitraum, Währung, Ebene, Segment und Filter, nicht angewendete Filter, den Stand zum Abschluss, den Zeitpunkt der Berechnung und die Version des Definitionskatalogs. Die Blätter dazwischen folgen der Reihenfolge der Seite. Blätter mit „Rohdaten" im Namen enthalten die Zeilen der Drill-downs für den ganzen Zeitraum.

> **Wiederkehrender Umsatz (16 Blätter)**
>
> Info, Kennzahlen, MRR-Waterfall (der Monat aus `month`), Ursachen der Bewegungen, Bewegungen je Monat, Backlog, MRR-Tabelle, Nachträge, Rohdaten MRR-Positionen, Rohdaten Vertrag zu Rechnung, Rohdaten Accounted MRR, Rohdaten Backlog-Ereignisse, Rohdaten Nachträge, Rohdaten Berechnungsabbruch, Rohdaten Hinweise, Definitionen.
>
> Kennzahlen zeigt je Kachel den letzten abgeschlossenen Monat und, wenn der Zeitraum bis in den laufenden Monat reicht, dessen bisherigen Wert in eigenen Spalten (Laufender Monat, Wert laufender Monat, Veränderung laufender Monat). In der MRR-Tabelle steht unter jeder Bewegung eine Unterzeile je Ursache, mit denselben Namen wie in `reasonLabels`.
>
> Rohdaten MRR-Positionen enthält jede Position mit MRR zu Beginn oder am Ende eines Monats, mit der Bewegung ihres Kontos. Rohdaten Accounted MRR enthält jede wiederkehrende Rechnungsposition mit Leistungszeitraum, Tagen im Monat, Tagen gesamt und Betrag.

> **Kundenbasis (14 Blätter)**
>
> Info, Kennzahlen, NRR und GRR, Logos je Monat, Kohorten (das Dreieck wie auf der Seite), Kohorten Liste (Kohorte, Alter, Monat, Konten, MRR, Bindung), Konzentration, Verloren nach Grund, Segmentvergleich, Rohdaten Konten je Monat, Rohdaten Kohorten-Zellen, Rohdaten Logos, Rohdaten Verloren nach Grund, Definitionen.

> **Liquidität (21 Blätter)**
>
> Info, Kennzahlen, Cashflow (mit Rechnungsprognose, Summen und Monatsdurchschnitten), Altersstruktur, Forderungstrend, Zahlungsverhalten, Abstimmung, Forderungen, Hinweise, Rohdaten Rechnungen, Rohdaten Zahlungen, Rohdaten Erstattung zurück, Rohdaten Korrekturen, Rohdaten Verrechnungen, Rohdaten Prognose, Rohdaten Offen zum Monatsende, Rohdaten Guthaben an Kunden, Rohdaten Altersstruktur, Rohdaten Zahlungsverhalten, Rohdaten Hinweise, Definitionen.
>
> Abstimmung enthält jede Zeile des Abgleichs Vertrag und Rechnung mit Vertrag, Rechnung, Differenz (Vertrag minus Rechnung), der Aufteilung nach Ursachen, den Belegen und der Markierung „Unter Toleranz", darunter die Summen je Monat. Sie sind gleich der Zeile Differenz Vertrag zu Rechnung der MRR-Tabelle. Rohdaten Prognose nennt je erwarteter Rechnung die Art, den Abrechnungszeitraum von und bis und „Abrechenbar seit". Ist die Prognose unvollständig, heißt die Zeile „Rechnungsprognose (brutto), unvollständig" mit der Zahl der Abos ohne Prognose.
>
> Rohdaten Rechnungen hat eine Zeile je Rechnung und Zeile der Forderungstabelle. Eine Pivot-Tabelle über Zeile und Monat ergibt die Tabelle Forderungen.

> **Umsatz (10 Blätter)**
>
> Info, Umsatz je Monat, Umsatz je Land, ARR am Periodenende, Umsatz je Produkt, Top-Produkte, Umsatzdetails (jede Währung), Umsatz je Kunde und Produkt (alle Seiten der Kundentabelle, eingegrenzt durch `search`), Rohdaten Umsatzzeilen, Definitionen.
>
> ARR am Periodenende hat die Spalten Monat, ARR (MRR × 12) und „Variabel, 12 Monate". Umsatzdetails zeigt je Monat Wiederkehrend (abgerechnet), Einmalig, Variabel (Monat) und Umsatz netto (abgerechnet) mit Summenspalte. Die Summe ist gleich der Summe je Land und je Produkt.

> **MRR-Tabelle**
>
> MRR financials (die Tabelle mit Monaten als Spalten, Summenspalte und einer Unterzeile je Ursache unter jeder Bewegung), Data quality, Definitions. Mit `includeDetails=1` kommen Movements, Non-recurring und Cashflow dazu. Diese Zeilenblätter enden bei 50.000 Zeilen und sagen das in ihrer letzten Zeile. Für vollständige Zeilen nutze die Seitenbücher.

> **Hinweise**
>
> Ein Blatt je Code, eine Zeile je Hinweis: Kunde, Abonnement, Position, Produkt, die Annahme, eine Spalte je Fakt und die Abschnitte der Erklärung. Bei `BILLED_VS_CONTRACT_DIFF` stehen Vertrag, Abrechnung, Differenz, Toleranz und Tage als Zahlen darin. Ein Blatt endet bei 50.000 Zeilen.

## Zellen

| Inhalt | Format |
| - | - |
| Beträge | Zahlen, keine Texte, im Format `#,##0.00` |
| Raten | Zahlen im Format `0.00%` |
| Zeilenbeträge der Rohdaten | mit sechs Nachkommastellen gespeichert, auf Cent angezeigt |
| Datumsangaben | echte Datumswerte in der Zeitzone deiner Organisation |
| Monate | Text im Format `YYYY-MM` |
| Namen, Nummern, Codes | immer Textzellen |

Weil Namen immer Textzellen sind, bleibt ein Kunde mit dem Namen `=1+1` ein Text und wird nie als Formel ausgeführt. Die sechs Nachkommastellen sorgen dafür, dass die Summe der Rohdaten-Zeilen genau die Zahl auf dem Kartenblatt ergibt. Ein Beispiel: 2.980,00 € Jahrespreis ergeben 248,333333 € je Monat. Auf Cent gerundete Zeilen würden je Zelle um bis zu einen Cent abweichen.

## Stand zum Abschluss

Mit `snapshot=1` schreibt das Buch Wiederkehrender Umsatz die MRR-Tabelle so, wie sie zum jeweiligen Monatsabschluss festgehalten wurde. Festgehaltene Zeilen zeigen die Werte der neuesten Snapshot-Version. Monate ohne Snapshot bleiben leer und haben keine Summe. Die Ursachen-Unterzeilen der Bewegungen fehlen, weil sie aktuelle Werte wären. Alle anderen Zeilen behalten ihre aktuellen Werte.

Das Blatt Info nennt die verwendeten Versionen (zum Beispiel „Abschlüsse: 2026-08: v2") und die nicht festgehaltenen Zeilen. Gibt es im Zeitraum keinen Snapshot oder ist ein Segment gewählt, bleibt die Tabelle beim aktuellen Stand, und Info sagt das. Snapshots gelten immer für die ganze Organisation.

## Große Datenmengen

Die Rohdaten haben kein Zeilenlimit. Die API rechnet zuerst den Datensatz der Seite und beginnt dann mit dem Schreiben der Datei. Die Rohdaten folgen während des Downloads. Bei den meisten Organisationen dauert das wenige Sekunden. Eine Million Rohdaten-Zeilen brauchen etwa vier Minuten. Setze das Timeout deines Clients entsprechend.

Fehler wie `403` oder `422` kommen immer vor dem ersten Byte der Datei, als normale JSON-Antwort. Bricht der Download später ab, ist die Datei unvollständig, obwohl der Status `200` war. Eine Excel-Datei ohne gültiges Ende lässt sich nicht öffnen. Lade sie dann erneut.
