Validate International Bank Account Numbers (IBAN) with country-specific checks
IBAN Validator
Validate International Bank Account Numbers (IBAN) with country-specific checks
How IBAN Validation Works
Use this free IBAN Validator to instantly check whether an International Bank Account Number is correctly formatted for any of the 80+ countries that use the IBAN standard. The tool performs a full MOD-97 checksum verification and validates country-specific length and format rules. This validator uses the ISO 13616 IBAN standard, maintained by SWIFT.
Whether you are processing payments, building a fintech app, or cleaning up a database of account numbers, you can validate individual IBANs or paste in a batch list. Developers can also access validation via the REST API endpoint for integration into payment flows, KYC pipelines, or banking applications.
- Supports all 80+ IBAN countries worldwide
- Country-specific length and format validation
- MOD-97 checksum verification (ISO 13616)
- Real-time validation with detailed error reporting
- Bulk validation for multiple IBANs at once
- IBAN component breakdown (country, bank, branch, account)
How to Use IBAN Validator
- Enter IBAN - Input the complete IBAN code (with or without spaces)
- Automatic Detection - Country is detected from the first 2 letters
- Validation - Length, format, and checksum are verified
- Results - Get detailed validation results and error explanations
- Integration - Use validation results in your applications
Frequently Asked Questions
How to validate an iban number?
What is iban validation algorithm?
How to check if iban is valid?
Difference between iban and swift code?
Does iban validation confirm the account exists?
Understanding IBAN Structure
An IBAN consists of up to 34 alphanumeric characters with a specific structure that varies by country. Understanding this structure is crucial for proper validation and implementation.
IBAN Components:
Country Examples:
| Country | Code | Length | Example Format |
|---|---|---|---|
| Germany | DE | 22 | DE89 3704 0044 0532 0130 00 |
| France | FR | 27 | FR14 2004 1010 0505 0001 3M02 606 |
| United Kingdom | GB | 22 | GB29 NWBK 6016 1331 9268 19 |
| Spain | ES | 24 | ES91 2100 0418 4502 0005 1332 |
| Italy | IT | 27 | IT60 X054 2811 1010 0000 0123 456 |
Common Use Cases
Banking and Finance:
- International money transfers
- Payment processing systems
- Banking application integration
- KYC and compliance verification
- Account onboarding processes
- Financial data validation
- Cross-border payment validation
- Banking API implementations
Development and Integration:
- E-commerce payment forms
- Financial software development
- Accounting system integration
- Mobile banking applications
- Fintech platform development
- Payment gateway validation
- Database data cleanup
- API data verification
IBAN Validation Algorithm
The IBAN validation process follows a standardized algorithm that ensures both structural and mathematical correctness of the account number.
Validation Steps:
- Length Check: Verify the IBAN length matches the country's standard
- Character Check: Ensure only valid alphanumeric characters are used
- Country Code: Validate the first two letters against ISO 3166-1
- Rearrangement: Move the first 4 characters to the end
- Character Substitution: Replace letters with numbers (A=10, B=11, etc.)
- MOD-97 Calculation: Calculate remainder when divided by 97
- Result Verification: Valid IBAN should have remainder of 1
Implementation Example:
// IBAN Validation Algorithm
function validateIBAN(iban) {
// Remove spaces and convert to uppercase
const cleanIban = iban.replace(/\s/g, '').toUpperCase();
// Check basic format
if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/.test(cleanIban)) {
return false;
}
// Rearrange: move first 4 chars to end
const rearranged = cleanIban.slice(4) + cleanIban.slice(0, 4);
// Convert letters to numbers (A=10, B=11, etc.)
const numericString = rearranged.replace(/[A-Z]/g, char =>
(char.charCodeAt(0) - 55).toString()
);
// Calculate MOD-97
return mod97(numericString) === 1;
}
// MOD-97 for large numbers (string-based)
function mod97(numStr) {
let remainder = 0;
for (let i = 0; i < numStr.length; i++) {
remainder = (remainder * 10 + parseInt(numStr[i])) % 97;
}
return remainder;
}
// Usage examples
console.log(validateIBAN('GB82 WEST 1234 5698 7654 32')); // true
console.log(validateIBAN('DE89 3704 0044 0532 0130 00')); // true
console.log(validateIBAN('FR14 2004 1010 0505 0001 3M02 606')); // true
