This API is part of the BAV service.
Bank Account Verification or BAV for short is a service providing an API for verification of bank accounts within the issuing bank.
This service checks if the bank account exists with the issuing bank is active and matches the owner provided by you.
The API endpoint for accessing the BAV information is: https://api.iban.com/clients/verify/v2/
Currently, the BAV Service supports bank account verification for France.
The API supports HTTP POST request.
To authenticate you as our client, you need to send the API key in the headers of the request.
Parameter | Type | Description |
---|---|---|
api_key | string | Your personal API key required to authenticate you with the service. |
Parameter | Type | Description | Applies for Country Code |
---|---|---|---|
country | string | The 2 letter ISO country code. Currently, supported country codes: FR |
Any |
IBAN | string | The International Bank Account Number . | FR |
name | string | The first and last name of the account owner. Example: John Doe This parameter is used to perform name matching verification. |
FR |
account_type | string | Accepted values are: 'company' or 'person'. This parameter determines the type of bank account to be determined. It is required for France verifications. | FR |
SIREN | string | A 9 digit company identification number required for verifying company accounts in France. If you do not know the SIREN, you can find it by company name at: https://www.sirene.fr/sirene/public/accueil?sirene_locale=en |
FR |
curl "https://api.iban.com/clients/api/verify/v2/" \
-X POST \
-H x-api-key=[YOUR_API_KEY] \
-d '{
"country":"FR",
"IBAN":"FR7630006000011234567890189",
"account_type":"person",
"name":"John Doe"
}'
curl "https://api.iban.com/clients/api/verify/v2/" \
-X POST \
-H x-api-key=[YOUR_API_KEY] \
-d '{
"country":"FR",
"IBAN":"FR7630006000011234567890189",
"account_type":"company",
"SIREN":"432987654"
}'
The API returns a JSON object with the following fields:
Field | Type | Description |
---|---|---|
query | object | The information you provided to the service for verification. |
account_valid | boolean | Indicates whether the account number is valid and exists in the bank. |
name_match | string | Indicates whether the name you provided matches the name of the account with the bank. |
success | boolean | Indicates if the verification has been successfully completed. If false an error message will be present. |
error | string | Message describing the error which prevented the validation. |
The query
object contains information about the query request.
Field | Type | Description |
---|---|---|
country_code | string | The 2 letter ISO country code. |
bank_code | string | The bank code / sort code which is used to identify the issuing bank or institution. |
account | string | The bank account number sent to the bank for verification. |
name | string | The name of the account owner you sent for performing a name match. |
success | boolean | This flag indicates if the query was successfully completed with the issuing financial institution. |
The account_valid
field indicates whether the bank account number is and exists with the issuing bank.
Possible values are 'true', 'false' and 'null' in case check cannot be carried out.
The name_match
field indicates whether the name you provided matches the owner of the account.
Possible values for this field are 'Yes', 'No', 'Partial'.
Partial indicates that part of the name matches the account owner.
The error
field provides a human readable message describing any error occurred during the validation process.
{
"query": {
"country": "FR",
"bank_code": null,
"account": null,
"IBAN": "FR7630006000011234567890189",
"name": "John Doe",
"success": true
},
"account_valid": true,
"name_match": "Yes",
"error": null
}
API response times may vary depending on the country/provider.
For France average response time is 50 seconds.
If an error occurs during the request, the API may return an appropriate HTTP status code along with an error response in the JSON format. Common error fields may include:
HTTP Status | Message | Cause/Solution |
---|---|---|
400 | Bad Request. Missing header: x-api-key | You need to send the API key within the header of your http request. |
400 | Bad Request. Invalid JSON | The request body must be a valid JSON structure. |
400 | Bad Request. Missing parameter: country_code | Country code must be provided in the request body |
400 | Bad Request. Missing parameter: bank_code | Bank code must be provided in the request body |
400 | Bad Request. Missing parameter: account | Account Number must be provided in the request body |
400 | Bad Request. Missing parameter: name | Name of the account owner must be provided for match verification to be performed. |
401 | API Key is invalid | You must provide a valid API key to identify your account with the API. |
401 | IP Address is not allowed | You have enabled IP access restriction in your account. You need to allow access for the IP address of the server which is making the request. |
401 | You have no access to this API/td> | Your account does not have access to this service. You need to purchase a license/subscription. |
401 | Subscription expired | The service plan has expired. You need to renew your subscription from your Client Area -> My Services section. |
401 | No credits available | The pre-loaded credits in your service plan have been exhausted. You need to refill your plan by purchasing another package from your Client Area -> Pricing section. |
400 | Invalid sort code or account number. | The sort code and account number you sent were not accepted by the bank as one of the two is invalid. This could indicate a syntax error. |
503 | Verification failed due to technical issue with the bank. | The issuing bank is not responding. We were unable to verify the data you sent. Credits will not be deducted from your account in this case. |
400 | This is not a personal account. | Verification was carried out. The bank indicates that this is not a personal account. It seems that the account you provided belongs to a company. You must set account_type to 'company' and provide 'SIREN' parameter for verification. |
400 | Account does not exist or is closed. | The verification was carried out, however the bank reports this account as closed or non existent. |
400 | IBAN is not valid | The IBAN you sent for confirmation is not valid. Check if you have entered it incorrectly. |
500 | Internal Server Error. | There was a problem with the service on our end. If the problem persists, please contact our support team. Credits will not be deducted from your account in this case. |
429 | Too many requests. Rate limit reached. | Our API is rate limited to provide optimal performance. Please throttle your requests. |
Ensure to handle error responses gracefully and provide appropriate feedback to users.