Validate any IBAN in under 65ms using offline MOD-97 computation. Get BIC codes, bank names, and SEPA status from the Bundesbank SCL-Directory. Zero external dependencies.
{
"valid": true,
"iban": "DE89370400440532013000",
"country_code": "DE",
"bank_name": "Commerzbank",
"bic": "COBADEFFXXX",
"bank_city": "Frankfurt am Main",
"sepa_supported": true,
"confidence": "HIGH",
"response_time_ms": 12
}
Many applications rely on simple regex patterns or basic length checks for IBAN validation. This misses transposition errors, invalid check digits, and provides zero insight into the bank behind the number. Your payment failures and chargebacks tell the real story.
A regex can verify format but not the MOD-97 checksum. Two transposed digits pass regex validation but fail actual bank transfers, causing rejected payments.
Format validation alone tells you nothing about the bank. You need the BIC/SWIFT code, bank name, and SEPA eligibility to process cross-border EU payments correctly.
Each failed SEPA transfer costs processing fees, customer support time, and delayed revenue. Proper upfront IBAN validation prevents these failures entirely.
Each EU country has different IBAN lengths and formats. Germany uses 22 characters, France uses 27, Malta uses 31. Building and maintaining country-specific rules is error-prone.
Full algorithmic validation using ISO 13616 MOD-97 plus bank data enrichment from the Bundesbank SCL-Directory. No external API calls, no network latency, no downtime risk.
MOD-97 checksum computed locally with zero network calls. Consistently fast response times regardless of upstream availability. Pure math, pure speed.
Every valid IBAN response includes the BIC code, bank name, and bank city. Data sourced from the Bundesbank SCL-Directory, updated monthly for accuracy.
Instantly know if a bank account supports SEPA credit transfers and direct debits. Essential for automated EU payment processing and recurring billing.
Validates IBAN length and structure against country-specific rules for all EU member states. Catches format errors before they become payment failures.
Validate up to 1,000 IBANs in a single batch request. Since validation is offline, batch results return within seconds. Perfect for data migration and cleanup.
No external API dependencies means no downtime. IBAN validation works even if every government service in Europe goes offline simultaneously.
Send an IBAN (with or without spaces) and get back validation status, bank details, BIC code, and SEPA eligibility in a single JSON response.
# Validate a German IBAN curl "https://api.eurovalidate.com/v1/iban/DE89370400440532013000" \ -H "X-API-Key: your_api_key" # Response { "success": true, "data": { "valid": true, "iban": "DE89370400440532013000", "country_code": "DE", "bank_name": "Commerzbank", "bic": "COBADEFFXXX", "sepa_supported": true }, "meta": { "confidence": "HIGH", "source": "offline_mod97", "response_time_ms": 12 } }
import httpx response = httpx.get( "https://api.eurovalidate.com/v1/iban/DE89370400440532013000", headers={"X-API-Key": "your_api_key"} ) data = response.json() if data["data"]["valid"]: print(f"Bank: {data['data']['bank_name']}") print(f"BIC: {data['data']['bic']}") print(f"SEPA: {data['data']['sepa_supported']}") else: print("Invalid IBAN")
const response = await fetch( "https://api.eurovalidate.com/v1/iban/DE89370400440532013000", { headers: { "X-API-Key": "your_api_key" } } ); const { data, meta } = await response.json(); if (data.valid) { console.log(`Bank: ${data.bank_name}`); console.log(`BIC: ${data.bic}`); console.log(`SEPA: ${data.sepa_supported}`); } else { console.log("Invalid IBAN"); }
Start free. Scale as you grow. No credit card required for the free tier. All plans include IBAN validation, VAT, EORI, and company lookup.
Common questions about the EuroValidate IBAN Validation API.
Get your free API key and validate your first IBAN in under 60 seconds.