Zum Inhalt springen

Bank

Bankkonten, Umsatzimport (CSV/CAMT) und Zuordnung.
GET/api/v1/bank-accounts

Alle Bankkonten mit Saldo (Anfangssaldo + importierte Umsätze) und Schlusssaldo des letzten CAMT-Auszugs.

Berechtigung: banking:read

Query-Parameter

  • includeArchived"true" | "false"
    auch archivierte Konten
  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<BankAccountResource>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • namestringPflicht
    • ibanstringPflicht
    • bicstring | nullPflicht
    • bankNamestring | nullPflicht
    • currency"EUR"Pflicht
    • openingBalanceCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • openingDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • balanceCentsintegerPflicht
      Anfangssaldo + Summe aller importierten Umsätze
      -100000000000–100000000000
    • statementBalanceCentsinteger | nullPflicht
      Schlusssaldo laut letztem CAMT-Auszug
      -100000000000–100000000000
    • statementBalanceDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • transactionCountintegerPflicht
      -9007199254740991–9007199254740991
    • lastImportAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • lastBookingDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • connectionBankConnection | nullPflicht
      • providerstringPflicht
        Anbieter der Live-Anbindung (PSD2/FinTS), z. B. "finapi"
      • status"pending" | "active" | "expired" | "error"Pflicht
      • consentExpiresAtstring (date-time) | nullPflicht
        Zeitpunkt (ISO 8601)
      • lastSyncAtstring (date-time) | nullPflicht
        Zeitpunkt (ISO 8601)
    • archivedbooleanPflicht
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-accounts' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "name": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string",
      "currency": "EUR",
      "openingBalanceCents": 0,
      "openingDate": "2026-11-01",
      "balanceCents": 0,
      "statementBalanceCents": 0,
      "statementBalanceDate": "2026-11-01",
      "transactionCount": 0,
      "lastImportAt": "2026-11-01T09:30:00.000Z",
      "lastBookingDate": "2026-11-01",
      "connection": {
        "provider": null,
        "status": null,
        "consentExpiresAt": null,
        "lastSyncAt": null
      },
      "archived": false,
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/bank-accounts

Legt ein Bankkonto an (IBAN mit Prüfziffer). Je IBAN ist nur ein aktives Konto erlaubt.

Berechtigung: banking:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · BankAccountCreate

  • namestringPflicht
    Anzeigename, z. B. "Geschäftskonto Sparkasse"
    max. 80 Zeichen
  • ibanstringPflicht
  • bicstring | ""
  • bankNamestring
    max. 80 Zeichen
  • openingBalanceCentsinteger
    Betrag in Cent
    -100000000000–100000000000 · Standard: 0
  • openingDatestring (date)
    Datum (YYYY-MM-DD)

Antwort 201 · BankAccountResource

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • ibanstringPflicht
  • bicstring | nullPflicht
  • bankNamestring | nullPflicht
  • currency"EUR"Pflicht
  • openingBalanceCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • balanceCentsintegerPflicht
    Anfangssaldo + Summe aller importierten Umsätze
    -100000000000–100000000000
  • statementBalanceCentsinteger | nullPflicht
    Schlusssaldo laut letztem CAMT-Auszug
    -100000000000–100000000000
  • statementBalanceDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • transactionCountintegerPflicht
    -9007199254740991–9007199254740991
  • lastImportAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • lastBookingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • connectionBankConnection | nullPflicht
    • providerstringPflicht
      Anbieter der Live-Anbindung (PSD2/FinTS), z. B. "finapi"
    • status"pending" | "active" | "expired" | "error"Pflicht
    • consentExpiresAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • lastSyncAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • archivedbooleanPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-accounts' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "iban": "string",
  "bic": "string",
  "bankName": "string",
  "openingBalanceCents": 0,
  "openingDate": "2026-11-01"
}'
Antwort 201
{
  "id": "string",
  "name": "string",
  "iban": "string",
  "bic": "string",
  "bankName": "string",
  "currency": "EUR",
  "openingBalanceCents": 0,
  "openingDate": "2026-11-01",
  "balanceCents": 0,
  "statementBalanceCents": 0,
  "statementBalanceDate": "2026-11-01",
  "transactionCount": 0,
  "lastImportAt": "2026-11-01T09:30:00.000Z",
  "lastBookingDate": "2026-11-01",
  "connection": {
    "provider": "string",
    "status": "pending",
    "consentExpiresAt": "2026-11-01T09:30:00.000Z",
    "lastSyncAt": "2026-11-01T09:30:00.000Z"
  },
  "archived": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/bank-accounts/{id}

Berechtigung: banking:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · BankAccountResource

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • ibanstringPflicht
  • bicstring | nullPflicht
  • bankNamestring | nullPflicht
  • currency"EUR"Pflicht
  • openingBalanceCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • balanceCentsintegerPflicht
    Anfangssaldo + Summe aller importierten Umsätze
    -100000000000–100000000000
  • statementBalanceCentsinteger | nullPflicht
    Schlusssaldo laut letztem CAMT-Auszug
    -100000000000–100000000000
  • statementBalanceDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • transactionCountintegerPflicht
    -9007199254740991–9007199254740991
  • lastImportAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • lastBookingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • connectionBankConnection | nullPflicht
    • providerstringPflicht
      Anbieter der Live-Anbindung (PSD2/FinTS), z. B. "finapi"
    • status"pending" | "active" | "expired" | "error"Pflicht
    • consentExpiresAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • lastSyncAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • archivedbooleanPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-accounts/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "name": "string",
  "iban": "string",
  "bic": "string",
  "bankName": "string",
  "currency": "EUR",
  "openingBalanceCents": 0,
  "openingDate": "2026-11-01",
  "balanceCents": 0,
  "statementBalanceCents": 0,
  "statementBalanceDate": "2026-11-01",
  "transactionCount": 0,
  "lastImportAt": "2026-11-01T09:30:00.000Z",
  "lastBookingDate": "2026-11-01",
  "connection": {
    "provider": "string",
    "status": "pending",
    "consentExpiresAt": "2026-11-01T09:30:00.000Z",
    "lastSyncAt": "2026-11-01T09:30:00.000Z"
  },
  "archived": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/bank-accounts/{id}

Name, BIC, Bank, Anfangssaldo oder Archivierung ändern. Die IBAN ist nicht änderbar.

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Body (JSON) · BankAccountUpdate

  • namestring
    max. 80 Zeichen
  • bicstring | ""
  • bankNamestring
    max. 80 Zeichen
  • openingBalanceCentsinteger
    Betrag in Cent
    -100000000000–100000000000
  • openingDatestring (date) | ""
  • archivedboolean

Antwort 200 · BankAccountResource

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • ibanstringPflicht
  • bicstring | nullPflicht
  • bankNamestring | nullPflicht
  • currency"EUR"Pflicht
  • openingBalanceCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • balanceCentsintegerPflicht
    Anfangssaldo + Summe aller importierten Umsätze
    -100000000000–100000000000
  • statementBalanceCentsinteger | nullPflicht
    Schlusssaldo laut letztem CAMT-Auszug
    -100000000000–100000000000
  • statementBalanceDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • transactionCountintegerPflicht
    -9007199254740991–9007199254740991
  • lastImportAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • lastBookingDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • connectionBankConnection | nullPflicht
    • providerstringPflicht
      Anbieter der Live-Anbindung (PSD2/FinTS), z. B. "finapi"
    • status"pending" | "active" | "expired" | "error"Pflicht
    • consentExpiresAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • lastSyncAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • archivedbooleanPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/bank-accounts/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "bic": "string",
  "bankName": "string",
  "openingBalanceCents": 0,
  "openingDate": "2026-11-01",
  "archived": false
}'
Antwort 200
{
  "id": "string",
  "name": "string",
  "iban": "string",
  "bic": "string",
  "bankName": "string",
  "currency": "EUR",
  "openingBalanceCents": 0,
  "openingDate": "2026-11-01",
  "balanceCents": 0,
  "statementBalanceCents": 0,
  "statementBalanceDate": "2026-11-01",
  "transactionCount": 0,
  "lastImportAt": "2026-11-01T09:30:00.000Z",
  "lastBookingDate": "2026-11-01",
  "connection": {
    "provider": "string",
    "status": "pending",
    "consentExpiresAt": "2026-11-01T09:30:00.000Z",
    "lastSyncAt": "2026-11-01T09:30:00.000Z"
  },
  "archived": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/bank-accounts/{id}

Nur Konten ohne Umsätze. Konten mit Umsätzen werden archiviert (PATCH archived: true).

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 204

Erfolg, keine Antwort

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/bank-accounts/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/bank-import-presets

Mitgelieferte Spaltenzuordnungen gängiger Bank-Exporte. Wird beim Import automatisch erkannt oder per presetId gewählt.

Berechtigung: banking:read

Antwort 200

  • dataArray<BankImportPreset>Pflicht
    • idstringPflicht
    • bankNamestringPflicht
    • notestring | nullPflicht
    • mappingBankCsvMappingPflicht
      • delimiter";" | "," | "\t" | "|"Pflicht
        Trennzeichen
      • encoding"utf-8" | "windows-1252"Pflicht
        Zeichensatz
      • decimalSeparator"," | "."Pflicht
        Dezimaltrennzeichen der Beträge
      • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
        Standard: "auto"
      • headerRowinteger | nullPflicht
        0–50
      • columnsobjectPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-import-presets' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "data": [
    {
      "id": "string",
      "bankName": "string",
      "note": "string",
      "mapping": {
        "delimiter": ";",
        "encoding": "utf-8",
        "decimalSeparator": ",",
        "dateFormat": "auto",
        "headerRow": null,
        "columns": {
          "bookingDate": null,
          "valueDate": null,
          "amount": null,
          "debit": null,
          "credit": null,
          "indicator": null,
          "currency": null,
          "counterpartyName": null,
          "payerName": null,
          "payeeName": null,
          "counterpartyIban": null,
          "counterpartyBic": null,
          "purpose": null,
          "bookingText": null,
          "endToEndId": null,
          "mandateId": null,
          "creditorId": null,
          "bankReference": null
        }
      }
    }
  ]
}
GET/api/v1/bank-import-profiles

