insurello / elm-swedish-bank-account-number / SwedishBankAccountNumber.ClearingNumber

Validating a bank account number is a two-step process: First you need to validate the clearing number. Why?

This module lets you validate clearing numbers.


type alias ClearingNumber =
SwedishBankAccountNumber.ClearingNumberInternal.ClearingNumberInternal

Represents a Swedish clearing number.

The only way to create a value of the ClearingNumber type is by calling fromString. This way, if you encounter a ClearingNumber, you know that it is always valid.

ClearingNumber also contains information about which Swedish bank the bank account number is for.


type Error
    = BadLength Basics.Int
    | Unknown

Trying to construct a ClearingNumber can fail in two ways:


type Category
    = Standard
    | DataclearingOnly
    | Historical

Banks are categorized into three categories:

fromString : String -> Result Error ( Category, ClearingNumber )

Validate and construct a ClearingNumber.

The clearing number string is allowed to have any kind of crazy formatting. The function simply takes all the digits of the string and discards all other characters. The following all mean the same thing:

9420
94 20
94,20
abc94-2#0!

If you have a form field for the clearing number, you might want to normalize it on blur. You can use String.filter Char.isDigit myString to do so.

The function also returns the Category of the bank, to remind you to case on the different categories:

toString : ClearingNumber -> String

Get a string containing digits only (no hyphens or spaces or anything), such as “9420”.

getBankName : ClearingNumber -> String

Get a human readable string name of the bank identified from the clearing number, such as “Länsförsäkringar Bank”.