Elixir Library for working with IBAN numbers (parsing, validating and checking and formatting)
Go to file
Danil Negrienko 5cfc3f5fa2 Check to existing country module before parsing bban 2024-05-15 00:04:47 -04:00
lib Check to existing country module before parsing bban 2024-05-15 00:04:47 -04:00
test Added first non SEPA countries 2024-05-14 19:15:55 -04:00
.formatter.exs Initial commit 2024-03-05 06:02:58 -05:00
.gitignore Initial commit 2024-03-05 06:02:58 -05:00
.iex.exs Initial commit 2024-03-05 06:02:58 -05:00
README.md Added first non SEPA countries 2024-05-14 19:15:55 -04:00
TODO.md Added first non SEPA countries 2024-05-14 19:15:55 -04:00
mix.exs Added first non SEPA countries 2024-05-14 19:15:55 -04:00
mix.lock Initial commit 2024-03-05 06:02:58 -05:00

README.md

IbanEx

Elixir library for working with IBAN numbers (parsing, validating, checking and formatting)

What is an IBAN?

IBAN (which stands for International Bank Account Number) is an internationally agreed code made up of up to 34 letters and numbers which helps banks make sure that international transfers are processed correctly.

In just a few letters and numbers, the IBAN captures all of the country, bank, and account details you need to send or receive money internationally. This system is used throughout Europe, and also recognised in some areas of the Middle East, North Africa and the Caribbean. Find IBAN examples for every country where it's used.

HowTo Use

Successfull case to parse IBAN

    iex>  "FI2112345600000785" |> IbanEx.Parser.parse()
    {:ok, %IbanEx.Iban{
      country_code: "FI",
      check_digits: "21",
      bank_code: "123456",
      branch_code: nil,
      national_check: "5",
      account_number: "0000078"
    }}

Errors cases of IBAN parsing

To check IBAN's country is supported

    iex> {:error, unsupported_country_code} = IbanEx.Parser.parse("ZU21NABZ00000000137010001944")
    {:error, :unsupported_country_code}
    iex> IbanEx.Error.message(unsupported_country_code)
    "Unsupported country code"

Validate and check IBAN length

    iex> {:error, invalid_length} = IbanEx.Parser.parse("AT6119043002345732012")
    {:error, :invalid_length}
    iex> IbanEx.Error.message(invalid_length)
    "IBAN violates the required length"
    iex> {:error, length_to_long} = IbanEx.Validator.check_iban_length("AT6119043002345732012")
    {:error, :length_to_long}
    iex> IbanEx.Error.message(length_to_long)
    "IBAN longer then required length"
    iex> {:error, length_to_short} = IbanEx.Validator.check_iban_length("AT61190430023457320")
    {:error, :length_to_short}
    iex> IbanEx.Error.message(length_to_short)
    "IBAN shorter then required length"

Validate IBAN checksum

    iex> {:error, invalid_checksum} = IbanEx.Parser.parse("AT621904300234573201")
    {:error, :invalid_checksum}
    iex> IbanEx.Error.message(invalid_checksum)
    "IBAN's checksum is invalid"

Installation

The package can be installed by adding iban_ex to your list of dependencies in mix.exs:

def deps do
  [
    {:iban_ex, "~> 0.1.6"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/iban_ex.