Berechtigung: banking:read

Query-Parameter

  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<BankImportProfile>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • namestringPflicht
    • bankNamestring | nullPflicht
    • mappingBankCsvMappingPflicht
      • delimiter";" | "," | "\t" | "|"Pflicht
        Trennzeichen
      • encoding"utf-8" | "windows-1252"Pflicht
        Zeichensatz
      • decimalSeparator"," | "."Pflicht
        Dezimaltrennzeichen der Beträge
      • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
        Standard: "auto"
      • headerRowinteger | nullPflicht
        0–50
      • columnsobjectPflicht
    • headerSignaturestringPflicht
      Fingerabdruck der Kopfzeile; erkennt passende Dateien automatisch
    • lastUsedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-import-profiles' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "name": "string",
      "bankName": "string",
      "mapping": {
        "delimiter": ";",
        "encoding": "utf-8",
        "decimalSeparator": ",",
        "dateFormat": "auto",
        "headerRow": null,
        "columns": {
          "bookingDate": null,
          "valueDate": null,
          "amount": null,
          "debit": null,
          "credit": null,
          "indicator": null,
          "currency": null,
          "counterpartyName": null,
          "payerName": null,
          "payeeName": null,
          "counterpartyIban": null,
          "counterpartyBic": null,
          "purpose": null,
          "bookingText": null,
          "endToEndId": null,
          "mandateId": null,
          "creditorId": null,
          "bankReference": null
        }
      },
      "headerSignature": "string",
      "lastUsedAt": "2026-11-01T09:30:00.000Z",
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/bank-import-profiles

Speichert eine Spaltenzuordnung. Dateien mit derselben Kopfzeile werden künftig automatisch damit gelesen.

Berechtigung: banking:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · BankImportProfileCreate

  • namestringPflicht
    max. 80 Zeichen
  • bankNamestring
    max. 80 Zeichen
  • mappingBankCsvMappingPflicht
    • delimiter";" | "," | "\t" | "|"Pflicht
      Trennzeichen
    • encoding"utf-8" | "windows-1252"Pflicht
      Zeichensatz
    • decimalSeparator"," | "."Pflicht
      Dezimaltrennzeichen der Beträge
    • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
      Standard: "auto"
    • headerRowinteger | nullPflicht
      0–50
    • columnsobjectPflicht
      • bookingDatestringPflicht
        max. 120 Zeichen
      • valueDatestring
        max. 120 Zeichen
      • amountstring
        max. 120 Zeichen
      • debitstring
        max. 120 Zeichen
      • creditstring
        max. 120 Zeichen
      • indicatorstring
        max. 120 Zeichen
      • currencystring
        max. 120 Zeichen
      • counterpartyNamestring
        max. 120 Zeichen
      • payerNamestring
        max. 120 Zeichen
      • payeeNamestring
        max. 120 Zeichen
      • counterpartyIbanstring
        max. 120 Zeichen
      • counterpartyBicstring
        max. 120 Zeichen
      • purposeArray<string>Pflicht
        max. 120 Zeichen
      • bookingTextstring
        max. 120 Zeichen
      • endToEndIdstring
        max. 120 Zeichen
      • mandateIdstring
        max. 120 Zeichen
      • creditorIdstring
        max. 120 Zeichen
      • bankReferencestring
        max. 120 Zeichen
  • headersArray<string>Pflicht
    Kopfzeile der Beispieldatei (für die automatische Erkennung)
    max. 200 Zeichen

