IbanTools
Iban validation and helpers Refer https://en.wikipedia.org/wiki/International_Bank_Account_Number for more details
Installation
-
Add
iban_toolsto your list of dependencies inmix.exs:
```elixir
def deps do
[{:iban_tools, "~> 0.1.0"}]
end
```Usage
Get Iban related info in map
iex(2)> IbanTools.iban_values("ES12345") %{actual_code: "ES12345", bban: "345", check_digits: "12", code: "ES12345", country_code: "ES", len: 7}Validate Iban and get error info as per violation
iex(10)> IbanTools.valid("ES8901820507910202155087") {:ok, :valid, "Iban code is valid"}Get numerified Iban value as needed for check digit validation (modulo 97)
iex(4)> "GB82 WEST 1234 5698 7654 32" |> IbanTools.iban_values |> IbanTools.Numerify.numerify 3214282912345698765432161182Validate Modulo 97 check passes or not
iex(1)> "RO7999991B31007593840000" |> IbanTools.iban_values |> IbanTools.Numerify.check_valid_check_digits :okGet sanitised IBAN code
iex(7)> " ro7999991ı31007593840001 " |> IbanTools.canonicalize_code "RO7999991I31007593840001"Pretty print IBAN code for better human readability
iex(1)> "RO7999991B31007593840001" |> IbanTools.pretty_print "RO79 9999 1B31 0075 9384 0001"
Supported Error/Message codes
iex(3)> IbanTools.valid("ES")
{:error, :min_length, "Code should have atleast 5 characters"}
iex(4)> IbanTools.valid("ESA")
{:error, :min_length, "Code should have atleast 5 characters"}
iex(5)> IbanTools.valid("ESAB")
{:error, :min_length, "Code should have atleast 5 characters"} iex(5)> IbanTools.valid("gb99 %BC")
{:error, :bad_chars, "Only alphanumeric characters allowed"} iex(6)> IbanTools.valid("IN9386011117947")
{:error, :unknown_country_code, "Not a valid SEPA compatible country"} iex(7)> IbanTools.valid("ES890182050791020215508")
{:error, :invalid_code_length, "Violation of Country Code length"} iex(8)> IbanTools.valid("ES89AB820507910202155087")
{:error, :invalid_bban_format, "Violation of Country bban format"} iex(2)> "RO7999991B31007593840001" |> IbanTools.iban_values |> IbanTools.Numerify.check_valid_check_digits
{:error, :bad_check_digits}