Belege
/api/v1/importsNur Importe, deren Ziel (Kontakte, Rechnungen, Belege) der Aufrufer lesen darf.
Jeder gültige API-Schlüssel oder OAuth-Token.
Query-Parameter
limitintegerAnzahl Einträge (1–100)1–100 · Standard: 25cursorstring`nextCursor` der vorherigen Seitemax. 500 Zeichen
Antwort 200
object"list"PflichtdataArray<ImportJob>PflichtidstringPflichtobject"import_job"Pflichtprovider"lexoffice" | "sevdesk" | "papierkram" | "generic"Pflichtentity"contacts" | "invoices" | "receipts"Pflichtstatus"uploaded" | "importing" | "completed" | "failed"PflichtfileNamestringPflichtdelimiterstringPflichtencodingstringPflichtrowCountintegerPflicht-9007199254740991–9007199254740991headersArray<string>PflichtmappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)fieldsArray<object>PflichtidstringPflichtlabelstringPflichttypestringPflichtrequiredbooleanPflicht
sampleArray<object>PflichtDie ersten Zeilen der Dateicountsobject | nullPflichttotalintegerPflicht-9007199254740991–9007199254740991createdintegerPflicht-9007199254740991–9007199254740991duplicatesintegerPflicht-9007199254740991–9007199254740991skippedintegerPflicht-9007199254740991–9007199254740991errorsintegerPflicht-9007199254740991–9007199254740991
errorsArray<object>PflichtrowintegerPflicht-9007199254740991–9007199254740991messagestringPflicht
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)completedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
hasMorebooleanPflichtnextCursorstring | nullPflicht
curl 'https://www.debt-flow.io/api/v1/imports' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "string",
"object": "import_job",
"provider": "lexoffice",
"entity": "contacts",
"status": "uploaded",
"fileName": "string",
"delimiter": "string",
"encoding": "string",
"rowCount": 0,
"headers": [
"string"
],
"mapping": {},
"fields": [
{
"id": "string",
"label": "string",
"type": "string",
"required": false
}
],
"sample": [
{}
],
"counts": {
"total": 0,
"created": 0,
"duplicates": 0,
"skipped": 0,
"errors": 0
},
"errors": [
{
"row": 0,
"message": "string"
}
],
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"completedAt": "2026-11-01T09:30:00.000Z"
}
],
"hasMore": false,
"nextCursor": "string"
}/api/v1/importsCSV-Export aus Lexware Office (lexoffice), sevDesk, Papierkram oder eigene CSV im Feld file, dazu provider und entity (contacts, invoices, receipts). Die Antwort enthält erkannte Spalten, einen Zuordnungsvorschlag (mapping) und die ersten Zeilen. Danach POST /imports/{id}/preview (Prüfung, Dubletten) und POST /imports/{id}/commit. Benötigt den Schreib-Scope des Ziels: contacts:write, invoices:write bzw. receipts:write.
Jeder gültige API-Schlüssel oder OAuth-Token.
Body (multipart/form-data)
filestring (binary)Pflichttext/csv, text/plain, application/vnd.ms-excel, application/csv, text/comma-separated-values, application/octet-stream, max. 5120 KBprovider"lexoffice" | "sevdesk" | "papierkram" | "generic"Pflichtentity"contacts" | "invoices" | "receipts"Pflicht
Antwort 201 · ImportJob
idstringPflichtobject"import_job"Pflichtprovider"lexoffice" | "sevdesk" | "papierkram" | "generic"Pflichtentity"contacts" | "invoices" | "receipts"Pflichtstatus"uploaded" | "importing" | "completed" | "failed"PflichtfileNamestringPflichtdelimiterstringPflichtencodingstringPflichtrowCountintegerPflicht-9007199254740991–9007199254740991headersArray<string>PflichtmappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)fieldsArray<object>PflichtidstringPflichtlabelstringPflichttypestringPflichtrequiredbooleanPflicht
sampleArray<object>PflichtDie ersten Zeilen der Dateicountsobject | nullPflichttotalintegerPflicht-9007199254740991–9007199254740991createdintegerPflicht-9007199254740991–9007199254740991duplicatesintegerPflicht-9007199254740991–9007199254740991skippedintegerPflicht-9007199254740991–9007199254740991errorsintegerPflicht-9007199254740991–9007199254740991
errorsArray<object>PflichtrowintegerPflicht-9007199254740991–9007199254740991messagestringPflicht
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)completedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/imports' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@datei' \
-F 'provider=…' \
-F 'entity=…'{
"id": "string",
"object": "import_job",
"provider": "lexoffice",
"entity": "contacts",
"status": "uploaded",
"fileName": "string",
"delimiter": "string",
"encoding": "string",
"rowCount": 0,
"headers": [
"string"
],
"mapping": {},
"fields": [
{
"id": "string",
"label": "string",
"type": "string",
"required": false
}
],
"sample": [
{}
],
"counts": {
"total": 0,
"created": 0,
"duplicates": 0,
"skipped": 0,
"errors": 0
},
"errors": [
{
"row": 0,
"message": "string"
}
],
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"completedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/imports/{id}Jeder gültige API-Schlüssel oder OAuth-Token.
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · ImportJob
idstringPflichtobject"import_job"Pflichtprovider"lexoffice" | "sevdesk" | "papierkram" | "generic"Pflichtentity"contacts" | "invoices" | "receipts"Pflichtstatus"uploaded" | "importing" | "completed" | "failed"PflichtfileNamestringPflichtdelimiterstringPflichtencodingstringPflichtrowCountintegerPflicht-9007199254740991–9007199254740991headersArray<string>PflichtmappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)fieldsArray<object>PflichtidstringPflichtlabelstringPflichttypestringPflichtrequiredbooleanPflicht
sampleArray<object>PflichtDie ersten Zeilen der Dateicountsobject | nullPflichttotalintegerPflicht-9007199254740991–9007199254740991createdintegerPflicht-9007199254740991–9007199254740991duplicatesintegerPflicht-9007199254740991–9007199254740991skippedintegerPflicht-9007199254740991–9007199254740991errorsintegerPflicht-9007199254740991–9007199254740991
errorsArray<object>PflichtrowintegerPflicht-9007199254740991–9007199254740991messagestringPflicht
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)completedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/imports/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "import_job",
"provider": "lexoffice",
"entity": "contacts",
"status": "uploaded",
"fileName": "string",
"delimiter": "string",
"encoding": "string",
"rowCount": 0,
"headers": [
"string"
],
"mapping": {},
"fields": [
{
"id": "string",
"label": "string",
"type": "string",
"required": false
}
],
"sample": [
{}
],
"counts": {
"total": 0,
"created": 0,
"duplicates": 0,
"skipped": 0,
"errors": 0
},
"errors": [
{
"row": 0,
"message": "string"
}
],
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"completedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/imports/{id}Löscht den Auftrag und die hochgeladene Datei. Bereits importierte Datensätze bleiben erhalten.
Jeder gültige API-Schlüssel oder OAuth-Token.
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 204
Erfolg, keine Antwort
curl -X DELETE 'https://www.debt-flow.io/api/v1/imports/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"/api/v1/imports/{id}/commitLegt die geprüften Datensätze an: Kontakte (Kunden/Lieferanten), Rechnungen (als festgeschriebene Altbelege mit Originalnummer, ohne Nummernkreis) oder Belege (Status review, ohne Datei). Fehlerhafte Zeilen werden übersprungen, Dubletten standardmäßig auch. Ein Auftrag kann nur einmal ausgeführt werden (409 import_completed).
Jeder gültige API-Schlüssel oder OAuth-Token.
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Header
Idempotency-KeystringEindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.max. 255 Zeichen
Body (JSON) · ImportCommitRequest
mappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)defaultRole"customer" | "supplier"Standard: "customer"skipDuplicatesbooleanDubletten überspringen (empfohlen)Standard: true
Antwort 200 · ImportJob
idstringPflichtobject"import_job"Pflichtprovider"lexoffice" | "sevdesk" | "papierkram" | "generic"Pflichtentity"contacts" | "invoices" | "receipts"Pflichtstatus"uploaded" | "importing" | "completed" | "failed"PflichtfileNamestringPflichtdelimiterstringPflichtencodingstringPflichtrowCountintegerPflicht-9007199254740991–9007199254740991headersArray<string>PflichtmappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)fieldsArray<object>PflichtidstringPflichtlabelstringPflichttypestringPflichtrequiredbooleanPflicht
sampleArray<object>PflichtDie ersten Zeilen der Dateicountsobject | nullPflichttotalintegerPflicht-9007199254740991–9007199254740991createdintegerPflicht-9007199254740991–9007199254740991duplicatesintegerPflicht-9007199254740991–9007199254740991skippedintegerPflicht-9007199254740991–9007199254740991errorsintegerPflicht-9007199254740991–9007199254740991
errorsArray<object>PflichtrowintegerPflicht-9007199254740991–9007199254740991messagestringPflicht
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)completedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
Mögliche Fehler: 400, 401, 403, 404, 409, 410, 422, 429, 500
curl -X POST 'https://www.debt-flow.io/api/v1/imports/ID/commit' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"mapping": {},
"defaultRole": "customer",
"skipDuplicates": true
}'{
"id": "string",
"object": "import_job",
"provider": "lexoffice",
"entity": "contacts",
"status": "uploaded",
"fileName": "string",
"delimiter": "string",
"encoding": "string",
"rowCount": 0,
"headers": [
"string"
],
"mapping": {},
"fields": [
{
"id": "string",
"label": "string",
"type": "string",
"required": false
}
],
"sample": [
{}
],
"counts": {
"total": 0,
"created": 0,
"duplicates": 0,
"skipped": 0,
"errors": 0
},
"errors": [
{
"row": 0,
"message": "string"
}
],
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"completedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/imports/{id}/previewWendet die Spaltenzuordnung an und prüft jede Zeile: new, duplicate (bereits vorhanden oder doppelt in der Datei) oder error. Fehler und Dubletten werden zuerst gelistet. Speichert die Zuordnung am Auftrag; ändert sonst nichts.
Jeder gültige API-Schlüssel oder OAuth-Token.
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Body (JSON) · ImportPreviewRequest
mappingobjectPflichtZielfeld → Spaltenüberschrift der CSV-Datei (null = nicht übernehmen)defaultRole"customer" | "supplier"Nur Kontakte: Kontaktart, wenn keine Spalte zugeordnet istStandard: "customer"limitinteger1–500 · Standard: 200
Antwort 200 · ImportPreview
object"import_preview"PflichtcountsobjectPflichttotalintegerPflicht-9007199254740991–9007199254740991newintegerPflicht-9007199254740991–9007199254740991duplicatesintegerPflicht-9007199254740991–9007199254740991errorsintegerPflicht-9007199254740991–9007199254740991
rowsArray<object>PflichtrowintegerPflichtZeilennummer in der Datei (1 = erste Datenzeile)-9007199254740991–9007199254740991status"new" | "duplicate" | "error"PflichtrecordobjectPflichtduplicateOfobject | nullPflichttypestringPflichtidstring | nullPflichtlabelstringPflicht
messagesArray<string>Pflicht
curl -X POST 'https://www.debt-flow.io/api/v1/imports/ID/preview' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"mapping": {},
"defaultRole": "customer",
"limit": 200
}'{
"object": "import_preview",
"counts": {
"total": 0,
"new": 0,
"duplicates": 0,
"errors": 0
},
"rows": [
{
"row": 0,
"status": "new",
"record": {},
"duplicateOf": {
"type": "string",
"id": "string",
"label": "string"
},
"messages": [
"string"
]
}
]
}/api/v1/receipt-categoriesKategorien für category eines Belegs mit Konten-Vorschlag nach DATEV-Standardkontenrahmen SKR03 und SKR04.
Berechtigung: receipts:read
Antwort 200 · ReceiptCategoryList
object"list"PflichtdataArray<object>PflichtidenumPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otherlabelstringPflichthintstringPflichtskr03stringPflichtskr04stringPflicht
curl 'https://www.debt-flow.io/api/v1/receipt-categories' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "goods",
"label": "string",
"hint": "string",
"skr03": "string",
"skr04": "string"
}
]
}/api/v1/receipt-inboxPersönliche Adresse belege-<kennung>@in.debt-flow.io. Anhänge (PDF, Bilder, E-Rechnungen) an diese Adresse werden als Belege angelegt.
Berechtigung: receipts:read
Antwort 200 · ReceiptInbox
object"receipt_inbox"Pflichtaddressstring | nullPflichtbelege-<kennung>@… – null, solange nicht eingerichtetactivebooleanPflichtallowedSendersArray<string>PflichtNur diese Absender (E-Mail oder @domain) annehmen; leer = allereceivedCountintegerPflicht-9007199254740991–9007199254740991lastReceivedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/receipt-inbox' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "receipt_inbox",
"address": "string",
"active": false,
"allowedSenders": [
"string"
],
"receivedCount": 0,
"lastReceivedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipt-inboxactive: true richtet die Adresse beim ersten Mal ein. allowedSenders beschränkt den Empfang auf bestimmte Absender (E-Mail oder @domain.de).
Berechtigung: receipts:write
Body (JSON) · ReceiptInboxUpdate
activebooleanallowedSendersArray<string>
Antwort 200 · ReceiptInbox
object"receipt_inbox"Pflichtaddressstring | nullPflichtbelege-<kennung>@… – null, solange nicht eingerichtetactivebooleanPflichtallowedSendersArray<string>PflichtNur diese Absender (E-Mail oder @domain) annehmen; leer = allereceivedCountintegerPflicht-9007199254740991–9007199254740991lastReceivedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
curl -X PATCH 'https://www.debt-flow.io/api/v1/receipt-inbox' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"active": false,
"allowedSenders": [
"string"
]
}'{
"object": "receipt_inbox",
"address": "string",
"active": false,
"allowedSenders": [
"string"
],
"receivedCount": 0,
"lastReceivedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipt-inbox/rotateVergibt eine neue Kennung. Die bisherige Adresse nimmt sofort keine Belege mehr an (z. B. bei Spam).
Berechtigung: receipts:write
Header
Idempotency-KeystringEindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.max. 255 Zeichen
Antwort 200 · ReceiptInbox
object"receipt_inbox"Pflichtaddressstring | nullPflichtbelege-<kennung>@… – null, solange nicht eingerichtetactivebooleanPflichtallowedSendersArray<string>PflichtNur diese Absender (E-Mail oder @domain) annehmen; leer = allereceivedCountintegerPflicht-9007199254740991–9007199254740991lastReceivedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/receipt-inbox/rotate' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "receipt_inbox",
"address": "string",
"active": false,
"allowedSenders": [
"string"
],
"receivedCount": 0,
"lastReceivedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receiptsNeueste zuerst. Filter nach Status (inbox, processing, review, booked), Herkunft und Zahlungsstatus.
Berechtigung: receipts:read
Query-Parameter
status"inbox" | "processing" | "review" | "booked"source"upload" | "app" | "email" | "import"paymentStatus"open" | "paid"limitintegerAnzahl Einträge (1–100)1–100 · Standard: 25cursorstring`nextCursor` der vorherigen Seitemax. 500 Zeichen
Antwort 200
object"list"PflichtdataArray<Receipt>PflichtidstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
hasMorebooleanPflichtnextCursorstring | nullPflicht
curl 'https://www.debt-flow.io/api/v1/receipts' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": null,
"contentType": null,
"size": null,
"sha256": null
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": null,
"netCents": null,
"taxCents": null
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": null,
"error": "string",
"attempts": 0,
"processedAt": null
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}
],
"hasMore": false,
"nextCursor": "string"
}/api/v1/receiptsDatei (PDF, Bild oder E-Rechnung als XML/ZUGFeRD-PDF) als multipart/form-data im Feld file. E-Rechnungen werden strukturiert gelesen, alle anderen per Texterkennung (Lieferant, Datum, Beträge je Steuersatz, Kategorie). Mit process=sync (Standard) enthält die Antwort bereits die erkannten Werte; bei async den Status über GET /receipts/{id} abfragen.
Berechtigung: receipts:write
Body (multipart/form-data)
filestring (binary)Pflichtapplication/pdf, image/jpeg, image/png, image/webp, image/heic, image/heif, application/xml, text/xml, max. 9216 KBnotesstringmax. 2000 Zeichenprocess"sync" | "async" | "none"Texterkennung: sync (abwarten), async (Hintergrund) oder noneStandard: "sync"
Antwort 201 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/receipts' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@datei' \
-F 'notes=…' \
-F 'process=…'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/{id}Berechtigung: receipts:read
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/receipts/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/{id}Nur übergebene Felder werden geändert. Beträge über taxLines (je Steuersatz) oder grossCents + taxRate; Summen berechnet der Server. Gebuchte Belege sind festgeschrieben – dann sind nur paymentStatus und paidAt änderbar (sonst 409 document_locked).
Berechtigung: receipts:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Body (JSON) · ReceiptUpdate
supplierContactIdstring | nullmax. 128 ZeichensupplierNamestring | nullmax. 200 ZeichensupplierVatIdstring | null | ""supplierIbanstring | nulldocumentNumberstring | nullmax. 80 ZeichendocumentDatestring (date) | nullDatum (YYYY-MM-DD)dueDatestring (date) | nullDatum (YYYY-MM-DD)taxLinesArray<ReceiptTaxLine>Netto/Steuer je Steuersatz; Summen werden daraus berechnettaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
grossCentsintegerNur ohne taxLines: Bruttobetrag; mit taxRate wird Netto/Steuer berechnet-100000000000–100000000000taxRatenumberSteuersatz in Prozent (19, 7, 0 …)0–100taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Steuerbehandlung des Belegscategoryenum | nullAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otherdescriptionstring | nullmax. 500 Zeichennotesstring | nullmax. 2000 ZeichenpaymentStatus"open" | "paid"paidAtstring (date) | nullDatum (YYYY-MM-DD)
Antwort 200 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X PATCH 'https://www.debt-flow.io/api/v1/receipts/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"grossCents": 0,
"taxRate": 0,
"taxTreatment": "regular",
"category": "goods",
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01"
}'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/{id}Nur ungebuchte Belege. Gebuchte Belege unterliegen der Aufbewahrungspflicht (409 document_locked).
Berechtigung: receipts:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 204
Erfolg, keine Antwort
curl -X DELETE 'https://www.debt-flow.io/api/v1/receipts/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"/api/v1/receipts/{id}/bookVergibt die interne Belegnummer (Nummernkreis receipt, lückenlos) und schreibt den Beleg fest (GoBD). Danach sind nur Zahlungsstatus und Bankzuordnung änderbar. Voraussetzung: Belegdatum, Lieferant, Betrag und Kategorie. Bei Dubletten-Verdacht 409 possible_duplicate – mit confirmDuplicate: true trotzdem buchen.
Berechtigung: receipts:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Header
Idempotency-KeystringEindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.max. 255 Zeichen
Body (JSON)
confirmDuplicatebooleanTrotz Dubletten-Hinweis buchen
Antwort 200 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/receipts/ID/book' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"confirmDuplicate": false
}'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/{id}/fileOriginaldatei unverändert (SHA-256 siehe file.sha256). XML wird als Download ausgeliefert.
Berechtigung: receipts:read
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200
Datei (application/octet-stream).
curl 'https://www.debt-flow.io/api/v1/receipts/ID/file' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"/api/v1/receipts/{id}/fileNur ungebuchte Belege, z. B. für importierte Belege ohne Datei. Die Erkennung wird danach erneut eingeplant.
Berechtigung: receipts:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Body (multipart/form-data)
filestring (binary)Pflichtapplication/pdf, image/jpeg, image/png, image/webp, image/heic, image/heif, application/xml, text/xml, max. 9216 KB
Antwort 200 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
Mögliche Fehler: 400, 401, 403, 404, 409, 413, 415, 429, 500
curl -X PUT 'https://www.debt-flow.io/api/v1/receipts/ID/file' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@datei'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/{id}/processStartet die Erkennung (E-Rechnung bzw. Texterkennung) erneut. Mit overwrite: true werden auch bereits ausgefüllte Felder überschrieben. Bei ausgeschöpftem KI-Kontingent bleibt ocr.status auf pending und die Erkennung wird automatisch wiederholt.
Berechtigung: receipts:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Body (JSON)
overwritebooleanStandard: false
Antwort 200 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/receipts/ID/process' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"overwrite": false
}'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/receipts/photosFür Mobile-Apps: Foto (JPEG, PNG, WebP, HEIC) im Feld file. Antwortet sofort mit 202 und Status inbox; die Texterkennung läuft im Hintergrund (Ereignis receipt.processed bzw. GET /receipts/{id}). Empfehlung: Foto auf max. 2500 px lange Kante verkleinern, JPEG-Qualität 80 %.
Berechtigung: receipts:write
Body (multipart/form-data)
filestring (binary)Pflichtimage/jpeg, image/png, image/webp, image/heic, image/heif, max. 9216 KBnotesstringmax. 2000 ZeichencapturedAtstring (date-time)Aufnahmezeitpunkt in der App
Antwort 202 · Receipt
idstringPflichtobject"receipt"Pflichtstatus"inbox" | "processing" | "review" | "booked"Pflichtsource"upload" | "app" | "email" | "import"Pflichtnumberstring | nullPflichtInterne Belegnummer (Nummernkreis „receipt“), vergeben beim BuchenfileReceiptFile | nullPflichtOriginaldatei; null bei importierten Belegen ohne DateifileNamestringPflichtcontentTypestringPflichtsizeintegerPflicht-9007199254740991–9007199254740991sha256stringPflichtSHA-256 des Originals (GoBD-Nachweis, Dublettenprüfung)
supplierContactIdstring | nullPflichtsupplierNamestring | nullPflichtsupplierVatIdstring | nullPflichtsupplierIbanstring | nullPflichtdocumentNumberstring | nullPflichtRechnungsnummer des LieferantendocumentDatestring (date) | nullPflichtDatum (YYYY-MM-DD)dueDatestring (date) | nullPflichtDatum (YYYY-MM-DD)currency"EUR"PflichttotalsReceiptTotalsPflichtnetCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000grossCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxLinesArray<ReceiptTaxLine>PflichttaxRatenumberPflichtSteuersatz in Prozent (19, 7, 0 …)0–100netCentsintegerPflichtBetrag in Cent-100000000000–100000000000taxCentsintegerPflichtBetrag in Cent-100000000000–100000000000
taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"PflichtSteuerbehandlung des Belegscategoryenum | nullPflichtAusgabenkategorie (siehe GET /receipt-categories)Werte: goods, goods_reduced, subcontractors, rent, utilities, cleaning, insurance, fees, vehicle_insurance, vehicle_running, vehicle_repairs, vehicle_leasing, advertising, gifts, entertainment, travel, travel_fares, travel_lodging, packaging, repairs, software, postage, phone, internet, office_supplies, literature, training, legal_advice, bookkeeping, equipment_rent, bank_fees, tools, low_value_assets, otheraccountsobject | nullPflichtKonten-Vorschlag zur Kategorie (SKR03/SKR04)skr03stringPflichtskr04stringPflicht
descriptionstring | nullPflichtnotesstring | nullPflichtpaymentStatus"open" | "paid"PflichtpaidAtstring (date) | nullPflichtDatum (YYYY-MM-DD)bankTransactionIdstring | nullPflichteinvoiceobject | nullPflichtErkannte E-Rechnung (strukturierte Daten statt Texterkennung)format"zugferd" | "xrechnung_cii" | "xrechnung_ubl"Pflichtprofilestring | nullPflicht
ocrReceiptOcrPflichtstatus"pending" | "running" | "done" | "failed" | "skipped"Pflichtenginestring | nullPflichtgemini-… (Texterkennung) oder einvoice (strukturierte E-Rechnung)confidencenumber | nullPflicht0–1errorstring | nullPflichtattemptsintegerPflicht-9007199254740991–9007199254740991processedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)
duplicateOfstring | nullPflichtID eines möglicherweise identischen Belegsemailobject | nullPflichtHerkunft bei Eingang per E-MailfromstringPflichtsubjectstringPflichtreceivedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
importobject | nullPflichtproviderstringPflichtjobIdstringPflichtrowintegerPflicht-9007199254740991–9007199254740991
lockedbooleanPflichtbookedAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/receipts/photos' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@datei' \
-F 'notes=…' \
-F 'capturedAt=…'{
"id": "string",
"object": "receipt",
"status": "inbox",
"source": "upload",
"number": "string",
"file": {
"fileName": "string",
"contentType": "string",
"size": 0,
"sha256": "string"
},
"supplierContactId": "string",
"supplierName": "string",
"supplierVatId": "string",
"supplierIban": "string",
"documentNumber": "string",
"documentDate": "2026-11-01",
"dueDate": "2026-11-01",
"currency": "EUR",
"totals": {
"netCents": 0,
"taxCents": 0,
"grossCents": 0
},
"taxLines": [
{
"taxRate": 0,
"netCents": 0,
"taxCents": 0
}
],
"taxTreatment": "regular",
"category": "goods",
"accounts": {
"skr03": "string",
"skr04": "string"
},
"description": "string",
"notes": "string",
"paymentStatus": "open",
"paidAt": "2026-11-01",
"bankTransactionId": "string",
"einvoice": {
"format": "zugferd",
"profile": "string"
},
"ocr": {
"status": "pending",
"engine": "string",
"confidence": 0,
"error": "string",
"attempts": 0,
"processedAt": "2026-11-01T09:30:00.000Z"
},
"duplicateOf": "string",
"email": {
"from": "string",
"subject": "string",
"receivedAt": "2026-11-01T09:30:00.000Z"
},
"import": {
"provider": "string",
"jobId": "string",
"row": 0
},
"locked": false,
"bookedAt": "2026-11-01T09:30:00.000Z",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}