Antwort 201 · BankImportProfile

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • bankNamestring | nullPflicht
  • mappingBankCsvMappingPflicht
    • delimiter";" | "," | "\t" | "|"Pflicht
      Trennzeichen
    • encoding"utf-8" | "windows-1252"Pflicht
      Zeichensatz
    • decimalSeparator"," | "."Pflicht
      Dezimaltrennzeichen der Beträge
    • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
      Standard: "auto"
    • headerRowinteger | nullPflicht
      0–50
    • columnsobjectPflicht
      • bookingDatestringPflicht
        max. 120 Zeichen
      • valueDatestring
        max. 120 Zeichen
      • amountstring
        max. 120 Zeichen
      • debitstring
        max. 120 Zeichen
      • creditstring
        max. 120 Zeichen
      • indicatorstring
        max. 120 Zeichen
      • currencystring
        max. 120 Zeichen
      • counterpartyNamestring
        max. 120 Zeichen
      • payerNamestring
        max. 120 Zeichen
      • payeeNamestring
        max. 120 Zeichen
      • counterpartyIbanstring
        max. 120 Zeichen
      • counterpartyBicstring
        max. 120 Zeichen
      • purposeArray<string>Pflicht
        max. 120 Zeichen
      • bookingTextstring
        max. 120 Zeichen
      • endToEndIdstring
        max. 120 Zeichen
      • mandateIdstring
        max. 120 Zeichen
      • creditorIdstring
        max. 120 Zeichen
      • bankReferencestring
        max. 120 Zeichen
  • headerSignaturestringPflicht
    Fingerabdruck der Kopfzeile; erkennt passende Dateien automatisch
  • lastUsedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-import-profiles' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "bankName": "string",
  "mapping": {
    "delimiter": ";",
    "encoding": "utf-8",
    "decimalSeparator": ",",
    "dateFormat": "auto",
    "headerRow": null,
    "columns": {
      "bookingDate": "string",
      "valueDate": "string",
      "amount": "string",
      "debit": "string",
      "credit": "string",
      "indicator": "string",
      "currency": "string",
      "counterpartyName": "string",
      "payerName": "string",
      "payeeName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": [],
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  },
  "headers": [
    "string"
  ]
}'
Antwort 201
{
  "id": "string",
  "name": "string",
  "bankName": "string",
  "mapping": {
    "delimiter": ";",
    "encoding": "utf-8",
    "decimalSeparator": ",",
    "dateFormat": "auto",
    "headerRow": null,
    "columns": {
      "bookingDate": "string",
      "valueDate": "string",
      "amount": "string",
      "debit": "string",
      "credit": "string",
      "indicator": "string",
      "currency": "string",
      "counterpartyName": "string",
      "payerName": "string",
      "payeeName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": [],
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  },
  "headerSignature": "string",
  "lastUsedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/bank-import-profiles/{id}

Berechtigung: banking:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · BankImportProfile

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • bankNamestring | nullPflicht
  • mappingBankCsvMappingPflicht
    • delimiter";" | "," | "\t" | "|"Pflicht
      Trennzeichen
    • encoding"utf-8" | "windows-1252"Pflicht
      Zeichensatz
    • decimalSeparator"," | "."Pflicht
      Dezimaltrennzeichen der Beträge
    • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
      Standard: "auto"
    • headerRowinteger | nullPflicht
      0–50
    • columnsobjectPflicht
      • bookingDatestringPflicht
        max. 120 Zeichen
      • valueDatestring
        max. 120 Zeichen
      • amountstring
        max. 120 Zeichen
      • debitstring
        max. 120 Zeichen
      • creditstring
        max. 120 Zeichen
      • indicatorstring
        max. 120 Zeichen
      • currencystring
        max. 120 Zeichen
      • counterpartyNamestring
        max. 120 Zeichen
      • payerNamestring
        max. 120 Zeichen
      • payeeNamestring
        max. 120 Zeichen
      • counterpartyIbanstring
        max. 120 Zeichen
      • counterpartyBicstring
        max. 120 Zeichen
      • purposeArray<string>Pflicht
        max. 120 Zeichen
      • bookingTextstring
        max. 120 Zeichen
      • endToEndIdstring
        max. 120 Zeichen
      • mandateIdstring
        max. 120 Zeichen
      • creditorIdstring
        max. 120 Zeichen
      • bankReferencestring
        max. 120 Zeichen
  • headerSignaturestringPflicht
    Fingerabdruck der Kopfzeile; erkennt passende Dateien automatisch
  • lastUsedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-import-profiles/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "name": "string",
  "bankName": "string",
  "mapping": {
    "delimiter": ";",
    "encoding": "utf-8",
    "decimalSeparator": ",",
    "dateFormat": "auto",
    "headerRow": null,
    "columns": {
      "bookingDate": "string",
      "valueDate": "string",
      "amount": "string",
      "debit": "string",
      "credit": "string",
      "indicator": "string",
      "currency": "string",
      "counterpartyName": "string",
      "payerName": "string",
      "payeeName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": [],
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  },
  "headerSignature": "string",
  "lastUsedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/bank-import-profiles/{id}

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Body (JSON) · BankImportProfileUpdate

  • namestring
    max. 80 Zeichen
  • bankNamestring
    max. 80 Zeichen
  • mappingBankCsvMapping
    • delimiter";" | "," | "\t" | "|"Pflicht
      Trennzeichen
    • encoding"utf-8" | "windows-1252"Pflicht
      Zeichensatz
    • decimalSeparator"," | "."Pflicht
      Dezimaltrennzeichen der Beträge
    • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
      Standard: "auto"
    • headerRowinteger | nullPflicht
      0–50
    • columnsobjectPflicht
      • bookingDatestringPflicht
        max. 120 Zeichen
      • valueDatestring
        max. 120 Zeichen
      • amountstring
        max. 120 Zeichen
      • debitstring
        max. 120 Zeichen
      • creditstring
        max. 120 Zeichen
      • indicatorstring
        max. 120 Zeichen
      • currencystring
        max. 120 Zeichen
      • counterpartyNamestring
        max. 120 Zeichen
      • payerNamestring
        max. 120 Zeichen
      • payeeNamestring
        max. 120 Zeichen
      • counterpartyIbanstring
        max. 120 Zeichen
      • counterpartyBicstring
        max. 120 Zeichen
      • purposeArray<string>Pflicht
        max. 120 Zeichen
      • bookingTextstring
        max. 120 Zeichen
      • endToEndIdstring
        max. 120 Zeichen
      • mandateIdstring
        max. 120 Zeichen
      • creditorIdstring
        max. 120 Zeichen
      • bankReferencestring
        max. 120 Zeichen

Antwort 200 · BankImportProfile

  • idstringPflicht
    max. 128 Zeichen
  • namestringPflicht
  • bankNamestring | nullPflicht
  • mappingBankCsvMappingPflicht
    • delimiter";" | "," | "\t" | "|"Pflicht
      Trennzeichen
    • encoding"utf-8" | "windows-1252"Pflicht
      Zeichensatz
    • decimalSeparator"," | "."Pflicht
      Dezimaltrennzeichen der Beträge
    • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
      Standard: "auto"
    • headerRowinteger | nullPflicht
      0–50
    • columnsobjectPflicht
      • bookingDatestringPflicht
        max. 120 Zeichen
      • valueDatestring
        max. 120 Zeichen
      • amountstring
        max. 120 Zeichen
      • debitstring
        max. 120 Zeichen
      • creditstring
        max. 120 Zeichen
      • indicatorstring
        max. 120 Zeichen
      • currencystring
        max. 120 Zeichen
      • counterpartyNamestring
        max. 120 Zeichen
      • payerNamestring
        max. 120 Zeichen
      • payeeNamestring
        max. 120 Zeichen
      • counterpartyIbanstring
        max. 120 Zeichen
      • counterpartyBicstring
        max. 120 Zeichen
      • purposeArray<string>Pflicht
        max. 120 Zeichen
      • bookingTextstring
        max. 120 Zeichen
      • endToEndIdstring
        max. 120 Zeichen
      • mandateIdstring
        max. 120 Zeichen
      • creditorIdstring
        max. 120 Zeichen
      • bankReferencestring
        max. 120 Zeichen
  • headerSignaturestringPflicht
    Fingerabdruck der Kopfzeile; erkennt passende Dateien automatisch
  • lastUsedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/bank-import-profiles/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "bankName": "string",
  "mapping": {
    "delimiter": ";",
    "encoding": "utf-8",
    "decimalSeparator": ",",
    "dateFormat": "auto",
    "headerRow": null,
    "columns": {
      "bookingDate": "string",
      "valueDate": "string",
      "amount": "string",
      "debit": "string",
      "credit": "string",
      "indicator": "string",
      "currency": "string",
      "counterpartyName": "string",
      "payerName": "string",
      "payeeName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": [],
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  }
}'
Antwort 200
{
  "id": "string",
  "name": "string",
  "bankName": "string",
  "mapping": {
    "delimiter": ";",
    "encoding": "utf-8",
    "decimalSeparator": ",",
    "dateFormat": "auto",
    "headerRow": null,
    "columns": {
      "bookingDate": "string",
      "valueDate": "string",
      "amount": "string",
      "debit": "string",
      "credit": "string",
      "indicator": "string",
      "currency": "string",
      "counterpartyName": "string",
      "payerName": "string",
      "payeeName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": [],
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  },
  "headerSignature": "string",
  "lastUsedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/bank-import-profiles/{id}

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 204

Erfolg, keine Antwort

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/bank-import-profiles/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/bank-imports

Berechtigung: banking:read

Query-Parameter

  • bankAccountIdstring
    max. 128 Zeichen
  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<BankImport>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • bankAccountIdstringPflicht
      max. 128 Zeichen
    • format"csv" | "camt053" | "camt052" | "camt054"Pflicht
    • fileNamestring | nullPflicht
    • profileIdstring | nullPflicht
    • presetIdstring | nullPflicht
    • status"completed" | "reverted"Pflicht
    • countsobjectPflicht
      • rowsintegerPflicht
        gelesene Buchungen
        -9007199254740991–9007199254740991
      • importedintegerPflicht
        neu übernommen
        -9007199254740991–9007199254740991
      • duplicatesintegerPflicht
        bereits vorhanden (übersprungen)
        -9007199254740991–9007199254740991
      • skippedintegerPflicht
        nicht übernommen (vorgemerkt, leer, fehlerhaft)
        -9007199254740991–9007199254740991
      • suggestedintegerPflicht
        neue Umsätze mit Zuordnungsvorschlag
        -9007199254740991–9007199254740991
    • periodFromstring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • periodTostring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • sumCentsintegerPflicht
      Summe der neu übernommenen Umsätze
      -100000000000–100000000000
    • errorsArray<object>Pflicht
      • rowinteger | nullPflicht
        -9007199254740991–9007199254740991
      • messagestringPflicht
    • warningsArray<string>Pflicht
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-imports' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "bankAccountId": "string",
      "format": "csv",
      "fileName": "string",
      "profileId": "string",
      "presetId": "string",
      "status": "completed",
      "counts": {
        "rows": 0,
        "imported": 0,
        "duplicates": 0,
        "skipped": 0,
        "suggested": 0
      },
      "periodFrom": "2026-11-01",
      "periodTo": "2026-11-01",
      "sumCents": 0,
      "errors": [
        {
          "row": null,
          "message": "string"
        }
      ],
      "warnings": [
        "string"
      ],
      "createdAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/bank-imports

Lädt eine CSV-Datei (Sparkasse, Volksbank, Deutsche Bank, ING, Commerzbank, N26, DKB, Postbank, Holvi, Kontist, Qonto oder beliebige Bank mit Spaltenzuordnung) oder eine CAMT-Datei (camt.053, camt.052, camt.054) hoch. Bereits vorhandene Buchungen werden erkannt und übersprungen. Für neue Umsätze werden Zuordnungsvorschläge berechnet. CSV-Zuordnung: Feld mapping (JSON, Schema BankCsvMapping), profileId oder presetId; ohne Angabe wird automatisch erkannt. Fehlt eine Pflichtspalte, antwortet die API mit 422 mapping_required.

Berechtigung: banking:write

Body (multipart/form-data)

  • filestring (binary)Pflicht
    text/csv, text/plain, text/xml, application/xml, application/vnd.ms-excel, application/csv, application/octet-stream, application/zip, application/x-zip-compressed, , max. 10240 KB
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • format"auto" | "csv" | "camt053" | "camt052" | "camt054"
    Standard: "auto"
  • profileIdstring
    max. 128 Zeichen
  • presetIdstring
    max. 40 Zeichen
  • mappingstring
    CSV-Zuordnung als JSON (BankCsvMapping)
    max. 10000 Zeichen
  • ignoreIbanMismatch"true" | "false"

Antwort 201 · BankImport

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • format"csv" | "camt053" | "camt052" | "camt054"Pflicht
  • fileNamestring | nullPflicht
  • profileIdstring | nullPflicht
  • presetIdstring | nullPflicht
  • status"completed" | "reverted"Pflicht
  • countsobjectPflicht
    • rowsintegerPflicht
      gelesene Buchungen
      -9007199254740991–9007199254740991
    • importedintegerPflicht
      neu übernommen
      -9007199254740991–9007199254740991
    • duplicatesintegerPflicht
      bereits vorhanden (übersprungen)
      -9007199254740991–9007199254740991
    • skippedintegerPflicht
      nicht übernommen (vorgemerkt, leer, fehlerhaft)
      -9007199254740991–9007199254740991
    • suggestedintegerPflicht
      neue Umsätze mit Zuordnungsvorschlag
      -9007199254740991–9007199254740991
  • periodFromstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • periodTostring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • sumCentsintegerPflicht
    Summe der neu übernommenen Umsätze
    -100000000000–100000000000
  • errorsArray<object>Pflicht
    • rowinteger | nullPflicht
      -9007199254740991–9007199254740991
    • messagestringPflicht
  • warningsArray<string>Pflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500

curl
curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -F 'file=@datei' \
  -F 'bankAccountId=…' \
  -F 'format=…' \
  -F 'profileId=…' \
  -F 'presetId=…' \
  -F 'mapping=…' \
  -F 'ignoreIbanMismatch=…'
Antwort 201
{
  "id": "string",
  "bankAccountId": "string",
  "format": "csv",
  "fileName": "string",
  "profileId": "string",
  "presetId": "string",
  "status": "completed",
  "counts": {
    "rows": 0,
    "imported": 0,
    "duplicates": 0,
    "skipped": 0,
    "suggested": 0
  },
  "periodFrom": "2026-11-01",
  "periodTo": "2026-11-01",
  "sumCents": 0,
  "errors": [
    {
      "row": 0,
      "message": "string"
    }
  ],
  "warnings": [
    "string"
  ],
  "createdAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/bank-imports/{id}

Berechtigung: banking:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · BankImport

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • format"csv" | "camt053" | "camt052" | "camt054"Pflicht
  • fileNamestring | nullPflicht
  • profileIdstring | nullPflicht
  • presetIdstring | nullPflicht
  • status"completed" | "reverted"Pflicht
  • countsobjectPflicht
    • rowsintegerPflicht
      gelesene Buchungen
      -9007199254740991–9007199254740991
    • importedintegerPflicht
      neu übernommen
      -9007199254740991–9007199254740991
    • duplicatesintegerPflicht
      bereits vorhanden (übersprungen)
      -9007199254740991–9007199254740991
    • skippedintegerPflicht
      nicht übernommen (vorgemerkt, leer, fehlerhaft)
      -9007199254740991–9007199254740991
    • suggestedintegerPflicht
      neue Umsätze mit Zuordnungsvorschlag
      -9007199254740991–9007199254740991
  • periodFromstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • periodTostring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • sumCentsintegerPflicht
    Summe der neu übernommenen Umsätze
    -100000000000–100000000000
  • errorsArray<object>Pflicht
    • rowinteger | nullPflicht
      -9007199254740991–9007199254740991
    • messagestringPflicht
  • warningsArray<string>Pflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-imports/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "format": "csv",
  "fileName": "string",
  "profileId": "string",
  "presetId": "string",
  "status": "completed",
  "counts": {
    "rows": 0,
    "imported": 0,
    "duplicates": 0,
    "skipped": 0,
    "suggested": 0
  },
  "periodFrom": "2026-11-01",
  "periodTo": "2026-11-01",
  "sumCents": 0,
  "errors": [
    {
      "row": 0,
      "message": "string"
    }
  ],
  "warnings": [
    "string"
  ],
  "createdAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/bank-imports/{id}/revert

Löscht die mit diesem Import angelegten Umsätze. Nur möglich, solange keiner davon zugeordnet ist.

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Antwort 200 · BankImport

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • format"csv" | "camt053" | "camt052" | "camt054"Pflicht
  • fileNamestring | nullPflicht
  • profileIdstring | nullPflicht
  • presetIdstring | nullPflicht
  • status"completed" | "reverted"Pflicht
  • countsobjectPflicht
    • rowsintegerPflicht
      gelesene Buchungen
      -9007199254740991–9007199254740991
    • importedintegerPflicht
      neu übernommen
      -9007199254740991–9007199254740991
    • duplicatesintegerPflicht
      bereits vorhanden (übersprungen)
      -9007199254740991–9007199254740991
    • skippedintegerPflicht
      nicht übernommen (vorgemerkt, leer, fehlerhaft)
      -9007199254740991–9007199254740991
    • suggestedintegerPflicht
      neue Umsätze mit Zuordnungsvorschlag
      -9007199254740991–9007199254740991
  • periodFromstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • periodTostring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • sumCentsintegerPflicht
    Summe der neu übernommenen Umsätze
    -100000000000–100000000000
  • errorsArray<object>Pflicht
    • rowinteger | nullPflicht
      -9007199254740991–9007199254740991
    • messagestringPflicht
  • warningsArray<string>Pflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports/ID/revert' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "format": "csv",
  "fileName": "string",
  "profileId": "string",
  "presetId": "string",
  "status": "completed",
  "counts": {
    "rows": 0,
    "imported": 0,
    "duplicates": 0,
    "skipped": 0,
    "suggested": 0
  },
  "periodFrom": "2026-11-01",
  "periodTo": "2026-11-01",
  "sumCents": 0,
  "errors": [
    {
      "row": 0,
      "message": "string"
    }
  ],
  "warnings": [
    "string"
  ],
  "createdAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/bank-imports/preview

Liest eine CSV- oder CAMT-Datei, ohne etwas zu speichern: erkanntes Format, Kopfzeile, vorgeschlagene Spaltenzuordnung (gespeichertes Profil, Bank-Vorlage oder automatische Erkennung), fehlende Pflichtspalten, CAMT-Auszüge mit IBAN-Abgleich und die ersten gelesenen Buchungen.

Berechtigung: banking:write

Body (multipart/form-data)

  • filestring (binary)Pflicht
    text/csv, text/plain, text/xml, application/xml, application/vnd.ms-excel, application/csv, application/octet-stream, application/zip, application/x-zip-compressed, , max. 10240 KB
  • bankAccountIdstring
    max. 128 Zeichen
  • profileIdstring
    max. 128 Zeichen
  • presetIdstring
    max. 40 Zeichen
  • mappingstring
    max. 10000 Zeichen

Antwort 200 · BankImportPreview

  • format"csv" | "camt053" | "camt052" | "camt054"Pflicht
  • csvobject | nullPflicht
    • headersArray<string>Pflicht
    • delimiter";" | "," | "\t" | "|"Pflicht
    • decimalSeparator"," | "."Pflicht
    • headerRowintegerPflicht
      -9007199254740991–9007199254740991
    • sampleRowsArray<Array<string>>Pflicht
    • detectedPresetIdstring | nullPflicht
    • detectedProfileIdstring | nullPflicht
    • mappingBankCsvMapping | nullPflicht
      Vorschlag (Profil, Vorlage oder automatische Erkennung)
      • delimiter";" | "," | "\t" | "|"Pflicht
        Trennzeichen
      • encoding"utf-8" | "windows-1252"Pflicht
        Zeichensatz
      • decimalSeparator"," | "."Pflicht
        Dezimaltrennzeichen der Beträge
      • dateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"Pflicht
        Standard: "auto"
      • headerRowinteger | nullPflicht
        0–50
      • columnsobjectPflicht
    • missingArray<string>Pflicht
      Pflichtangaben, die noch zugeordnet werden müssen
  • statementsArray<object>Pflicht
    • ibanstring | nullPflicht
    • fromstring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • tostring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • entriesintegerPflicht
      -9007199254740991–9007199254740991
    • closingBalanceCentsinteger | nullPflicht
      Betrag in Cent
      -100000000000–100000000000
    • matchesAccountboolean | nullPflicht
  • rowsArray<object>Pflicht
    erste gelesene Buchungen
    • rowinteger | nullPflicht
      -9007199254740991–9007199254740991
    • bookingDatestring (date)Pflicht
      Datum (YYYY-MM-DD)
    • valueDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • amountCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • currencystringPflicht
    • counterpartyNamestring | nullPflicht
    • counterpartyIbanstring | nullPflicht
    • purposestringPflicht
    • bookingTextstring | nullPflicht
  • totalRowsintegerPflicht
    -9007199254740991–9007199254740991
  • errorsArray<object>Pflicht
    • rowinteger | nullPflicht
      -9007199254740991–9007199254740991
    • messagestringPflicht

Mögliche Fehler: 400, 401, 403, 404, 413, 415, 422, 429, 500

curl
curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports/preview' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -F 'file=@datei' \
  -F 'bankAccountId=…' \
  -F 'profileId=…' \
  -F 'presetId=…' \
  -F 'mapping=…'
Antwort 200
{
  "format": "csv",
  "csv": {
    "headers": [
      "string"
    ],
    "delimiter": ";",
    "decimalSeparator": ",",
    "headerRow": 0,
    "sampleRows": [
      [
        "string"
      ]
    ],
    "detectedPresetId": "string",
    "detectedProfileId": "string",
    "mapping": {
      "delimiter": null,
      "encoding": null,
      "decimalSeparator": null,
      "dateFormat": null,
      "headerRow": null,
      "columns": null
    },
    "missing": [
      "string"
    ]
  },
  "statements": [
    {
      "iban": "string",
      "from": "2026-11-01",
      "to": "2026-11-01",
      "entries": 0,
      "closingBalanceCents": 0,
      "matchesAccount": false
    }
  ],
  "rows": [
    {
      "row": 0,
      "bookingDate": "2026-11-01",
      "valueDate": "2026-11-01",
      "amountCents": 0,
      "currency": "string",
      "counterpartyName": "string",
      "counterpartyIban": "string",
      "purpose": "string",
      "bookingText": "string"
    }
  ],
  "totalRows": 0,
  "errors": [
    {
      "row": 0,
      "message": "string"
    }
  ]
}
GET/api/v1/bank-rules

Beim Bestätigen einer Zuordnung merkt sich DebtFlow, zu welchem Kontakt eine Gegen-IBAN gehört. Das verbessert künftige Vorschläge.

Berechtigung: banking:read

Query-Parameter

  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<BankRule>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • type"counterparty"Pflicht
    • counterpartyIbanstringPflicht
    • counterpartyNamestring | nullPflicht
    • contactIdstringPflicht
    • hitsintegerPflicht
      -9007199254740991–9007199254740991
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-rules' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "type": "counterparty",
      "counterpartyIban": "string",
      "counterpartyName": "string",
      "contactId": "string",
      "hits": 0,
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
DELETE/api/v1/bank-rules/{id}

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 204

Erfolg, keine Antwort

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/bank-rules/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/bank-transactions

Neueste zuerst. Filter: Konto, Status (open = noch nicht oder nur teilweise zugeordnet), Zeitraum, Import.

Berechtigung: banking:read

Query-Parameter

  • bankAccountIdstring
    max. 128 Zeichen
  • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "open"
    open = unmatched + suggested + partially_matched
  • fromstring (date)
    Buchungstag ab
  • tostring (date)
    Buchungstag bis
  • importIdstring
    max. 128 Zeichen
  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<BankTransaction>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • bankAccountIdstringPflicht
      max. 128 Zeichen
    • bookingDatestring (date)Pflicht
      Datum (YYYY-MM-DD)
    • valueDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • amountCentsintegerPflicht
      Eingang positiv, Ausgang negativ
      -100000000000–100000000000
    • currencystringPflicht
    • counterpartyNamestring | nullPflicht
    • counterpartyIbanstring | nullPflicht
    • counterpartyBicstring | nullPflicht
    • purposestringPflicht
    • bookingTextstring | nullPflicht
    • endToEndIdstring | nullPflicht
    • mandateIdstring | nullPflicht
    • creditorIdstring | nullPflicht
    • bankReferencestring | nullPflicht
    • source"csv" | "camt" | "api" | "live"Pflicht
    • importIdstring | nullPflicht
    • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored"Pflicht
    • matchedCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • openCentsintegerPflicht
      noch nicht zugeordneter Betrag (positiv)
      -100000000000–100000000000
    • matchesArray<BankMatch>Pflicht
      • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
      • idstringPflicht
        max. 128 Zeichen
      • amountCentsintegerPflicht
        zugeordneter Betrag (positiv)
        -100000000000–100000000000
      • labelstringPflicht
      • paymentIdstring | nullPflicht
        erzeugte Zahlung (payments, invoicePayments oder Rate)
      • matchedAtstring (date-time)Pflicht
        Zeitpunkt (ISO 8601)
      • matchedByobject | nullPflicht
    • suggestionsArray<BankMatchSuggestion>Pflicht
      • targetsArray<object>Pflicht
      • confidencenumberPflicht
        0–1; ab 0.85 sicher
        0–1
      • reasonsArray<enum>Pflicht
        Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
    • notestring | nullPflicht
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-transactions' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "bankAccountId": "string",
      "bookingDate": "2026-11-01",
      "valueDate": "2026-11-01",
      "amountCents": 0,
      "currency": "string",
      "counterpartyName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": "string",
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string",
      "source": "csv",
      "importId": "string",
      "status": "unmatched",
      "matchedCents": 0,
      "openCents": 0,
      "matches": [
        {
          "type": null,
          "id": null,
          "amountCents": null,
          "label": null,
          "paymentId": null,
          "matchedAt": null,
          "matchedBy": null
        }
      ],
      "suggestions": [
        {
          "targets": null,
          "confidence": null,
          "reasons": null
        }
      ],
      "note": "string",
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/bank-transactions

Übernimmt bis zu 1000 Umsätze für ein Konto, z. B. aus einer eigenen FinTS- oder PSD2-Anbindung. Dieselbe Dublettenerkennung wie beim Datei-Import: eine erneute Lieferung legt nichts doppelt an. transactionIds enthält die IDs aller gelieferten Umsätze in Eingabereihenfolge (neu oder bereits vorhanden).

Berechtigung: banking:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · BankTransactionBulkCreate

  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • transactionsArray<BankTransactionInput>Pflicht
    • bookingDatestring (date)Pflicht
      Datum (YYYY-MM-DD)
    • valueDatestring (date)
      Datum (YYYY-MM-DD)
    • amountCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • currency"EUR"
      Standard: "EUR"
    • counterpartyNamestring
      max. 200 Zeichen
    • counterpartyIbanstring
      max. 40 Zeichen
    • counterpartyBicstring
      max. 11 Zeichen
    • purposestring
      max. 1000 Zeichen · Standard: ""
    • bookingTextstring
      max. 200 Zeichen
    • endToEndIdstring
      max. 100 Zeichen
    • mandateIdstring
      max. 100 Zeichen
    • creditorIdstring
      max. 100 Zeichen
    • bankReferencestring
      max. 100 Zeichen

Antwort 201 · BankTransactionBulkResult

  • importedintegerPflicht
    -9007199254740991–9007199254740991
  • duplicatesintegerPflicht
    -9007199254740991–9007199254740991
  • transactionIdsArray<string>Pflicht

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "bankAccountId": "string",
  "transactions": [
    {
      "bookingDate": "2026-11-01",
      "valueDate": "2026-11-01",
      "amountCents": 0,
      "currency": "EUR",
      "counterpartyName": "string",
      "counterpartyIban": "string",
      "counterpartyBic": "string",
      "purpose": "",
      "bookingText": "string",
      "endToEndId": "string",
      "mandateId": "string",
      "creditorId": "string",
      "bankReference": "string"
    }
  ]
}'
Antwort 201
{
  "imported": 0,
  "duplicates": 0,
  "transactionIds": [
    "string"
  ]
}
GET/api/v1/bank-transactions/{id}

Berechtigung: banking:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · BankTransaction

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • bookingDatestring (date)Pflicht
    Datum (YYYY-MM-DD)
  • valueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • amountCentsintegerPflicht
    Eingang positiv, Ausgang negativ
    -100000000000–100000000000
  • currencystringPflicht
  • counterpartyNamestring | nullPflicht
  • counterpartyIbanstring | nullPflicht
  • counterpartyBicstring | nullPflicht
  • purposestringPflicht
  • bookingTextstring | nullPflicht
  • endToEndIdstring | nullPflicht
  • mandateIdstring | nullPflicht
  • creditorIdstring | nullPflicht
  • bankReferencestring | nullPflicht
  • source"csv" | "camt" | "api" | "live"Pflicht
  • importIdstring | nullPflicht
  • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored"Pflicht
  • matchedCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openCentsintegerPflicht
    noch nicht zugeordneter Betrag (positiv)
    -100000000000–100000000000
  • matchesArray<BankMatch>Pflicht
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • amountCentsintegerPflicht
      zugeordneter Betrag (positiv)
      -100000000000–100000000000
    • labelstringPflicht
    • paymentIdstring | nullPflicht
      erzeugte Zahlung (payments, invoicePayments oder Rate)
    • matchedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • matchedByobject | nullPflicht
      • typestringPflicht
      • idstringPflicht
  • suggestionsArray<BankMatchSuggestion>Pflicht
    • targetsArray<object>Pflicht
      • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
      • idstringPflicht
        max. 128 Zeichen
      • amountCentsintegerPflicht
        zugeordneter Betrag (positiv)
        -100000000000–100000000000
      • labelstringPflicht
    • confidencenumberPflicht
      0–1; ab 0.85 sicher
      0–1
    • reasonsArray<enum>Pflicht
      Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
  • notestring | nullPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-transactions/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "bookingDate": "2026-11-01",
  "valueDate": "2026-11-01",
  "amountCents": 0,
  "currency": "string",
  "counterpartyName": "string",
  "counterpartyIban": "string",
  "counterpartyBic": "string",
  "purpose": "string",
  "bookingText": "string",
  "endToEndId": "string",
  "mandateId": "string",
  "creditorId": "string",
  "bankReference": "string",
  "source": "csv",
  "importId": "string",
  "status": "unmatched",
  "matchedCents": 0,
  "openCents": 0,
  "matches": [
    {
      "type": "invoice",
      "id": "string",
      "amountCents": 0,
      "label": "string",
      "paymentId": "string",
      "matchedAt": "2026-11-01T09:30:00.000Z",
      "matchedBy": {
        "type": null,
        "id": null
      }
    }
  ],
  "suggestions": [
    {
      "targets": [
        {
          "type": null,
          "id": null,
          "amountCents": null,
          "label": null
        }
      ],
      "confidence": 0,
      "reasons": [
        "reference"
      ]
    }
  ],
  "note": "string",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/bank-transactions/{id}

Notiz setzen oder den Umsatz als erledigt ohne Zuordnung markieren (ignored: true, z. B. Umbuchung, Privatentnahme, Bankgebühr). Buchungsdaten der Bank sind nicht änderbar.

Berechtigung: banking:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Body (JSON) · BankTransactionUpdate

  • notestring | null
    max. 500 Zeichen
  • ignoredboolean
    true = ohne Zuordnung erledigt, false = wieder offen

Antwort 200 · BankTransaction

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • bookingDatestring (date)Pflicht
    Datum (YYYY-MM-DD)
  • valueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • amountCentsintegerPflicht
    Eingang positiv, Ausgang negativ
    -100000000000–100000000000
  • currencystringPflicht
  • counterpartyNamestring | nullPflicht
  • counterpartyIbanstring | nullPflicht
  • counterpartyBicstring | nullPflicht
  • purposestringPflicht
  • bookingTextstring | nullPflicht
  • endToEndIdstring | nullPflicht
  • mandateIdstring | nullPflicht
  • creditorIdstring | nullPflicht
  • bankReferencestring | nullPflicht
  • source"csv" | "camt" | "api" | "live"Pflicht
  • importIdstring | nullPflicht
  • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored"Pflicht
  • matchedCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openCentsintegerPflicht
    noch nicht zugeordneter Betrag (positiv)
    -100000000000–100000000000
  • matchesArray<BankMatch>Pflicht
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • amountCentsintegerPflicht
      zugeordneter Betrag (positiv)
      -100000000000–100000000000
    • labelstringPflicht
    • paymentIdstring | nullPflicht
      erzeugte Zahlung (payments, invoicePayments oder Rate)
    • matchedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • matchedByobject | nullPflicht
      • typestringPflicht
      • idstringPflicht
  • suggestionsArray<BankMatchSuggestion>Pflicht
    • targetsArray<object>Pflicht
      • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
      • idstringPflicht
        max. 128 Zeichen
      • amountCentsintegerPflicht
        zugeordneter Betrag (positiv)
        -100000000000–100000000000
      • labelstringPflicht
    • confidencenumberPflicht
      0–1; ab 0.85 sicher
      0–1
    • reasonsArray<enum>Pflicht
      Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
  • notestring | nullPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/bank-transactions/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "note": "string",
  "ignored": false
}'
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "bookingDate": "2026-11-01",
  "valueDate": "2026-11-01",
  "amountCents": 0,
  "currency": "string",
  "counterpartyName": "string",
  "counterpartyIban": "string",
  "counterpartyBic": "string",
  "purpose": "string",
  "bookingText": "string",
  "endToEndId": "string",
  "mandateId": "string",
  "creditorId": "string",
  "bankReference": "string",
  "source": "csv",
  "importId": "string",
  "status": "unmatched",
  "matchedCents": 0,
  "openCents": 0,
  "matches": [
    {
      "type": "invoice",
      "id": "string",
      "amountCents": 0,
      "label": "string",
      "paymentId": "string",
      "matchedAt": "2026-11-01T09:30:00.000Z",
      "matchedBy": {
        "type": null,
        "id": null
      }
    }
  ],
  "suggestions": [
    {
      "targets": [
        {
          "type": null,
          "id": null,
          "amountCents": null,
          "label": null
        }
      ],
      "confidence": 0,
      "reasons": [
        "reference"
      ]
    }
  ],
  "note": "string",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/bank-transactions/{id}/candidates

Alle offenen Rechnungen, Forderungen, Raten und erfassten Zahlungen (bei Eingängen) bzw. Belege (bei Ausgaben), bewertet nach Passung zum Umsatz – für die manuelle Zuordnung.

Berechtigung: banking:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Query-Parameter

  • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"
  • qstring
    Suche in Bezeichnung, Kontakt und Nummer
    max. 100 Zeichen
  • limitinteger
    1–200 · Standard: 100

Antwort 200

  • dataArray<BankMatchCandidate>Pflicht
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • labelstringPflicht
    • contactIdstring | nullPflicht
    • contactNamestring | nullPflicht
    • referencestring | nullPflicht
    • openCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • totalCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • datestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • confidencenumberPflicht
      0–1
    • reasonsArray<enum>Pflicht
      Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/bank-transactions/ID/candidates' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "data": [
    {
      "type": "invoice",
      "id": "string",
      "label": "string",
      "contactId": "string",
      "contactName": "string",
      "reference": "string",
      "openCents": 0,
      "totalCents": 0,
      "date": "2026-11-01",
      "confidence": 0,
      "reasons": [
        "reference"
      ]
    }
  ]
}
POST/api/v1/bank-transactions/{id}/match

Ordnet den Umsatz einem oder mehreren Posten zu und erzeugt die Zahlung: Forderung → Zahlung (bei vollständiger Zahlung als bezahlt markiert), Rate → Ratenzahlung, Rechnung → Zahlungseingang (Status teilweise/bezahlt), Beleg → bezahlt, erfasste Zahlung → nur verknüpft. Ereignisse: payment.received, bank_transaction.matched, ggf. invoice.paid / debt.paid. Rechte je Ziel: Rechnung zusätzlich invoices:write, Beleg zusätzlich receipts:write.

Berechtigung: banking:write, payments:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · BankMatchRequest

  • targetsArray<object>Pflicht
    Ziele; ohne amountCents wird der offene Betrag (höchstens der Restbetrag des Umsatzes) zugeordnet
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • amountCentsinteger
      Betrag in Cent
      max. 100000000000
  • markDebtPaidboolean
    Forderung als bezahlt markieren, wenn sie damit vollständig beglichen ist
    Standard: true
  • notestring
    max. 500 Zeichen

Antwort 200 · BankTransaction

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • bookingDatestring (date)Pflicht
    Datum (YYYY-MM-DD)
  • valueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • amountCentsintegerPflicht
    Eingang positiv, Ausgang negativ
    -100000000000–100000000000
  • currencystringPflicht
  • counterpartyNamestring | nullPflicht
  • counterpartyIbanstring | nullPflicht
  • counterpartyBicstring | nullPflicht
  • purposestringPflicht
  • bookingTextstring | nullPflicht
  • endToEndIdstring | nullPflicht
  • mandateIdstring | nullPflicht
  • creditorIdstring | nullPflicht
  • bankReferencestring | nullPflicht
  • source"csv" | "camt" | "api" | "live"Pflicht
  • importIdstring | nullPflicht
  • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored"Pflicht
  • matchedCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openCentsintegerPflicht
    noch nicht zugeordneter Betrag (positiv)
    -100000000000–100000000000
  • matchesArray<BankMatch>Pflicht
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • amountCentsintegerPflicht
      zugeordneter Betrag (positiv)
      -100000000000–100000000000
    • labelstringPflicht
    • paymentIdstring | nullPflicht
      erzeugte Zahlung (payments, invoicePayments oder Rate)
    • matchedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • matchedByobject | nullPflicht
      • typestringPflicht
      • idstringPflicht
  • suggestionsArray<BankMatchSuggestion>Pflicht
    • targetsArray<object>Pflicht
      • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
      • idstringPflicht
        max. 128 Zeichen
      • amountCentsintegerPflicht
        zugeordneter Betrag (positiv)
        -100000000000–100000000000
      • labelstringPflicht
    • confidencenumberPflicht
      0–1; ab 0.85 sicher
      0–1
    • reasonsArray<enum>Pflicht
      Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
  • notestring | nullPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions/ID/match' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "targets": [
    {
      "type": "invoice",
      "id": "string",
      "amountCents": 0
    }
  ],
  "markDebtPaid": true,
  "note": "string"
}'
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "bookingDate": "2026-11-01",
  "valueDate": "2026-11-01",
  "amountCents": 0,
  "currency": "string",
  "counterpartyName": "string",
  "counterpartyIban": "string",
  "counterpartyBic": "string",
  "purpose": "string",
  "bookingText": "string",
  "endToEndId": "string",
  "mandateId": "string",
  "creditorId": "string",
  "bankReference": "string",
  "source": "csv",
  "importId": "string",
  "status": "unmatched",
  "matchedCents": 0,
  "openCents": 0,
  "matches": [
    {
      "type": "invoice",
      "id": "string",
      "amountCents": 0,
      "label": "string",
      "paymentId": "string",
      "matchedAt": "2026-11-01T09:30:00.000Z",
      "matchedBy": {
        "type": null,
        "id": null
      }
    }
  ],
  "suggestions": [
    {
      "targets": [
        {
          "type": null,
          "id": null,
          "amountCents": null,
          "label": null
        }
      ],
      "confidence": 0,
      "reasons": [
        "reference"
      ]
    }
  ],
  "note": "string",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/bank-transactions/{id}/unmatch

