Bank
/api/v1/bank-accountsAll bank accounts with balance (opening balance + imported transactions) and the closing balance of the latest CAMT statement.
Permission: banking:read
Query parameters
includeArchived"true" | "false"including archived accountslimitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<BankAccountResource>requiredidstringrequiredmax. 128 charactersnamestringrequiredibanstringrequiredbicstring | nullrequiredbankNamestring | nullrequiredcurrency"EUR"requiredopeningBalanceCentsintegerrequiredAmount in cents-100000000000–100000000000openingDatestring (date) | nullrequiredDate (YYYY-MM-DD)balanceCentsintegerrequiredOpening balance + sum of all imported transactions-100000000000–100000000000statementBalanceCentsinteger | nullrequiredClosing balance according to the last CAMT statement-100000000000–100000000000statementBalanceDatestring (date) | nullrequiredDate (YYYY-MM-DD)transactionCountintegerrequired-9007199254740991–9007199254740991lastImportAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastBookingDatestring (date) | nullrequiredDate (YYYY-MM-DD)connectionBankConnection | nullrequiredproviderstringrequiredProvider of the live connection (PSD2/FinTS), e.g. "finapi"status"pending" | "active" | "expired" | "error"requiredconsentExpiresAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastSyncAtstring (date-time) | nullrequiredTimestamp (ISO 8601)
archivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/bank-accounts' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
}/api/v1/bank-accountsCreates a bank account (IBAN with check digits). Only one active account is allowed per IBAN.
Permission: banking:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · BankAccountCreate
namestringrequiredDisplay name, e.g. "Sparkasse business account"max. 80 charactersibanstringrequiredbicstring | ""bankNamestringmax. 80 charactersopeningBalanceCentsintegerAmount in cents-100000000000–100000000000 · Default: 0openingDatestring (date)Date (YYYY-MM-DD)
Response 201 · BankAccountResource
idstringrequiredmax. 128 charactersnamestringrequiredibanstringrequiredbicstring | nullrequiredbankNamestring | nullrequiredcurrency"EUR"requiredopeningBalanceCentsintegerrequiredAmount in cents-100000000000–100000000000openingDatestring (date) | nullrequiredDate (YYYY-MM-DD)balanceCentsintegerrequiredOpening balance + sum of all imported transactions-100000000000–100000000000statementBalanceCentsinteger | nullrequiredClosing balance according to the last CAMT statement-100000000000–100000000000statementBalanceDatestring (date) | nullrequiredDate (YYYY-MM-DD)transactionCountintegerrequired-9007199254740991–9007199254740991lastImportAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastBookingDatestring (date) | nullrequiredDate (YYYY-MM-DD)connectionBankConnection | nullrequiredproviderstringrequiredProvider of the live connection (PSD2/FinTS), e.g. "finapi"status"pending" | "active" | "expired" | "error"requiredconsentExpiresAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastSyncAtstring (date-time) | nullrequiredTimestamp (ISO 8601)
archivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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"
}'{
"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"
}/api/v1/bank-accounts/{id}Permission: banking:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 200 · BankAccountResource
idstringrequiredmax. 128 charactersnamestringrequiredibanstringrequiredbicstring | nullrequiredbankNamestring | nullrequiredcurrency"EUR"requiredopeningBalanceCentsintegerrequiredAmount in cents-100000000000–100000000000openingDatestring (date) | nullrequiredDate (YYYY-MM-DD)balanceCentsintegerrequiredOpening balance + sum of all imported transactions-100000000000–100000000000statementBalanceCentsinteger | nullrequiredClosing balance according to the last CAMT statement-100000000000–100000000000statementBalanceDatestring (date) | nullrequiredDate (YYYY-MM-DD)transactionCountintegerrequired-9007199254740991–9007199254740991lastImportAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastBookingDatestring (date) | nullrequiredDate (YYYY-MM-DD)connectionBankConnection | nullrequiredproviderstringrequiredProvider of the live connection (PSD2/FinTS), e.g. "finapi"status"pending" | "active" | "expired" | "error"requiredconsentExpiresAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastSyncAtstring (date-time) | nullrequiredTimestamp (ISO 8601)
archivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/bank-accounts/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
}/api/v1/bank-accounts/{id}Change the name, BIC, bank, opening balance or archive status. The IBAN cannot be changed.
Permission: banking:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Body (JSON) · BankAccountUpdate
namestringmax. 80 charactersbicstring | ""bankNamestringmax. 80 charactersopeningBalanceCentsintegerAmount in cents-100000000000–100000000000openingDatestring (date) | ""archivedboolean
Response 200 · BankAccountResource
idstringrequiredmax. 128 charactersnamestringrequiredibanstringrequiredbicstring | nullrequiredbankNamestring | nullrequiredcurrency"EUR"requiredopeningBalanceCentsintegerrequiredAmount in cents-100000000000–100000000000openingDatestring (date) | nullrequiredDate (YYYY-MM-DD)balanceCentsintegerrequiredOpening balance + sum of all imported transactions-100000000000–100000000000statementBalanceCentsinteger | nullrequiredClosing balance according to the last CAMT statement-100000000000–100000000000statementBalanceDatestring (date) | nullrequiredDate (YYYY-MM-DD)transactionCountintegerrequired-9007199254740991–9007199254740991lastImportAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastBookingDatestring (date) | nullrequiredDate (YYYY-MM-DD)connectionBankConnection | nullrequiredproviderstringrequiredProvider of the live connection (PSD2/FinTS), e.g. "finapi"status"pending" | "active" | "expired" | "error"requiredconsentExpiresAtstring (date-time) | nullrequiredTimestamp (ISO 8601)lastSyncAtstring (date-time) | nullrequiredTimestamp (ISO 8601)
archivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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
}'{
"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"
}/api/v1/bank-accounts/{id}Only accounts without transactions. Accounts with transactions are archived (PATCH archived: true).
Permission: banking:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 204
Success, no content
curl -X DELETE 'https://www.debt-flow.io/api/v1/bank-accounts/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"/api/v1/bank-import-presetsBuilt-in column mappings for common bank exports. Detected automatically on import or selected via presetId.
Permission: banking:read
Response 200
dataArray<BankImportPreset>requiredidstringrequiredbankNamestringrequirednotestring | nullrequiredmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequired
curl 'https://www.debt-flow.io/api/v1/bank-import-presets' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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
}
}
}
]
}/api/v1/bank-import-profilesPermission: banking:read
Query parameters
limitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<BankImportProfile>requiredidstringrequiredmax. 128 charactersnamestringrequiredbankNamestring | nullrequiredmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequired
headerSignaturestringrequiredFingerprint of the header row; recognises matching files automaticallylastUsedAtstring (date-time) | nullrequiredTimestamp (ISO 8601)createdAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/bank-import-profiles' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
}/api/v1/bank-import-profilesSaves a column mapping. Files with the same header row will be read with it automatically in future.
Permission: banking:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · BankImportProfileCreate
namestringrequiredmax. 80 charactersbankNamestringmax. 80 charactersmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequiredbookingDatestringrequiredmax. 120 charactersvalueDatestringmax. 120 charactersamountstringmax. 120 charactersdebitstringmax. 120 characterscreditstringmax. 120 charactersindicatorstringmax. 120 characterscurrencystringmax. 120 characterscounterpartyNamestringmax. 120 characterspayerNamestringmax. 120 characterspayeeNamestringmax. 120 characterscounterpartyIbanstringmax. 120 characterscounterpartyBicstringmax. 120 characterspurposeArray<string>requiredmax. 120 charactersbookingTextstringmax. 120 charactersendToEndIdstringmax. 120 charactersmandateIdstringmax. 120 characterscreditorIdstringmax. 120 charactersbankReferencestringmax. 120 characters
headersArray<string>requiredHeader row of the sample file (for automatic detection)max. 200 characters
Response 201 · BankImportProfile
idstringrequiredmax. 128 charactersnamestringrequiredbankNamestring | nullrequiredmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequiredbookingDatestringrequiredmax. 120 charactersvalueDatestringmax. 120 charactersamountstringmax. 120 charactersdebitstringmax. 120 characterscreditstringmax. 120 charactersindicatorstringmax. 120 characterscurrencystringmax. 120 characterscounterpartyNamestringmax. 120 characterspayerNamestringmax. 120 characterspayeeNamestringmax. 120 characterscounterpartyIbanstringmax. 120 characterscounterpartyBicstringmax. 120 characterspurposeArray<string>requiredmax. 120 charactersbookingTextstringmax. 120 charactersendToEndIdstringmax. 120 charactersmandateIdstringmax. 120 characterscreditorIdstringmax. 120 charactersbankReferencestringmax. 120 characters
headerSignaturestringrequiredFingerprint of the header row; recognises matching files automaticallylastUsedAtstring (date-time) | nullrequiredTimestamp (ISO 8601)createdAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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"
]
}'{
"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"
}/api/v1/bank-import-profiles/{id}Permission: banking:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 200 · BankImportProfile
idstringrequiredmax. 128 charactersnamestringrequiredbankNamestring | nullrequiredmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequiredbookingDatestringrequiredmax. 120 charactersvalueDatestringmax. 120 charactersamountstringmax. 120 charactersdebitstringmax. 120 characterscreditstringmax. 120 charactersindicatorstringmax. 120 characterscurrencystringmax. 120 characterscounterpartyNamestringmax. 120 characterspayerNamestringmax. 120 characterspayeeNamestringmax. 120 characterscounterpartyIbanstringmax. 120 characterscounterpartyBicstringmax. 120 characterspurposeArray<string>requiredmax. 120 charactersbookingTextstringmax. 120 charactersendToEndIdstringmax. 120 charactersmandateIdstringmax. 120 characterscreditorIdstringmax. 120 charactersbankReferencestringmax. 120 characters
headerSignaturestringrequiredFingerprint of the header row; recognises matching files automaticallylastUsedAtstring (date-time) | nullrequiredTimestamp (ISO 8601)createdAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/bank-import-profiles/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
}/api/v1/bank-import-profiles/{id}Permission: banking:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Body (JSON) · BankImportProfileUpdate
namestringmax. 80 charactersbankNamestringmax. 80 charactersmappingBankCsvMappingdelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequiredbookingDatestringrequiredmax. 120 charactersvalueDatestringmax. 120 charactersamountstringmax. 120 charactersdebitstringmax. 120 characterscreditstringmax. 120 charactersindicatorstringmax. 120 characterscurrencystringmax. 120 characterscounterpartyNamestringmax. 120 characterspayerNamestringmax. 120 characterspayeeNamestringmax. 120 characterscounterpartyIbanstringmax. 120 characterscounterpartyBicstringmax. 120 characterspurposeArray<string>requiredmax. 120 charactersbookingTextstringmax. 120 charactersendToEndIdstringmax. 120 charactersmandateIdstringmax. 120 characterscreditorIdstringmax. 120 charactersbankReferencestringmax. 120 characters
Response 200 · BankImportProfile
idstringrequiredmax. 128 charactersnamestringrequiredbankNamestring | nullrequiredmappingBankCsvMappingrequireddelimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequiredbookingDatestringrequiredmax. 120 charactersvalueDatestringmax. 120 charactersamountstringmax. 120 charactersdebitstringmax. 120 characterscreditstringmax. 120 charactersindicatorstringmax. 120 characterscurrencystringmax. 120 characterscounterpartyNamestringmax. 120 characterspayerNamestringmax. 120 characterspayeeNamestringmax. 120 characterscounterpartyIbanstringmax. 120 characterscounterpartyBicstringmax. 120 characterspurposeArray<string>requiredmax. 120 charactersbookingTextstringmax. 120 charactersendToEndIdstringmax. 120 charactersmandateIdstringmax. 120 characterscreditorIdstringmax. 120 charactersbankReferencestringmax. 120 characters
headerSignaturestringrequiredFingerprint of the header row; recognises matching files automaticallylastUsedAtstring (date-time) | nullrequiredTimestamp (ISO 8601)createdAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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"
}
}
}'{
"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"
}/api/v1/bank-import-profiles/{id}/api/v1/bank-importsPermission: banking:read
Query parameters
bankAccountIdstringmax. 128 characterslimitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<BankImport>requiredidstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersformat"csv" | "camt053" | "camt052" | "camt054"requiredfileNamestring | nullrequiredprofileIdstring | nullrequiredpresetIdstring | nullrequiredstatus"completed" | "reverted"requiredcountsobjectrequiredrowsintegerrequiredentries read-9007199254740991–9007199254740991importedintegerrequirednewly imported-9007199254740991–9007199254740991duplicatesintegerrequiredalready present (skipped) – detected via end-to-end ID, bank reference, mandate or the same file-9007199254740991–9007199254740991possibleDuplicatesintegerrequiredimported, but marked as a possible duplicate (same day, amount and counterparty IBAN, no stable ID)-9007199254740991–9007199254740991skippedintegerrequirednot imported (flagged, empty, invalid)-9007199254740991–9007199254740991suggestedintegerrequirednew transactions with match suggestion-9007199254740991–9007199254740991
periodFromstring (date) | nullrequiredDate (YYYY-MM-DD)periodTostring (date) | nullrequiredDate (YYYY-MM-DD)sumCentsintegerrequiredTotal of newly imported transactions-100000000000–100000000000errorsArray<object>requiredrowinteger | nullrequired-9007199254740991–9007199254740991messagestringrequired
warningsArray<string>requiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/bank-imports' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "string",
"bankAccountId": "string",
"format": "csv",
"fileName": "string",
"profileId": "string",
"presetId": "string",
"status": "completed",
"counts": {
"rows": 0,
"imported": 0,
"duplicates": 0,
"possibleDuplicates": 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"
}/api/v1/bank-importsUploads a CSV file (Sparkasse, Volksbank, Deutsche Bank, ING, Commerzbank, N26, DKB, Postbank, Holvi, Kontist, Qonto or any bank with a column mapping) or a CAMT file (camt.053, camt.052, camt.054). Entries that already exist are detected and skipped. Match suggestions are calculated for new transactions. CSV mapping: field mapping (JSON, schema BankCsvMapping), profileId or presetId; if none is given, the mapping is detected automatically. If a required column is missing, the API responds with 422 mapping_required.
Permission: banking:write
Body (multipart/form-data)
filestring (binary)requiredtext/csv, text/plain, text/xml, application/xml, application/vnd.ms-excel, application/csv, application/octet-stream, application/zip, application/x-zip-compressed, , max. 10240 KBbankAccountIdstringrequiredmax. 128 charactersformat"auto" | "csv" | "camt053" | "camt052" | "camt054"Default: "auto"profileIdstringmax. 128 characterspresetIdstringmax. 40 charactersmappingstringCSV column mapping as JSON (BankCsvMapping)max. 10000 charactersignoreIbanMismatch"true" | "false"
Response 201 · BankImport
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersformat"csv" | "camt053" | "camt052" | "camt054"requiredfileNamestring | nullrequiredprofileIdstring | nullrequiredpresetIdstring | nullrequiredstatus"completed" | "reverted"requiredcountsobjectrequiredrowsintegerrequiredentries read-9007199254740991–9007199254740991importedintegerrequirednewly imported-9007199254740991–9007199254740991duplicatesintegerrequiredalready present (skipped) – detected via end-to-end ID, bank reference, mandate or the same file-9007199254740991–9007199254740991possibleDuplicatesintegerrequiredimported, but marked as a possible duplicate (same day, amount and counterparty IBAN, no stable ID)-9007199254740991–9007199254740991skippedintegerrequirednot imported (flagged, empty, invalid)-9007199254740991–9007199254740991suggestedintegerrequirednew transactions with match suggestion-9007199254740991–9007199254740991
periodFromstring (date) | nullrequiredDate (YYYY-MM-DD)periodTostring (date) | nullrequiredDate (YYYY-MM-DD)sumCentsintegerrequiredTotal of newly imported transactions-100000000000–100000000000errorsArray<object>requiredrowinteger | nullrequired-9007199254740991–9007199254740991messagestringrequired
warningsArray<string>requiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)
Possible errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500
curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@file' \
-F 'bankAccountId=…' \
-F 'format=…' \
-F 'profileId=…' \
-F 'presetId=…' \
-F 'mapping=…' \
-F 'ignoreIbanMismatch=…'{
"id": "string",
"bankAccountId": "string",
"format": "csv",
"fileName": "string",
"profileId": "string",
"presetId": "string",
"status": "completed",
"counts": {
"rows": 0,
"imported": 0,
"duplicates": 0,
"possibleDuplicates": 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"
}/api/v1/bank-imports/{id}Permission: banking:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 200 · BankImport
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersformat"csv" | "camt053" | "camt052" | "camt054"requiredfileNamestring | nullrequiredprofileIdstring | nullrequiredpresetIdstring | nullrequiredstatus"completed" | "reverted"requiredcountsobjectrequiredrowsintegerrequiredentries read-9007199254740991–9007199254740991importedintegerrequirednewly imported-9007199254740991–9007199254740991duplicatesintegerrequiredalready present (skipped) – detected via end-to-end ID, bank reference, mandate or the same file-9007199254740991–9007199254740991possibleDuplicatesintegerrequiredimported, but marked as a possible duplicate (same day, amount and counterparty IBAN, no stable ID)-9007199254740991–9007199254740991skippedintegerrequirednot imported (flagged, empty, invalid)-9007199254740991–9007199254740991suggestedintegerrequirednew transactions with match suggestion-9007199254740991–9007199254740991
periodFromstring (date) | nullrequiredDate (YYYY-MM-DD)periodTostring (date) | nullrequiredDate (YYYY-MM-DD)sumCentsintegerrequiredTotal of newly imported transactions-100000000000–100000000000errorsArray<object>requiredrowinteger | nullrequired-9007199254740991–9007199254740991messagestringrequired
warningsArray<string>requiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/bank-imports/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"bankAccountId": "string",
"format": "csv",
"fileName": "string",
"profileId": "string",
"presetId": "string",
"status": "completed",
"counts": {
"rows": 0,
"imported": 0,
"duplicates": 0,
"possibleDuplicates": 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"
}/api/v1/bank-imports/{id}/revertDeletes the transactions created by this import. Only possible as long as none of them has been matched.
Permission: banking:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Response 200 · BankImport
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersformat"csv" | "camt053" | "camt052" | "camt054"requiredfileNamestring | nullrequiredprofileIdstring | nullrequiredpresetIdstring | nullrequiredstatus"completed" | "reverted"requiredcountsobjectrequiredrowsintegerrequiredentries read-9007199254740991–9007199254740991importedintegerrequirednewly imported-9007199254740991–9007199254740991duplicatesintegerrequiredalready present (skipped) – detected via end-to-end ID, bank reference, mandate or the same file-9007199254740991–9007199254740991possibleDuplicatesintegerrequiredimported, but marked as a possible duplicate (same day, amount and counterparty IBAN, no stable ID)-9007199254740991–9007199254740991skippedintegerrequirednot imported (flagged, empty, invalid)-9007199254740991–9007199254740991suggestedintegerrequirednew transactions with match suggestion-9007199254740991–9007199254740991
periodFromstring (date) | nullrequiredDate (YYYY-MM-DD)periodTostring (date) | nullrequiredDate (YYYY-MM-DD)sumCentsintegerrequiredTotal of newly imported transactions-100000000000–100000000000errorsArray<object>requiredrowinteger | nullrequired-9007199254740991–9007199254740991messagestringrequired
warningsArray<string>requiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports/ID/revert' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"bankAccountId": "string",
"format": "csv",
"fileName": "string",
"profileId": "string",
"presetId": "string",
"status": "completed",
"counts": {
"rows": 0,
"imported": 0,
"duplicates": 0,
"possibleDuplicates": 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"
}/api/v1/bank-imports/previewReads a CSV or CAMT file without saving anything: detected format, header row, suggested column mapping (saved profile, bank template or automatic detection), missing required columns, CAMT statements with IBAN check and the first entries read.
Permission: banking:write
Body (multipart/form-data)
filestring (binary)requiredtext/csv, text/plain, text/xml, application/xml, application/vnd.ms-excel, application/csv, application/octet-stream, application/zip, application/x-zip-compressed, , max. 10240 KBbankAccountIdstringmax. 128 charactersprofileIdstringmax. 128 characterspresetIdstringmax. 40 charactersmappingstringmax. 10000 characters
Response 200 · BankImportPreview
format"csv" | "camt053" | "camt052" | "camt054"requiredcsvobject | nullrequiredheadersArray<string>requireddelimiter";" | "," | "\t" | "|"requireddecimalSeparator"," | "."requiredheaderRowintegerrequired-9007199254740991–9007199254740991sampleRowsArray<Array<string>>requireddetectedPresetIdstring | nullrequireddetectedProfileIdstring | nullrequiredmappingBankCsvMapping | nullrequiredSuggestion (profile, template or automatic detection)delimiter";" | "," | "\t" | "|"requiredDelimiterencoding"utf-8" | "windows-1252"requiredCharacter setdecimalSeparator"," | "."requiredDecimal separator of the amountsdateFormat"auto" | "DD.MM.YYYY" | "DD.MM.YY" | "YYYY-MM-DD" | "DD/MM/YYYY" | "MM/DD/YYYY"requiredDefault: "auto"headerRowinteger | nullrequired0–50columnsobjectrequired
missingArray<string>requiredMandatory details that still need to be mapped
statementsArray<object>requiredibanstring | nullrequiredfromstring (date) | nullrequiredDate (YYYY-MM-DD)tostring (date) | nullrequiredDate (YYYY-MM-DD)entriesintegerrequired-9007199254740991–9007199254740991closingBalanceCentsinteger | nullrequiredAmount in cents-100000000000–100000000000matchesAccountboolean | nullrequired
rowsArray<object>requiredfirst entries readrowinteger | nullrequired-9007199254740991–9007199254740991bookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredAmount in cents-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequired
totalRowsintegerrequired-9007199254740991–9007199254740991errorsArray<object>requiredrowinteger | nullrequired-9007199254740991–9007199254740991messagestringrequired
Possible errors: 400, 401, 403, 404, 413, 415, 422, 429, 500
curl -X POST 'https://www.debt-flow.io/api/v1/bank-imports/preview' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-F 'file=@file' \
-F 'bankAccountId=…' \
-F 'profileId=…' \
-F 'presetId=…' \
-F 'mapping=…'{
"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"
}
]
}/api/v1/bank-rulesWhen you confirm a match, DebtFlow remembers which contact a counterparty IBAN belongs to. This improves future suggestions.
Permission: banking:read
Query parameters
limitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<BankRule>requiredidstringrequiredmax. 128 characterstype"counterparty"requiredcounterpartyIbanstringrequiredcounterpartyNamestring | nullrequiredcontactIdstringrequiredhitsintegerrequired-9007199254740991–9007199254740991createdAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/bank-rules' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
}/api/v1/bank-rules/{id}/api/v1/bank-transactionsNewest first. Filters: account, status (open = not yet or only partially matched), period, import.
Permission: banking:read
Query parameters
bankAccountIdstringmax. 128 charactersstatusenumopen = unmatched + suggested + partially_matchedValues: unmatched, suggested, partially_matched, matched, ignored, reverted, openfromstring (date)Booking date fromtostring (date)Booking date toimportIdstringmax. 128 characterslimitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<BankTransaction>requiredidstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredIncoming positive, outgoing negative-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredcounterpartyBicstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequiredendToEndIdstring | nullrequiredmandateIdstring | nullrequiredcreditorIdstring | nullrequiredbankReferencestring | nullrequiredpossibleDuplicateOfstring | nullrequiredpossible duplicate of this transaction (same day, amount, counterparty IBAN, different reference text) – please checksource"csv" | "camt" | "api" | "live"requiredimportIdstring | nullrequiredstatus"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "reverted"requiredmatchedCentsintegerrequiredAmount in cents-100000000000–100000000000openCentsintegerrequiredamount not yet matched (positive)-100000000000–100000000000matchesArray<BankMatch>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequiredpaymentIdstring | nullrequiredgenerated payment (payments, invoicePayments or instalment)matchedAtstring (date-time)requiredTimestamp (ISO 8601)matchedByobject | nullrequired
suggestionsArray<BankMatchSuggestion>requiredtargetsArray<object>requiredconfidencenumberrequired0–1; confident from 0.850–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
notestring | nullrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/bank-transactions' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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",
"possibleDuplicateOf": "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"
}/api/v1/bank-transactionsAccepts up to 1000 transactions for an account, e.g. from your own FinTS or PSD2 connection. Same duplicate detection as the file import: submitting again does not create anything twice. transactionIds contains the IDs of all submitted transactions in input order (new or already existing).
Permission: banking:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · BankTransactionBulkCreate
bankAccountIdstringrequiredmax. 128 characterstransactionsArray<BankTransactionInput>requiredbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date)Date (YYYY-MM-DD)amountCentsintegerrequiredAmount in cents-100000000000–100000000000currency"EUR"Default: "EUR"counterpartyNamestringmax. 200 characterscounterpartyIbanstringmax. 40 characterscounterpartyBicstringmax. 11 characterspurposestringmax. 1000 characters · Default: ""bookingTextstringmax. 200 charactersendToEndIdstringmax. 100 charactersmandateIdstringmax. 100 characterscreditorIdstringmax. 100 charactersbankReferencestringmax. 100 characters
Response 201 · BankTransactionBulkResult
importedintegerrequired-9007199254740991–9007199254740991duplicatesintegerrequired-9007199254740991–9007199254740991transactionIdsArray<string>required
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"
}
]
}'{
"imported": 0,
"duplicates": 0,
"transactionIds": [
"string"
]
}/api/v1/bank-transactions/{id}Permission: banking:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 200 · BankTransaction
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredIncoming positive, outgoing negative-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredcounterpartyBicstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequiredendToEndIdstring | nullrequiredmandateIdstring | nullrequiredcreditorIdstring | nullrequiredbankReferencestring | nullrequiredpossibleDuplicateOfstring | nullrequiredpossible duplicate of this transaction (same day, amount, counterparty IBAN, different reference text) – please checksource"csv" | "camt" | "api" | "live"requiredimportIdstring | nullrequiredstatus"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "reverted"requiredmatchedCentsintegerrequiredAmount in cents-100000000000–100000000000openCentsintegerrequiredamount not yet matched (positive)-100000000000–100000000000matchesArray<BankMatch>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequiredpaymentIdstring | nullrequiredgenerated payment (payments, invoicePayments or instalment)matchedAtstring (date-time)requiredTimestamp (ISO 8601)matchedByobject | nullrequiredtypestringrequiredidstringrequired
suggestionsArray<BankMatchSuggestion>requiredtargetsArray<object>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequired
confidencenumberrequired0–1; confident from 0.850–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
notestring | nullrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/bank-transactions/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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",
"possibleDuplicateOf": "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"
}/api/v1/bank-transactions/{id}Set a note or mark the transaction as done without a match (ignored: true, e.g. internal transfer, private withdrawal, bank fee). The bank's booking data cannot be changed.
Permission: banking:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Body (JSON) · BankTransactionUpdate
notestring | nullmax. 500 charactersignoredbooleantrue = done without match, false = open again
Response 200 · BankTransaction
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredIncoming positive, outgoing negative-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredcounterpartyBicstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequiredendToEndIdstring | nullrequiredmandateIdstring | nullrequiredcreditorIdstring | nullrequiredbankReferencestring | nullrequiredpossibleDuplicateOfstring | nullrequiredpossible duplicate of this transaction (same day, amount, counterparty IBAN, different reference text) – please checksource"csv" | "camt" | "api" | "live"requiredimportIdstring | nullrequiredstatus"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "reverted"requiredmatchedCentsintegerrequiredAmount in cents-100000000000–100000000000openCentsintegerrequiredamount not yet matched (positive)-100000000000–100000000000matchesArray<BankMatch>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequiredpaymentIdstring | nullrequiredgenerated payment (payments, invoicePayments or instalment)matchedAtstring (date-time)requiredTimestamp (ISO 8601)matchedByobject | nullrequiredtypestringrequiredidstringrequired
suggestionsArray<BankMatchSuggestion>requiredtargetsArray<object>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequired
confidencenumberrequired0–1; confident from 0.850–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
notestring | nullrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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
}'{
"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",
"possibleDuplicateOf": "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"
}/api/v1/bank-transactions/{id}/candidatesAll open invoices, debts, instalments and recorded payments (for incoming transactions) or receipts (for outgoing transactions), ranked by how well they fit the transaction – for manual matching.
Permission: banking:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Query parameters
type"invoice" | "debt" | "installment_plan" | "receipt" | "payment"qstringSearch in title, contact and numbermax. 100 characterslimitinteger1–200 · Default: 100
Response 200
dataArray<BankMatchCandidate>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 characterslabelstringrequiredcontactIdstring | nullrequiredcontactNamestring | nullrequiredreferencestring | nullrequiredopenCentsintegerrequiredAmount in cents-100000000000–100000000000totalCentsintegerrequiredAmount in cents-100000000000–100000000000datestring (date) | nullrequiredDate (YYYY-MM-DD)confidencenumberrequired0–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
curl 'https://www.debt-flow.io/api/v1/bank-transactions/ID/candidates' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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"
]
}
]
}/api/v1/bank-transactions/{id}/matchMatches the transaction to one or more items and creates the payment: debt → payment (marked as paid if paid in full), instalment → instalment payment, invoice → incoming payment (status partially paid/paid), receipt → paid, recorded payment → linked only. Events: payment.received, bank_transaction.matched, if applicable invoice.paid / debt.paid. Scopes per target: invoice additionally requires invoices:write, receipt additionally receipts:write.
Permission: banking:write, payments:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · BankMatchRequest
targetsArray<object>requiredTargets; without amountCents the open amount (at most the remaining amount of the transaction) is matchedtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerAmount in centsmax. 100000000000
markDebtPaidbooleanMark the debt as paid if this settles it in fullDefault: truenotestringmax. 500 characters
Response 200 · BankTransaction
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredIncoming positive, outgoing negative-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredcounterpartyBicstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequiredendToEndIdstring | nullrequiredmandateIdstring | nullrequiredcreditorIdstring | nullrequiredbankReferencestring | nullrequiredpossibleDuplicateOfstring | nullrequiredpossible duplicate of this transaction (same day, amount, counterparty IBAN, different reference text) – please checksource"csv" | "camt" | "api" | "live"requiredimportIdstring | nullrequiredstatus"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "reverted"requiredmatchedCentsintegerrequiredAmount in cents-100000000000–100000000000openCentsintegerrequiredamount not yet matched (positive)-100000000000–100000000000matchesArray<BankMatch>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequiredpaymentIdstring | nullrequiredgenerated payment (payments, invoicePayments or instalment)matchedAtstring (date-time)requiredTimestamp (ISO 8601)matchedByobject | nullrequiredtypestringrequiredidstringrequired
suggestionsArray<BankMatchSuggestion>requiredtargetsArray<object>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequired
confidencenumberrequired0–1; confident from 0.850–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
notestring | nullrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
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"
}'{
"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",
"possibleDuplicateOf": "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"
}/api/v1/bank-transactions/{id}/unmatchRemoves all matches of the transaction and reverses the payments created by them (event payment.deleted). Scopes per target: invoice additionally requires invoices:write, receipt additionally receipts:write.
Permission: banking:write, payments:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Response 200 · BankTransaction
idstringrequiredmax. 128 charactersbankAccountIdstringrequiredmax. 128 charactersbookingDatestring (date)requiredDate (YYYY-MM-DD)valueDatestring (date) | nullrequiredDate (YYYY-MM-DD)amountCentsintegerrequiredIncoming positive, outgoing negative-100000000000–100000000000currencystringrequiredcounterpartyNamestring | nullrequiredcounterpartyIbanstring | nullrequiredcounterpartyBicstring | nullrequiredpurposestringrequiredbookingTextstring | nullrequiredendToEndIdstring | nullrequiredmandateIdstring | nullrequiredcreditorIdstring | nullrequiredbankReferencestring | nullrequiredpossibleDuplicateOfstring | nullrequiredpossible duplicate of this transaction (same day, amount, counterparty IBAN, different reference text) – please checksource"csv" | "camt" | "api" | "live"requiredimportIdstring | nullrequiredstatus"unmatched" | "suggested" | "partially_matched" | "matched" | "ignored" | "reverted"requiredmatchedCentsintegerrequiredAmount in cents-100000000000–100000000000openCentsintegerrequiredamount not yet matched (positive)-100000000000–100000000000matchesArray<BankMatch>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequiredpaymentIdstring | nullrequiredgenerated payment (payments, invoicePayments or instalment)matchedAtstring (date-time)requiredTimestamp (ISO 8601)matchedByobject | nullrequiredtypestringrequiredidstringrequired
suggestionsArray<BankMatchSuggestion>requiredtargetsArray<object>requiredtype"invoice" | "debt" | "installment_plan" | "receipt" | "payment"requiredidstringrequiredmax. 128 charactersamountCentsintegerrequiredmatched amount (positive)-100000000000–100000000000labelstringrequired
confidencenumberrequired0–1; confident from 0.850–1reasonsArray<enum>requiredValues: reference, reference_partial, amount_exact, amount_total, amount_partial, amount_sum, iban, name, date_close
notestring | nullrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/bank-transactions/ID/unmatch' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"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",
"possibleDuplicateOf": "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"
}/api/v1/bank-transactions/auto-matchRecalculates the suggestions for open transactions (e.g. after new invoices). Does not confirm anything – use POST /bank-transactions/{id}/match or POST /bank-transactions/confirm-suggestions for that.
Permission: banking:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON)
bankAccountIdstringmax. 128 characterstransactionIdsArray<string>max. 128 characters
Response 200 · BankAutoMatchResult
checkedintegerrequired-9007199254740991–9007199254740991suggestedintegerrequired-9007199254740991–9007199254740991highConfidenceintegerrequired-9007199254740991–9007199254740991
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 '{}'{
"checked": 0,
"suggested": 0,
"highConfidence": 0
}/api/v1/bank-transactions/confirm-suggestionsFor each specified transaction, confirms the best suggestion if it reaches the minimum confidence (default 0.85). Suggestions for invoices or receipts are skipped without invoices:write or receipts:write (skipped with reason).
Permission: banking:write, payments:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · BankConfirmSuggestions
transactionIdsArray<string>requiredmax. 128 charactersminConfidencenumber0–1 · Default: 0.85
Response 200 · BankConfirmSuggestionsResult
confirmedArray<string>requiredmax. 128 charactersskippedArray<object>requiredidstringrequiredmax. 128 charactersreasonstringrequired
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
}'{
"confirmed": [
"string"
],
"skipped": [
{
"id": "string",
"reason": "string"
}
]
}