Skip to content

Validation, field extraction and creation of IBAN, BBAN, BIC numbers

License

Notifications You must be signed in to change notification settings

koblas/ibankit-js

Repository files navigation

ibankit

npm version License

A library for generation and validation of International Bank Account Numbers (IBAN, ISO 13616) and Business Identifier Codes (BIC, ISO_9362).

Key Features

  • Drop-in replaceable with iban-js
  • Currently conformant with Version 95 (July 2023) of the IBAN registry
  • Decodes bank, branch and account numbers from IBAN
  • Supports random BBAN / IBAN generation for testing
  • Has BIC validation as a bonus
  • Supports validation of National Check Digits if part of BBAN format
  • Full TypesScript support
  • No external dependencies

SWIFT IBAN Registry

This release should be compatible with the SWIFT IBAN Registry Version 95. There may be a limited number of value differences, some countries in the Registry doesn't describe bank/branch information but may expose it as 3!n4!n but leave the branch description as a blank.

IBAN quick examples

// How to generate IBAN
const ibanStr = new IBANBuilder()
  .countryCode(CountryCode.AT)
  .bankCode("19043")
  .accountNumber("00234573201")
  .build()
  .toString();

// How to create IBAN object from String
const iban = new IBAN("DE89370400440532013000");

// The library ignores spaces in IBANs, this is valid
const iban = new IBAN("DE89 3704 0044 0532 0130 00");

// For testing, the library will also generate random IBANs
const iban = IBAN.random(CountryCode.AT);
const iban = IBAN.random();
const iban = new IBANBuilder().countryCode(CountryCode.AT).bankCode("19043").build();

// For simplicity in porting from iban-js applications
// you can quickly check validity
IBAN.isValid("AT611904300234573201"); // ===  true
IBAN.isValid("DE89 3704 0044 0532 0130 00"); // == true
IBAN.isValid("hello world"); // == false

BIC quick examples

// How to create BIC object from String
const bic = BIC("DEUTDEFF");

// Check to see is BIC code is valid
BIC.isValid("DEUTDEFF500"); // === true

TODO

  • Finish writing all national check digit generators (see Oracle spec)
  • For random IBANs the National Check digits is random, rather than "valid"

References

Credits

License

Copyright 2018-2023 David Koblas

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0