Hebt alle Zuordnungen des Umsatzes auf und nimmt die dabei erzeugten Zahlungen zurück (Ereignis payment.deleted). Rechte je Ziel: Rechnung zusätzlich invoices:write, Beleg zusätzlich receipts:write.

Berechtigung: banking:write, payments:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Antwort 200 · BankTransaction

  • idstringPflicht
    max. 128 Zeichen
  • bankAccountIdstringPflicht
    max. 128 Zeichen
  • bookingDatestring (date)Pflicht
    Datum (YYYY-MM-DD)
  • valueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • amountCentsintegerPflicht
    Eingang positiv, Ausgang negativ
    -100000000000–100000000000
  • currencystringPflicht
  • counterpartyNamestring | nullPflicht
  • counterpartyIbanstring | nullPflicht
  • counterpartyBicstring | nullPflicht
  • purposestringPflicht
  • bookingTextstring | nullPflicht
  • endToEndIdstring | nullPflicht
  • mandateIdstring | nullPflicht
  • creditorIdstring | nullPflicht
  • bankReferencestring | nullPflicht
  • source"csv" | "camt" | "api" | "live"Pflicht
  • importIdstring | nullPflicht
  • status"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored"Pflicht
  • matchedCentsintegerPflicht
    Betrag in Cent
    -100000000000–100000000000
  • openCentsintegerPflicht
    noch nicht zugeordneter Betrag (positiv)
    -100000000000–100000000000
  • matchesArray<BankMatch>Pflicht
    • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • amountCentsintegerPflicht
      zugeordneter Betrag (positiv)
      -100000000000–100000000000
    • labelstringPflicht
    • paymentIdstring | nullPflicht
      erzeugte Zahlung (payments, invoicePayments oder Rate)
    • matchedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • matchedByobject | nullPflicht
      • typestringPflicht
      • idstringPflicht
  • suggestionsArray<BankMatchSuggestion>Pflicht
    • targetsArray<object>Pflicht
      • type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"Pflicht
      • idstringPflicht
        max. 128 Zeichen
      • amountCentsintegerPflicht
        zugeordneter Betrag (positiv)
        -100000000000–100000000000
      • labelstringPflicht
    • confidencenumberPflicht
      0–1; ab 0.85 sicher
      0–1
    • reasonsArray<enum>Pflicht
      Werte: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
  • notestring | nullPflicht
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions/ID/unmatch' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "bankAccountId": "string",
  "bookingDate": "2026-11-01",
  "valueDate": "2026-11-01",
  "amountCents": 0,
  "currency": "string",
  "counterpartyName": "string",
  "counterpartyIban": "string",
  "counterpartyBic": "string",
  "purpose": "string",
  "bookingText": "string",
  "endToEndId": "string",
  "mandateId": "string",
  "creditorId": "string",
  "bankReference": "string",
  "source": "csv",
  "importId": "string",
  "status": "unmatched",
  "matchedCents": 0,
  "openCents": 0,
  "matches": [
    {
      "type": "invoice",
      "id": "string",
      "amountCents": 0,
      "label": "string",
      "paymentId": "string",
      "matchedAt": "2026-11-01T09:30:00.000Z",
      "matchedBy": {
        "type": null,
        "id": null
      }
    }
  ],
  "suggestions": [
    {
      "targets": [
        {
          "type": null,
          "id": null,
          "amountCents": null,
          "label": null
        }
      ],
      "confidence": 0,
      "reasons": [
        "reference"
      ]
    }
  ],
  "note": "string",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/bank-transactions/auto-match

