Iban validation and helpers Refer https://en.wikipedia.org/wiki/International_Bank_Account_Number for more details
- Add
iban_tools
to your list of dependencies inmix.exs
:
```elixir
def deps do
[{:iban_tools, "~> 0.1.0"}]
end
```
-
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 3214282912345698765432161182
-
Validate Modulo 97 check passes or not
iex(1)> "RO7999991B31007593840000" |> IbanTools.iban_values |> IbanTools.Numerify.check_valid_check_digits :ok
-
Get 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"
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}