Belegaufteilungen per API abrufen
FLOWWER stellt umfangreiche Schnittstellen bereit, über die sich Daten aus Dokumenten automatisiert auslesen lassen.
Dies ermöglicht Integrationen mit nachgelagerten Systemen, wie zum Beispiel Finanz- oder Reporting-Software.
Ein häufiges Szenario ist der Abruf der Belegaufteilung.
Dabei geht es um die Aufschlüsselung eines Dokuments in einzelne Buchungspositionen mit Konten, Kostenstellen und Steuerinformationen.
So können die erfassten Daten direkt weiterverarbeitet werden, ohne dass ein manueller Export notwendig ist.
Swagger-Dokumentation
Für jede FLOWWER-Kontokennung steht eine interaktive API-Dokumentation (Swagger) zur Verfügung:
https://<flowwer-kontokennung>.flowwer.de/swagger/
Dort sind alle Endpunkte, Parameter und Beispiele aufgeführt.
Über den Button Authorize oben rechts können Anfragen auch direkt getestet werden.
API-Key via API-Benutzer einrichten
Für API-Zugriffe wird ein API-Benutzer verwendet. Dieses spezielle Benutzerkonto liefert automatisch einen dauerhaften API-Key.
Weitere Informationen: API-Benutzer
Vorteile eines API-Benutzers
- Eigenständige Identität im System – erleichtert Audit-Logs und Nachvollziehbarkeit
- Langfristig gültige API-Keys – ideal für automatisierte Prozesse
- Einschränkbare Berechtigungen – nur die notwendigen Rechte vergeben
- Keine GUI-Anmeldung möglich – verhindert versehentliche UI-Nutzung
- Kein menschliches Eingreifen erforderlich für Automatisierungen
Einrichtung
- In der Benutzerverwaltung einen API-Benutzer anlegen.
- Der API-Key wird automatisch erzeugt und dem Benutzer zugewiesen.
- Der Key muss als HTTP-Header übermittelt werden:
X-FLOWWER-ApiKey: <API_KEY>
Endpoint für Belegaufteilungen
GET /api/v1/documents/{DocumentId}/receiptsplits
- Basis-URL:
https://<flowwer-kontokennung>.flowwer.de
- Pfadparameter:
DocumentId
– Dokument-ID in FLOWWER (int64
), siehe Dokumenteigenschaften
- Authentifizierung: API-Key im Header
X-FLOWWER-ApiKey: <API_KEY>
Beispielaufruf
curl -s
-H "Accept: application/json"
-H "X-FLOWWER-ApiKey: <API_KEY>"
"https://beispiel.flowwer.de/api/v1/documents/123456/receiptsplits"
Beispielantwort
{
"documentNumber": "RE-2025-00123",
"invoiceNumber": "2025-00123",
"supplierName": "Muster GmbH",
"invoiceDate": "2025-08-01",
"documentId": 123456,
"documentName": "2025-08_Muster_Rechnung_00123.pdf",
"documentKind": "Invoice",
"currentStage": "Approved",
"paymentState": "TransferIsPrepared",
"paymentMethod": "SEPA",
"documentReceiptSplits": [
{
"splitId": 98765,
"groupName": "Allgemeine Kosten",
"account": "4210",
"costCenter": "1000",
"costUnit": "MKT",
"amountNet": 100.00,
"amountTax": 19.00,
"amountGross": 119.00,
"taxRate": 19.0,
"taxCode": "DE19",
"text": "Monatspauschale"
}
]
}
Struktur der Antwort
DocumentWithReceiptSplits
documentNumber
– Belegnummer in FLOWWERinvoiceNumber
– RechnungsnummersupplierName
– Name des LieferanteninvoiceDate
– RechnungsdatumdocumentId
– interne Dokument-IDdocumentName
– DateinamedocumentKind
– Dokumentart (z. B. Invoice)currentStage
– aktuelle Floww-StufepaymentState
– ZahlungsstatuspaymentMethod
– ZahlungsmethodedocumentReceiptSplits
– Liste der Aufteilungszeilen
DocumentReceiptSplit
splitId
– ID der AufteilungszeilegroupName
– Name der Aufteilungsgruppeaccount
– SachkontocostCenter
– KostenstellecostUnit
– KostenträgeramountNet
– NettobetragamountTax
– SteuerbetragamountGross
– BruttobetragtaxRate
– SteuersatztaxCode
– Steuerkennzeichentext
– Buchungstext
Fehlercodes
401 Unauthorized
– API-Key fehlt oder ungültig403 Missing permission
– keine Berechtigung für das Dokument404 Not Found
– Dokument nicht vorhanden oder nicht zugreifbar
Minimalbeispiel in C#
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
var client = new HttpClient
{
BaseAddress = new Uri("https://beispiel.flowwer.de")
};
client.DefaultRequestHeaders.Add("X-FLOWWER-ApiKey", "<API_KEY>");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
long documentId = 123456;
var response = await client.GetAsync($"/api/v1/documents/{documentId}/receiptsplits");
string json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);