Berechnet die Vorschläge offener Umsätze neu (z. B. nach neuen Rechnungen). Bestätigt nichts – dafür POST /bank-transactions/{id}/match oder POST /bank-transactions/confirm-suggestions.

Berechtigung: banking:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON)

  • bankAccountIdstring
    max. 128 Zeichen
  • transactionIdsArray<string>
    max. 128 Zeichen

Antwort 200 · BankAutoMatchResult

  • checkedintegerPflicht
    -9007199254740991–9007199254740991
  • suggestedintegerPflicht
    -9007199254740991–9007199254740991
  • highConfidenceintegerPflicht
    -9007199254740991–9007199254740991

Mögliche Fehler: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions/auto-match' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{}'
Antwort 200
{
  "checked": 0,
  "suggested": 0,
  "highConfidence": 0
}
POST/api/v1/bank-transactions/confirm-suggestions

Bestätigt für jeden angegebenen Umsatz den besten Vorschlag, sofern er die Mindestkonfidenz erreicht (Standard 0,85). Vorschläge auf Rechnungen bzw. Belege werden ohne invoices:write bzw. receipts:write übersprungen (skipped mit Grund).

Berechtigung: banking:write, payments:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · BankConfirmSuggestions

  • transactionIdsArray<string>Pflicht
    max. 128 Zeichen
  • minConfidencenumber
    0–1 · Standard: 0.85

Antwort 200 · BankConfirmSuggestionsResult

  • confirmedArray<string>Pflicht
    max. 128 Zeichen
  • skippedArray<object>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • reasonstringPflicht

Mögliche Fehler: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions/confirm-suggestions' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "transactionIds": [
    "string"
  ],
  "minConfidence": 0.85
}'
Antwort 200
{
  "confirmed": [
    "string"
  ],
  "skipped": [
    {
      "id": "string",
      "reason": "string"
    }
  ]
}