This API provides services to validate and to confirm bank account data, and to manage payment fraud cases
Bankaccount Data API (2)
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/
https://api.cdq.com/bankaccount-data/rest/
Bank Account Storages Management
Gather endpoints that provide functionalities for managing bank account storages. These functionalities include creating a new storage for bank account data, reading the details of a specific bank account storage identified by its storage ID, modifying the details of an existing bank account storage, deleting an existing bank account storage, and removing all bank account data from a specific storage.
Bank Account Verification
Gather endpoints that provide functionalities for verifying bank account data. These functionalities include confirming the reliability of given bank account data by CDL Trust Scores provided by other companies for the given bank account, curating the given bank account, and uploading bank accounts for batch confirmation.
Request
Confirm the reliability of the given bank account against the CDQ Whitelist (trust score based on transactions) and the Blacklist (fraud cases).
The BankAccount that is sent in the request needs to uniquely identify a bank account. Minimal sets of attributes that are considered valid to identify a bank account are:
- Only the IBAN (= internationalBankAccountIdentifier):
{ "bankAccount": { "internationalBankAccountIdentifier": "CH8800781619278412000" } }
- The bank account number (= nationalBankAccountIdentifier) and the BIC (= internationalBankIdentifier):
{ "bankAccount": { "nationalBankAccountIdentifier": "619278412000", "internationalBankIdentifier": "KBSGCH22XXX" } }
- The bank account number (= nationalBankAccountIdentifier), bank code/number (= nationalBankIdentifier) and bank country code (= bankCountryCode):
{ "bankAccount": { "bankCountryCode": "CH", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000" } }
If attributes are missing to uniquely identify a bank account an ApiError will be returned.
The response will always contain the BankAccount provided in the request and depending on the result found in the Whitelist or the Blacklist or neither, the following:
- A whitelist entry and no fraud case was found:
{ "bankAccountRequest": { "internationalBankAccountIdentifier": "CH8800781619278412000" }, "bankAccountConfirmed": { "bankCountryCode": "CH", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000", "internationalBankIdentifier": "KBSGCH22XXX", "internationalBankAccountIdentifier": "CH8800781619278412000" } "numberOfCompanies": "5", "numberOfPayments": "42", "lastPaymentAt": "2019-01-24", "trustScore": "7" }
- A fraud case entry was found:
{ "bankAccountRequest": { "internationalBankAccountIdentifier": "CH8800781619278412000" }, "associatedFraudCases": [ { "cdlId": "123456", ... } ] }
- The bank account is unknown (no trust score and no fraud case exists):
{ "bankAccountRequest": { "internationalBankAccountIdentifier": "CH8800781619278412000" } }
A bank account record holds information that universally describes a registered bank account.
The IBAN of a bank account.
(BIC/SWIFT) Bank identifier which is globally unique.
ISO code to identify the country a bank account is registered in.
Bank identifier which is unique in a national context, i.e. for a country.
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/v2/bankaccounts/confirm
- Production
https://api.cdq.com/bankaccount-data/rest/v2/bankaccounts/confirm
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X POST \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/v2/bankaccounts/confirm \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"bankAccount": {
"internationalBankAccountIdentifier": "CH8800781619278412000"
}
}'
OK
A bank account record holds information that universally describes a registered bank account.
A bank account record holds information that universally describes a registered bank account.
Sum of payments performed by companies that use this bank account.
Date of last payment made by any of the companies that use this bank account.
Trust score based on the number of payments done with this bank account.
{ "bankAccountRequest": { "internationalBankAccountIdentifier": "CH8800781619278412000", "internationalBankIdentifier": "KBSGCH22XXX", "bankCountryCode": "DE", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000" }, "bankAccountConfirmed": { "internationalBankAccountIdentifier": "CH8800781619278412000", "internationalBankIdentifier": "KBSGCH22XXX", "bankCountryCode": "DE", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000" }, "numberOfCompanies": "5", "numberOfPayments": "42", "lastPaymentAt": "2025-08-29T09:46:42Z", "trustScore": "7", "bankAccountOwners": [ { … } ], "associatedFraudCases": [ { … } ] }
Request
Curates the given bank account.
The BankAccount that is sent in the request has to be uniquely identifiable. Minimal sets of attributes that identify a BankAccount are:
- Only the IBAN (= internationalBankAccountIdentifier):
{ "bankAccount": { "internationalBankAccountIdentifier": "CH8800781619278412000" } }
- The bank account number (= nationalBankAccountIdentifier), bank code/number (= bank.nationalBankIdentifier) and bank country code (= bank.address.country.shortName):
{ "bankAccount": { "nationalBankAccountIdentifier": "619278412000", "bank" : { "nationalBankIdentifier": "00781", "address": { "country": { "shortName": "CH" } } } } }
- The bank account number (= nationalBankAccountIdentifier), bank code/number (= bank.nationalBankIdentifier) and the BIC (= internationalBankIdentifier):
{ "bankAccount": { "nationalBankAccountIdentifier": "619278412000", "bank" : { "nationalBankIdentifier": "00781", "internationalBankIdentifier": "KBSGCH22XXX" } } }
If IBAN is not present in the request it will be generated only if there is sufficient data:
- countryCode
- internationalBankIdentifier
- nationalBankAccountIdentifier
Or
- internationalBankIdentifier
- nationalBankIdentifier
- nationalBankAccountIdentifier
For the following countries the generation of the internationalBankAccountIdentifier (IBAN) is NOT supported in the current version:
AL, BA, BE, BG, BI, BR, DJ, EE, EG, ES, FI, FO, FR, HU, IS, IT, LY, MC, ME, MK, MR, NO, PL, PT, RS, SC, SD, SI, SM, TL, TR
The response will always contain the original BankAccount provided in the request and a curated version of it. For example:
{
"originalBankAccount": {
"internationalBankAccountIdentifier": "CH8800781619278412000"
},
"curatedBankAccount": {
"internationalBankAccountIdentifier": "CH8800781619278412000"
"nationalBankAccountIdentifier": "619278412000",
"bank" : {
"nationalBankIdentifier": "00781",
"address": {
"country": {
"shortName": "CH"
}
}
}
}
}
If the given request does not provide one of the combinations of attributes described above, an ApiError will be returned:
{
"timestamp": "...",
"message": "...",
"error": "Bad Request",
"path": "...",
"status": 400
}
Message contains concatenated descriptions of all errors that occurred in the request.
A request to curate a BankAccount.
The IBAN of a bank account.
Identifier of a bank account in a national context, i.e. for a country.
Feature(s) to be used during curation:
REMOVE_INVALID_VALUES
- Removes all invalid values (e.g. internationalBankIdentifier) during curation. By default, activated.
Items Value | Description |
---|---|
REMOVE_INVALID_VALUES | Removes all invalid values (e.g. internationalBankIdentifier) during curation. |
Feature(s) to be used during curation:
REMOVE_INVALID_VALUES
- Removes all invalid values (e.g. internationalBankIdentifier) during curation. By default, activated.
Items Value | Description |
---|---|
REMOVE_INVALID_VALUES | Removes all invalid values (e.g. internationalBankIdentifier) during curation. |
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/curate
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts/curate
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X POST \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/curate \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"bankAccount": {
"internationalBankAccountIdentifier": "CH8800781619278412000",
"nationalBankAccountIdentifier": "619278412000",
"bank": {
"internationalBankIdentifier": "KBSGCH22XXX",
"nationalBankIdentifier": "00781",
"nationalBankInstitutionCode": "LOYD",
"nationalBankSortCode": "301883",
"nationalBankControlKey": "12",
"address": {
"country": {
"shortName": "CH",
"value": "Switzerland"
}
}
}
},
"featuresOn": [
"REMOVE_INVALID_VALUES"
],
"featuresOff": [
"REMOVE_INVALID_VALUES"
]
}'
{ "originalBankAccount": { "internationalBankAccountIdentifier": "CH8800781619278412000", "nationalBankAccountIdentifier": "619278412000", "bank": { … } }, "curatedBankAccount": { "internationalBankAccountIdentifier": "CH8800781619278412000", "nationalBankAccountIdentifier": "619278412000", "bank": { … } } }
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X POST \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts \
-H 'Content-Length: 256' \
-H 'Content-Type: multipart/form-data' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-F file=file_name.csv
"72d6900fce6b326088f5d9d91049e3e6"
- application/json
- application/xml
Identifies a previously uploaded CSV file with bank account data or business partner storage with bank accounts to confirm.
Unique identifier of the Storage.
Features to be used during the confirmation job.
Items Enum Value | Description |
---|---|
CONFIRM_BA_IN_BP_STORAGE | Confirm bank accounts of business partners stored in business partner storage. |
DATA_MONITOR_REFRESH | Confirm bank accounts stored in bank account storage for which data monitor was activated/updated. |
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/jobs/confirmation
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts/jobs/confirmation
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X POST \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/jobs/confirmation \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"storageId": "72d6900fce6b326088f5d9d91049e3e6",
"featuresOn": [
"CONFIRM_BA_IN_BP_STORAGE"
]
}'
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "createdAt": "2025-08-29T09:46:42Z", "user": "742429-234242-4343-232323", "progress": "77", "status": "RUNNING" }
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/jobs
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts/jobs
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X GET \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/jobs \
-H 'X-API-KEY: YOUR_API_KEY_HERE'
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "createdAt": "2025-08-29T09:46:42Z", "user": "742429-234242-4343-232323", "progress": "77", "status": "RUNNING" }
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/statistics
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts/statistics
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X GET \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/statistics \
-H 'X-API-KEY: YOUR_API_KEY_HERE'
OK
- application/json
- application/xml
List of the country bank account counts.
List of the country trust score counts.
Count of the bank accounts with 1 trust score in the whitelist.
Count of the bank accounts with 2 trust scores in the whitelist.
Count of the bank accounts with 3 trust scores in the whitelist.
Count of the bank accounts with 4 trust scores in the whitelist.
Count of the bank accounts with 5 trust scores in the whitelist.
{ "timeStampCreated": "20240302", "whitelistBankAccountCount": "10", "whitelistTrustScoreCount": "10", "whitelistCountryBankAccountCounts": [ { … } ], "whitelistCountryTrustScoreCounts": [ { … } ], "whitelistTrustScoreMean": "0.5", "whitelistTrustScore1Count": "10", "whitelistTrustScore2Count": "10", "whitelistTrustScore3Count": "10", "whitelistTrustScore4Count": "10", "whitelistBankAccountWith1TrustScoreCount": "10", "whitelistBankAccountWith2TrustScoresCount": "10", "whitelistBankAccountWith3TrustScoresCount": "10", "whitelistBankAccountWith4TrustScoresCount": "10", "whitelistBankAccountWith5TrustScoresCount": "10", "whitelistBankAccountWithMoreThan5TrustScoresCount": "10" }
Uniquely identifies a bank account on a global scale, without any additional information such as bank identifier or country code. Best known system is the International Bank Account Identifier (IBAN) specified by ISO 13616:2007 and managed by SWIFT. If you use this parameter to confirm a given bank account, you do not need any additional parameter.
Uniquely identifies a bank on global scale, without any additional information such as country code. Best known system is the International Bank Identifier (BIC, or SWIFT code) specified by ISO 9362 and managed by SWIFT. If you use this parameter to confirm a given bank account without an IBAN, you have to provide in addition bank account information, i.e. country code and national bank account identifier.
To confirm national bank account information, you have to provide a country code to uniquely identify the bank account on a global scale. If you use this parameter to confirm a given bank account without an IBAN or BIC, you have to provide in addition a national bank identifier and a national bank account identifier.
Uniquely identifies a bank in a country, together with a country code parameter on a global scale. If you use this parameter to confirm a given bank account without an IBAN or BIC, you have to provide in addition a country code and a national bank account identifier.
Uniquely identifies a bank account at a specific bank in a country, together with a country code parameter and a national bank identifier on a global scale. If you use this parameter to confirm a given bank account without an IBAN or BIC, you have to provide in addition a country code and a national bank identifier.
- Mock server
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/confirm
- Production
https://api.cdq.com/bankaccount-data/rest/bankaccounts/confirm
- cURL
- Java
- JavaScript
- Python
- Node.js
curl -i -X GET \
https://developer.cdq.com/_mock/apis/bankaccount-data-api/api-v2/bankaccounts/confirm \
-H 'X-API-KEY: YOUR_API_KEY_HERE'
{ "bankAccountRequest": { "internationalBankAccountIdentifier": "CH8800781619278412000", "internationalBankIdentifier": "KBSGCH22XXX", "bankCountryCode": "DE", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000" }, "bankAccountConfirmed": { "internationalBankAccountIdentifier": "CH8800781619278412000", "internationalBankIdentifier": "KBSGCH22XXX", "bankCountryCode": "DE", "nationalBankIdentifier": "00781", "nationalBankAccountIdentifier": "619278412000" }, "scoreSum": "100", "maxScores": [ { … } ], "associatedFraudCases": [ { … } ] }
Bank Accounts
Gather endpoints that provide functionalities for managing bank accounts. These functionalities include reading bank account data, upserting bank account data, deleting bank account data, creating a new data source, reading all data sources, reading a data source by ID, and deleting a data source by ID.
Fraud Case Management
Gather endpoints that provide functionalities for managing fraud cases. These functionalities include creating a new fraud case, reading the details of a specific fraud case identified by its case ID, modifying the details of an existing fraud case, deleting an existing fraud case, and removing all fraud case data from a specific storage.
System Banks
Gather endpoints that provide functionalities for managing system banks. These functionalities include reading system banks, upserting system bank data, deleting system bank data, creating a new data source, reading all data sources, reading a data source by ID, and deleting a data source by ID.