kramer65
kramer65

Reputation: 53933

How to check an IBAN number using the Apache IBANCheckDigit?

In my Android app, I'm trying to check if an IBAN bank account number is valid. This supposedly can be done using the Apache IBANCheckDigit. I now try do so as follows:

IBANCheckDigit a = new IBANCheckDigit();
try {
    String checkDigit = a.calculate("MY_IBAN_NUMBER_HERE");
    Boolean b = a.isValid(checkDigit);
    Log.e("isValid: ", b.toString());
} catch (CheckDigitException e) {
    Log.e(this, "THIS IS AN ERROR");
}

This however, always prints false. Even if I insert my own (correct) IBAN-number, it also gives a false.

Does anybody know how to use this Apache IBANCheckDigit? Any tips are welcome!

Upvotes: 4

Views: 11774

Answers (2)

Artur Mkrtchyan
Artur Mkrtchyan

Reputation: 981

iban4j might be good choice for IBAN validation, which is validating not only check digit but also IBAN length, structure, character types, etc...

home page: https://github.com/arturmkrtchyan/iban4j

Code Sample:

try {
    IbanUtil.validate("AT611904300234573201");
    // valid
} catch (IbanFormatException e) {
    // invalid
}

Maven dependency:

<dependency>
     <groupId>org.iban4j</groupId>
     <artifactId>iban4j</artifactId>
     <version>1.0.0</version>
</dependency>

Upvotes: 2

Joni
Joni

Reputation: 111349

To check if the IBAN check digits are valid you should use the isValid method only:

Boolean b = a.isValid("MY_IBAN_NUMBER_HERE");
Log.e("isValid: ", b.toString());

The calculate method would compute the check digits if you did not know them already.

Upvotes: 6

Related Questions