65.9K
CodeProject is changing. Read more.
Home

IBAN Validator

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6 votes)

May 20, 2014

CPOL
viewsIcon

74081

Quick&Dirty static method for IBAN code validation

Introduction

For those who need a small, compact, working out of the box IBAN Validator without all the bells and whistles.

Background

Very good article about IBAN validating here on CodeProject:

http://www.codeproject.com/Articles/55667/IBAN-Verification-in-C-Excel-Automation-Add-in-Wor

Using the code

Just put this static method wherever you need it and invoke it on the string containing the iban.

Retruns TRUE only on a valid IBAN account number.

public static bool ValidateBankAccount(string bankAccount)
        { 
            bankAccount = bankAccount.ToUpper(); //IN ORDER TO COPE WITH THE REGEX BELOW
            if (String.IsNullOrEmpty(bankAccount))
                return false;
            else if (System.Text.RegularExpressions.Regex.IsMatch(bankAccount, "^[A-Z0-9]"))
            {
                bankAccount = bankAccount.Replace(" ", String.Empty);
                string bank =
                bankAccount.Substring(4, bankAccount.Length - 4) + bankAccount.Substring(0, 4);
                int asciiShift = 55;
                StringBuilder sb = new StringBuilder();
                foreach (char c in bank)
                {
                    int v;
                    if (Char.IsLetter(c)) v = c - asciiShift;
                    else v = int.Parse(c.ToString());
                    sb.Append(v);
                }
                string checkSumString = sb.ToString();
                int checksum = int.Parse(checkSumString.Substring(0, 1));
                for (int i = 1; i < checkSumString.Length; i++)
                {
                    int v = int.Parse(checkSumString.Substring(i, 1));
                    checksum *= 10;
                    checksum += v;
                    checksum %= 97;
                }
                return checksum == 1;
            }
            else
                return false;
        }