Introduction
Lesender Zugriff auf deine Flowly-Daten, z. B. deine Umsätze.
Mit der Flowly API fragst du deine eigenen Daten aus Flowly ab. Jeder Request liest ausschließlich aus deiner Datenbank.
Limit
Pro Konto sind 100 Requests pro Tag möglich (gleitend über 24 Stunden ab dem ersten Request).
Jede Antwort enthält die Header X-RateLimit-Limit und X-RateLimit-Remaining.
Ist das Limit erreicht, antwortet die API mit 429 Too Many Requests und dem Header Retry-After (Sekunden).
Fehler
| Status | Bedeutung |
|---|---|
| 401 | Token fehlt oder ist ungültig |
| 403 | Kein aktives Abo |
| 422 | Ungültige Parameter, Details unter errors |
| 429 | Tageslimit erreicht |
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {DEIN_API_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
Deinen Token erzeugst du im Kundenbereich unter API mit Token erzeugen. Er wird nur einmal angezeigt; erzeugst du einen neuen, ist der alte sofort ungültig.
Transaktionen
Umsätze deiner Bankkonten.
Umsätze auflisten
requires authentication
Liefert deine Umsätze, neueste zuerst (nach Buchungstag). Die Liste ist in Seiten aufgeteilt; über links.next kommst du zur nächsten Seite. Alle Filter lassen sich kombinieren.
Example request:
curl --request GET \
--get "https://develop.flowly.roemmich.eu/api/v1/transactions?limit=50&page=1&search=rewe&bank_account_id=01JB8Y7D2C5H8P1RZ3N6K9V4QS&from=2026-10-01&until=2026-10-31&direction=expense&category_id=12&without_logo=" \
--header "Authorization: Bearer {DEIN_API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://develop.flowly.roemmich.eu/api/v1/transactions"
);
const params = {
"limit": "50",
"page": "1",
"search": "rewe",
"bank_account_id": "01JB8Y7D2C5H8P1RZ3N6K9V4QS",
"from": "2026-10-01",
"until": "2026-10-31",
"direction": "expense",
"category_id": "12",
"without_logo": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {DEIN_API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://develop.flowly.roemmich.eu/api/v1/transactions';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {DEIN_API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '50',
'page' => '1',
'search' => 'rewe',
'bank_account_id' => '01JB8Y7D2C5H8P1RZ3N6K9V4QS',
'from' => '2026-10-01',
'until' => '2026-10-31',
'direction' => 'expense',
'category_id' => '12',
'without_logo' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://develop.flowly.roemmich.eu/api/v1/transactions'
params = {
'limit': '50',
'page': '1',
'search': 'rewe',
'bank_account_id': '01JB8Y7D2C5H8P1RZ3N6K9V4QS',
'from': '2026-10-01',
'until': '2026-10-31',
'direction': 'expense',
'category_id': '12',
'without_logo': '0',
}
headers = {
'Authorization': 'Bearer {DEIN_API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Eine Seite mit Umsätzen):
{
"data": [
{
"id": "01JB8Z3K6Q2W9V0XG7M4TQ5R1N",
"bank_account_id": "01JB8Y7D2C5H8P1RZ3N6K9V4QS",
"status": "booked",
"booking_date": "2026-10-20",
"value_date": "2026-10-20",
"amount": "-23.49",
"currency": "EUR",
"name": "REWE Markt GmbH",
"merchant": "REWE",
"creditor": {
"name": "REWE Markt GmbH",
"iban": "DE89370400440532013000"
},
"debtor": {
"name": "Max Mustermann",
"iban": "DE02120300000000202051"
},
"remittance_information": "REWE SAGT DANKE 12345",
"booking_text": "Lastschrift",
"mandate_id": null,
"creditor_id": null,
"category": {
"id": 12,
"name": "Lebensmittel",
"assigned_by": "rule"
}
},
{
"id": "01JB8Z2F1M7T4X0VJ6C9B3R8KD",
"bank_account_id": "01JB8Y7D2C5H8P1RZ3N6K9V4QS",
"status": "booked",
"booking_date": "2026-10-15",
"value_date": "2026-10-15",
"amount": "3250.00",
"currency": "EUR",
"name": "Beispiel GmbH",
"merchant": null,
"creditor": {
"name": "Max Mustermann",
"iban": "DE02120300000000202051"
},
"debtor": {
"name": "Beispiel GmbH",
"iban": "DE12500105170648489890"
},
"remittance_information": "Gehalt Oktober 2026",
"booking_text": "Gutschrift",
"mandate_id": null,
"creditor_id": null,
"category": null
}
],
"links": {
"first": "https://flowly.example/api/v1/transactions?limit=2&page=1",
"last": "https://flowly.example/api/v1/transactions?limit=2&page=21",
"prev": null,
"next": "https://flowly.example/api/v1/transactions?limit=2&page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 21,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "https://flowly.example/api/v1/transactions?limit=2&page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": "https://flowly.example/api/v1/transactions?limit=2&page=2",
"label": "2",
"page": 2,
"active": false
},
{
"url": "https://flowly.example/api/v1/transactions?limit=2&page=2",
"label": "Next »",
"page": 2,
"active": false
}
],
"path": "https://flowly.example/api/v1/transactions",
"per_page": 2,
"to": 2,
"total": 42
}
}
Example response (401, Token fehlt oder ist ungültig):
{
"message": "Unauthenticated."
}
Example response (403, Kein aktives Abo):
{
"message": "Kein aktives Abo."
}
Example response (422, Ungültige Parameter):
{
"message": "The limit field must not be greater than 500.",
"errors": {
"limit": [
"The limit field must not be greater than 500."
]
}
}
Example response (429, Tageslimit erreicht):
{
"message": "Too Many Attempts."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
data
object
id
string
ID des Umsatzes (ULID).
bank_account_id
string
ID des Kontos, auf dem der Umsatz gebucht ist.
status
string
booked gebucht, pending vorgemerkt.
bookedpending
booking_date
string
Buchungstag, JJJJ-MM-TT.
value_date
string
Wertstellung, JJJJ-MM-TT.
amount
string
Betrag als Dezimalzahl mit Punkt; negativ bei Ausgaben, positiv bei Eingängen.
currency
string
Währung nach ISO 4217, z. B. EUR.
name
string
Gegenpartei: bei Ausgaben der Empfänger, bei Eingängen der Auftraggeber, bei Kartenzahlungen der Händler.
merchant
string
Von Flowly erkannter Händler, sonst null.
creditor
object
Empfänger mit name und iban.
debtor
object
Auftraggeber mit name und iban.
remittance_information
string
Verwendungszweck.
booking_text
string
Buchungstext der Bank, z. B. Lastschrift.
mandate_id
string
Mandatsreferenz bei Lastschriften.
creditor_id
string
Gläubiger-ID bei Lastschriften.
category
object
Kategorie mit id, name und assigned_by (rule, manual oder fallback); null, solange keine zugeordnet ist.
links
object
URLs zur ersten, letzten, vorigen und nächsten Seite.
meta
object
Seitenangaben: current_page, last_page, per_page, total usw.