Bericht über die API erstellen
Greifen Sie programmgesteuert auf die Finanzberichte von Stripe zu, um Ihre Abläufe für Abgleiche zu automatisieren.
Notiz
Mit der Stripe Data Pipeline können Sie jetzt Ihre Stripe-Daten und -Berichte mit wenigen Klicks automatisch an Snowflake oder Amazon Redshift senden. Mehr erfahren.
Die Finanzberichte im Dashboard umfassen Berichte, die als CSV-Dateien für verschiedene Aufgaben rund um Buchhaltung und Abgleich heruntergeladen werden können. Diese Berichte sind zudem über die API verfügbar, d. h. Sie können ihre automatische Ausführung planen oder sie immer dann ausführen, wenn Sie die zugehörigen Berichtsdateien für Buchhaltungszwecke benötigen.
Berichtsarten
Jeder Finanzbericht im Dashboard umfasst mehrere Berichte, die als CSV-Dateien heruntergeladen werden können. Alle verfügbaren Downloads für die folgenden Berichte sind auch über die API abrufbar:
Die CSV- und API-Formate bezüglich der Geldbeträge unterscheiden sich
Die CSV-Berichte stellen Geldbeträge in der größeren Währungseinheit als Dezimalzahl dar. Zum Beispiel werden 10 USD als Dollar und Cent (10.
) formatiert. Das unterscheidet sich von der Stripe API, in der die Beträge in der kleineren Währungseinheit (US-Cent) als Ganzzahl angegeben werden. In der API werden 10 USD als Cent (1000
) formatiert.
Parameter ausführen
Jeder Bericht enthält erforderliche und optionale Parameter, die Sie beim Erstellen einer Berichtsausführung angeben. Beachten Sie beim Erstellen von Berichten Folgendes:
- Für nahezu alle Berichtsarten müssen Sie die Ausführungsparameter
interval_
(inklusive) undstart interval_
(exklusive) als Unix-Zeitstempel angeben.end - Jede Ressource der jeweiligen Berichtsart verfügt über die Felder
data_
undavailable_ start data_
. Die API gibt den Fehler „Ungültige Anfrage“ (Statuscodeavailable_ end 400
) zurück, wenn Ihre Ausführung die folgenden Einschränkungen nicht erfüllt:- Die Werte
interval_
undstart interval_
müssen zwischenend data_
und (einschließlich)available_ start data_
liegen.available_ end - Der Wert
interval_
muss vorstart interval_
liegen (und darf nicht den gleichen Wert haben).end
- Die Werte
- Sie können Berichte in einer Zeitzone nur für einen
ReportType
mit dem Parametertimezone
herunterladen. Erstellen Sie dazu einReportRun
-Objekt und geben Sie die gewünschte Zeitzonenbezeichnung in der Zeitzonendatenbank an. Der Parametertimezone
ist optional und hat den Standardwert UTC, falls nichts anderes angegeben wird. Eine Liste der gültigen Zeitzonenwerte finden Sie in der Zeitzonendatenbank der IANA. - Mit den optionalen Parametern
currency
undreport_
lassen sich die Ergebnisse so filtern, dass nur Zeilen angezeigt werden, die den angegebenen Werten entsprechen.category - Berichte geben Standardspalten zurück. Für die meisten Berichtsarten können Sie die Auswahl und Sortierung der Spalten im Berichtsergebnis jedoch anpassen, indem Sie den optionalen Parameter
columns
mit einer Liste von Spaltenbezeichnungen mit angeben.
Verfügbarkeit der Daten
Stripe erstellt die Daten für Ihre Berichte zweimal täglich. Unter Berichtsoptionen finden Sie Informationen zur erwarteten Bearbeitungszeit und zur Datenverfügbarkeit für den jeweiligen Bericht.
Um den Zeitraum für die Verfügbarkeit der Daten für eine bestimmte Berichtsart programmgesteuert festzulegen, rufen Sie das entsprechende ReportType
-Objekt ab. Der Bericht Saldenübersicht hat zum Beispiel die ID balance.
, weshalb Sie das Objekt wie folgt abrufen können:
In der nachfolgenden Beispielantwort zeigen die Felder data_
und data_
den gesamten Zeitraum, in dem diese Berichtsart gültig ist. Allerdings werden die Berichte häufiger für einen kürzeren Zeitabschnitt innerhalb dieses Zeitraums erstellt:
{ "id": "balance.summary.1", "name": "Balance summary", "version": "1", "object": "reporting.report_type", "data_available_start": 1519862400, "data_available_end": 1517356800, "updated": 1517382720, }
Zeitstempel, wie zum Beispiel date_
, werden seit der Unix-Epoche in Sekunden gemessen. Beispielsweise steht 1519862400
für den Zeitstempel 2018-03-01 00:00
.
Benachrichtigung über die Verfügbarkeit neuer Daten
Sobald für eine Berichtsart neue Daten verfügbar sind, veröffentlicht Stripe das Ereignis reporting.
mit dem aktualisierten Objekt ReportType
. Sie müssen einen Webhook konfigurieren, der ausdrücklich den Empfang von reporting.
-Ereignissen unterstützt, um auf diese Ereignisse zugreifen zu können. Webhooks, die auf „alle Ereignisse“ warten, können diese Ereignisse nicht empfangen. Nachdem Sie ein entsprechendes Ereignis empfangen haben, können Sie anschließend den Bericht erstellen. Weitere Informationen finden Sie im empfohlenen Integrationsmuster.
Berichtsausführungen erstellen und aufrufen
Das API-Objekt ReportRun
stellt eine Instanz eines ReportType
dar, der mit bestimmten Parametern generiert wurde. Sehen Sie sich die Dokumentation für den Berichtstyp an, um eine Liste der erforderlichen und optionalen Parameter für diesen Typ zu erhalten. Beispielsweise können Sie den Bericht Guthabenänderung resultierend aus Aktivitäten für April 2020 wie folgt erstellen:
Wenn das Objekt erstellt wird, erscheint es zunächst mit status="pending"
:
{ "id": "frr_123", "object": "reporting.report_run", "livemode": true, "report_type": "balance_change_from_activity.itemized.3", "parameters": { "columns": [ "created", "reporting_category", "net" ], "interval_start": 1577865600, "interval_end": 1580544000, "timezone": "America/Los_Angeles" }, "created": 1580832900, "status": "pending", "result": null }
Nach der Erstellung des Berichts aktualisiert Stripe das Objekt, sodass es den status
succeeded
hat. Es hat außerdem ein verschachteltes result
-Objekt, das eine URL für den Zugriff auf die Datei mit Ihrem API-Schlüssel enthält. Wenn Sie zum Beispiel die oben genannte Berichtsausführung nach deren Abschluss abrufen, erhalten Sie folgende Antwort:
{ "id": "frr_123", "object": "reporting.report_run", "livemode": true, "report_type": "balance_change_from_activity.itemized.3", "parameters": { "columns": [ "created", "reporting_category", "net" ], "interval_start": 1577865600, "interval_end": 1580544000, "timezone": "America/Los_Angeles" }, "created": 1580832900, "status": "succeeded", "succeeded_at": 1580832960, "result": { "id": "file_xs8vrJzC", "object": "file", "url": "https://files.stripe.com/v1/files/file_xs8vrJzC/contents", "created": 1580832960, "purpose": "report_run", "size": 53075, "type": "csv" } }
Verwenden Sie zum Abrufen des Dateiinhalts Ihren API-Schlüssel, um auf die durch result.
angegebene Datei zuzugreifen:
Benachrichtigung über Abschluss der Berichtsausführung
Die meisten Ausführungen sind innerhalb weniger Minuten abgeschlossen. Allerdings können einige Ausführungen je nach Größe des Datensatzes und dem vom Bericht abgedeckten Zeitraum länger dauern.
Sobald eine angeforderte Berichterstellung abgeschlossen ist, übermittelt Stripe einen von zwei Webhooks:
- Der Webhook
reporting.
wird übermittelt, wenn die Ausführung erfolgreich abgeschlossen wurde.report_ run. succeeded - Der Webhook
reporting.
wird übermittelt, wenn die Ausführung fehlschlägt. (Dies sollte selten vorkommen, aber wir empfehlen, die Integrationen für diesen Fall genauso vorzubereiten wie für eine Antwortreport_ run. failed 500
.)
In beiden Fällen enthält die Webhook-Nutzlast das aktualisierte Objekt ReportRun
mit dem Status succeeded
bzw. failed
.
Empfohlenes Integrationsmuster für automatisierte Berichterstellung
Konfigurieren Sie einen Webhook, der ausdrücklich den Empfang von reporting.
-Ereignissen auswählt. Webhooks, die auf ’alle Ereignisse’ warten, können diese Ereignisse nicht empfangen.
- Der Webhook
reporting.
wird gesendet, sobald neue Daten für eine bestimmte Berichtsart verfügbar sind. Die Nutzlast enthält das aktualisierte Objektreport_ type. updated ReportType
. In der Regel erhalten Sie 20 bis 30 Webhooks pro Tag, und zwar einen für jede Berichtsart. (Für unterschiedliche Nutzer/innen sind verschiedene Berichte möglich.) - Erstellen Sie eine Berichtsausführung, nachdem Sie den Webhook
reporting.
für die gewünschte Berichtsart und den Bereich der Datenverfügbarkeit empfangen haben. Die Antwort enthält ein neuesreport_ type. updated ReportRun
-Objektund wird mit
status=pending` initialisiert. - Wenn ein Bericht erstellt wurde, wird der Webhook
reporting.
übermittelt. Dieser Webhook enthält das verschachtelte Feldreport_ run. succeeded result.
. (Wie oben erwähnt, wird im seltenen Fehlerfall stattdessen das Ereignisurl reporting.
übermittelt.)report_ run. failed - Greifen Sie mit Ihrem API-Schlüssel auf den Dateiinhalt unter
result.
zu.url