IBAN Validation API - Validate Format, Check SEPA & Return Bank Details
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.
Features
Format & Check-Digit Validation
Every response carries avalidation 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.BBAN Domestic Checksum
For eight countries the API runs a second checksum on the domestic part of the account (the BBAN), reported in thevalidation.bban field. 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.SEPA Eligibility
Thebank_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.Structured IBAN Breakdown
The API parses the IBAN into its components and returns them in thebank_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 Information Lookup
For supported countries, a valid IBAN returns banking details extracted from official registries: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.Built for These Use Cases
Fintech and marketplace onboarding
Validate an account the moment a user or vendor enters it, store the normalized components, and reject typos before they reach your ledger. Pair it with the VAT Number Validation API when you onboard businesses and need both the tax number and the payout account checked in the same flow.Pre-flight checks before a payout
Run every beneficiary IBAN through the API before a transfer is initiated to cut returned and misrouted payments. The SEPA result lets you route euro payments over the right rails, and when you need the full bank record behind a returned SWIFT/BIC, hand it to the SWIFT/BIC Code Lookup API.Accounts payable and payroll
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.
Bank-transfer and direct-debit checkout
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.
API Endpoint
$ 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)
Supported IBAN Countries
Our API validates IBAN format for countries worldwide. For a complete list of supported countries, view all Supported Countries.
BBAN Checksum Verification
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.
Supported Countries with BBAN Validation:
- United Kingdom (GB)
- Germany (DE)
- France (FR)
- Italy (IT)
- Spain (ES)
- Netherlands (NL)
- Sweden (SE)
- Belgium (BE)
Bank Information Lookup
For certain countries, valid IBANs return detailed banking information extracted from official registries.
Complete Bank Details (Name, SWIFT/BIC, City, Address)
- United Kingdom (GB)
- Pakistan (PK)
- Ireland (IE)
- Gibraltar (GI)
- Bahrain (BH)
- Azerbaijan (AZ)
Limited Bank Details
- Germany (DE) - Bank name and SWIFT/BIC code
- Sweden (SE) - Bank name only
How to Guides
Validate an IBAN and read the response
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'
Check SEPA eligibility
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'
Extract bank and branch information
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'
Handle BBAN domestic validation
For GB, DE, FR, IT, ES, NL, SE, and BE the validation.bban field 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'
Frequently Asked Questions
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.bban reports 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.sepa field 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.Pricing
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.