Loading
Loading
The IBAN Validation API checks any International Bank Account Number in a single request and tells you whether it is valid. It returns a structural breakdown of the IBAN, a domestic account checksum result for supported countries, SEPA eligibility, and bank details such as the institution name and SWIFT/BIC code where they are on record. It is built for fintech engineers onboarding accounts, payments teams preventing failed transfers, and developers adding account checks to checkout and payroll flows. New accounts start with 10,000 free credits and no credit card required.
validation object with five boolean checks: is_alpha_numeric, is_valid_length, is_valid_structure, is_iban_check_digit_valid, and is_iban_supported_country. Together they confirm the IBAN uses only permitted characters, matches the fixed length for its country, follows the correct structure, passes the ISO 7064 mod-97 check-digit test, and belongs to a country that issues IBANs. Use it to reject malformed or mistyped account numbers at the point of entry, before a payment is ever attempted.validation.bbanfield. Supported countries are the United Kingdom (GB), Germany (DE), France (FR), Italy (IT), Spain (ES), Netherlands (NL), Sweden (SE), and Belgium (BE). This catches account-number errors that pass the IBAN check digit but fail the bank's own domestic rules. Use it where a returned transfer is expensive — payroll runs, supplier payouts, and recurring direct debits.bank_data.sepa field returns true when the validated IBAN belongs to a country inside the Single Euro Payments Area. This tells you up front whether a euro payment can move over SEPA rails or needs an international transfer instead. Use it to branch payment routing logic, surface the right fees at checkout, and flag non-SEPA accounts before a batch payout is submitted.bank_data object: country (full name), country_iso2 (two-letter code), bank_code, branch_code, and the domestic account number. Each component follows the banking standard for that country. Use it to store normalized account data, pre-fill banking forms, and reconcile accounts against your own records without writing per-country parsing logic.bank (institution name), bic (SWIFT/BIC code), city, and address. Complete details are available for the United Kingdom (GB), Pakistan (PK), Ireland (IE), Gibraltar (GI), Bahrain (BH), and Azerbaijan (AZ); Germany (DE) returns bank name and SWIFT/BIC, and Sweden (SE) returns bank name. Where a country is not covered these fields return null. Use it to confirm the destination institution alongside the account number.Check supplier and employee accounts as they are added or updated, so a payroll or invoice run never fails on a malformed account number. The domestic checksum catches errors that a basic format check would miss.
Validate the account at the point of entry in checkout, confirm SEPA eligibility for euro direct debits, and show the customer a clear error instead of a failed payment days later.
$ pip install requestsimport requests
url = "https://api.apifreaks.com/v1.0/iban/validation"
payload = {}
headers = {
'X-apiKey': 'API-KEY'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Our API validates IBAN format for countries worldwide. For a complete list of supported countries, view all Supported Countries.
For select countries, the API performs additional domestic account number validation beyond standard IBAN format checks. This verifies that bank codes and account numbers are mathematically correct according to local banking standards.
For certain countries, valid IBANs return detailed banking information extracted from official registries.
Send the IBAN as the iban query parameter. A 2xx response returns the top-level valid flag, the validation object (per-check booleans), and the bank_data object.
# Response { "valid": true, "iban": "GB29NWBK60161331926819", "validation": { "is_alpha_numeric": true, "is_iban_supported_country": true, "is_valid_length": true, "is_valid_structure": true, "is_iban_check_digit_valid": true, "bban": "valid" }, "bank_data": { "bic": "NWBKGB2LBHM", "bank": "NATIONAL WESTMINSTER BANK PLC", "bank_code": "NWBK", "branch_code": "601613", "country": "United Kingdom", "country_iso2": "GB", "city": "BIRMINGHAM", "address": "6 BRINDLEY PLACE - BIRMINGHAM, B1", "account": "31926819", "sepa": true } }curl -X GET 'https://api.apifreaks.com/v1.0/iban/validation?iban=GB29NWBK60161331926819' -H 'X-apiKey: API-KEY'
Read bank_data.sepa from the same response. true means the account sits inside the Single Euro Payments Area; branch on it to choose SEPA or international rails. Pass the IBAN as a single string with no spaces.
# Response { "valid": true, "iban": "DE89370400440532013000", "validation": { "is_alpha_numeric": true, "is_iban_supported_country": true, "is_valid_length": true, "is_valid_structure": true, "is_iban_check_digit_valid": true, "bban": "valid" }, "bank_data": { "bic": "COBADEFFXXX", "bank": "Commerzbank", "bank_code": null, "branch_code": "", "country": "Germany", "country_iso2": "DE", "city": "Zülpich", "address": null, "account": "0532013000", "sepa": true } }curl -X GET 'https://api.apifreaks.com/v1.0/iban/validation?iban=DE89370400440532013000' -H 'X-apiKey: API-KEY'
For supported countries the bank_data object carries bank, bic, city, and address alongside branch_code and the parsed account number. Where a country is not covered these fields are null— check for null before you display them.
# Response { "valid": true, "iban": "GB82WEST12345698765432", "validation": { "is_alpha_numeric": true, "is_iban_supported_country": true, "is_valid_length": true, "is_valid_structure": true, "is_iban_check_digit_valid": true, "bban": "valid" }, "bank_data": { "bic": null, "bank": null, "bank_code": null, "branch_code": "123456", "country": "United Kingdom", "country_iso2": "GB", "city": null, "address": null, "account": "98765432", "sepa": true } }curl -X GET 'https://api.apifreaks.com/v1.0/iban/validation?iban=GB82WEST12345698765432' -H 'X-apiKey: API-KEY'
For GB, DE, FR, IT, ES, NL, SE, and BE the validation.bbanfield reports the domestic account checksum result. Treat a non-"valid" bban as a failed account even when the IBAN check digit passes, and surface it as a correctable input error.
# Response { "valid": true, "iban": "FR1420041010050500013M02606", "validation": { "is_alpha_numeric": true, "is_iban_supported_country": true, "is_valid_length": true, "is_valid_structure": true, "is_iban_check_digit_valid": true, "bban": "invalid" }, "bank_data": { "bic": null, "bank": null, "bank_code": null, "branch_code": "", "country": "France", "country_iso2": "FR", "city": null, "address": null, "account": "010050500013M02606", "sepa": true } }curl -X GET 'https://api.apifreaks.com/v1.0/iban/validation?iban=FR1420041010050500013M02606' -H 'X-apiKey: API-KEY'
valid flag, a validation object with five per-check booleans plus the bban result, and a bank_data object containing the parsed components (country, country_iso2, bank_code, branch_code, account), the sepa flag, and bank details (bank, bic, city, address) for supported countries.validation object: is_alpha_numeric (permitted characters), is_valid_length (correct length for the country), is_valid_structure (correct layout), is_iban_check_digit_valid (ISO 7064 mod-97 check digit), and is_iban_supported_country. For eight countries it adds a domestic BBAN checksum in the bban field.validation.bbanreports whether the domestic account number passes the bank's own checksum rules — a layer beyond the standard IBAN check digit.bank, bic, city, address) are returned for the United Kingdom (GB), Pakistan (PK), Ireland (IE), Gibraltar (GI), Bahrain (BH), and Azerbaijan (AZ). Germany (DE) returns bank name and SWIFT/BIC, and Sweden (SE) returns bank name. For all other countries the bank_data fields are null.bank_data.sepafield returns true when the IBAN's country belongs to the Single Euro Payments Area. Use it to decide whether a euro payment can settle over SEPA rails or must be sent as an international transfer.valid: false.To use the IBAN Validation API, API credits are required. Charges apply only for successful queries, defined by a 2xx status code. If a request results in a 4xx or 5xx status code, no credits will be deducted, and any credits already charged will be refunded.
For each successful request, 20 credit will be charged. Utilize the Credits Usage API to efficiently monitor your recent consumption of both one-off and subscription credits. This API provides a streamlined way to track and manage your credit usage, ensuring you stay informed about your remaining balance and can optimize your resource allocation effectively.