{"id":20290599,"url":"https://github.com/gocardless/ibandit","last_synced_at":"2025-04-14T20:56:52.682Z","repository":{"id":25170731,"uuid":"28593794","full_name":"gocardless/ibandit","owner":"gocardless","description":"Convert national banking details into IBANs, and vice-versa.","archived":false,"fork":false,"pushed_at":"2025-02-18T15:20:24.000Z","size":2944,"stargazers_count":107,"open_issues_count":3,"forks_count":17,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-04-07T16:11:32.906Z","etag":null,"topics":["banking","gem","iban","iban-validation","ruby"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gocardless.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-12-29T13:52:42.000Z","updated_at":"2025-03-13T08:06:59.000Z","dependencies_parsed_at":"2024-06-18T21:18:15.604Z","dependency_job_id":"408820df-09f8-4624-bd41-21f66c9829ce","html_url":"https://github.com/gocardless/ibandit","commit_stats":{"total_commits":467,"total_committers":47,"mean_commits":9.936170212765957,"dds":0.6445396145610278,"last_synced_commit":"93f8a8294b3b0a1a293447097418e3e96d6b43c7"},"previous_names":[],"tags_count":116,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gocardless%2Fibandit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gocardless%2Fibandit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gocardless%2Fibandit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gocardless%2Fibandit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gocardless","download_url":"https://codeload.github.com/gocardless/ibandit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961186,"owners_count":21189991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["banking","gem","iban","iban-validation","ruby"],"created_at":"2024-11-14T15:08:25.739Z","updated_at":"2025-04-14T20:56:52.658Z","avatar_url":"https://github.com/gocardless.png","language":"Ruby","readme":"Ibandit [![CircleCI](https://circleci.com/gh/gocardless/business.svg?style=svg)](https://circleci.com/gh/gocardless/business)\n=======\n\nIbandit is a Ruby library for manipulating and validating\n[IBANs](http://en.wikipedia.org/wiki/International_Bank_Account_Number).\n\nThe primary objective is to provide an interface that enables the storage and retrieval of national banking details as a single value. This may be an IBAN, if a country fully and unambiguously supports it, or a combination of IBAN and/or pseudo-IBAN.\n\nTherefore, there are three distinct modes:\n\n1. For countries that support any form of IBAN: construct and validate IBAN from national banking details\n2. For countries that have unambiguous IBANs: deconstruct an IBAN into national banking details\n3. For countries where either of the above is not possible: a pseudo-IBAN as a substitute for the above.\n\nFor storage, you should always try to use the `pseudo_iban`, falling back to `iban` if it is not available.\n\nFor example:\n- Sweden does support IBANs (**1.**) but the format is ambiguous due to variable length account numbers so they cannot be deconstructed (**2.**). For persistence, we therefore recommend using pseudo-IBANs (**3.**) because the national banking details can be recovered from them.\n- Australia does not support IBANs (**1.** \u0026 **2.**), therefore pseudo-IBANs (**3.**) can be created from national banking details for storage. To get back the national banking details, you can pass the pseudo-IBAN to Ibandit and it will parse out the national banking details again for use.\n\n# Supported Countries\n\n| Country         | Construct and Validate IBANs | Deconstruct IBANs  | Pseudo IBANs       |\n|-----------------|:----------------------------:|:------------------:|:------------------:|\n| Australia       |                              |                    | :white_check_mark: |\n| Austria         | :white_check_mark:           | :white_check_mark: |                    |\n| Belgium         | :white_check_mark:           | :white_check_mark: |                    |\n| Bulgaria        | :white_check_mark:           | :white_check_mark: |                    |\n| Croatia         | :white_check_mark:           | :white_check_mark: |                    |\n| Canada          |                              |                    | :white_check_mark: |\n| Cyprus          | :white_check_mark:           | :white_check_mark: |                    |\n| Czech Republic  | :white_check_mark:           | :white_check_mark: |                    |\n| Denmark         | :white_check_mark:           | :white_check_mark: |                    |\n| Estonia         | :white_check_mark:           | :white_check_mark: |                    |\n| Finland         | :white_check_mark:           | :white_check_mark: |                    |\n| France          | :white_check_mark:           | :white_check_mark: |                    |\n| Germany         | :white_check_mark:           | :white_check_mark: |                    |\n| Greece          | :white_check_mark:           | :white_check_mark: |                    |\n| Hungary         | :white_check_mark:           | :white_check_mark: |                    |\n| Ireland         | :white_check_mark:           | :white_check_mark: |                    |\n| Iceland         | :white_check_mark:           | :white_check_mark: |                    |\n| Italy           | :white_check_mark:           | :white_check_mark: |                    |\n| Latvia          | :white_check_mark:           | :white_check_mark: |                    |\n| Lithuania       | :white_check_mark:           | :white_check_mark: |                    |\n| Luxembourg      | :white_check_mark:           | :white_check_mark: |                    |\n| Monaco          | :white_check_mark:           | :white_check_mark: |                    |\n| Malta           | :white_check_mark:           | :white_check_mark: |                    |\n| Netherlands     | :white_check_mark:           | :white_check_mark: |                    |\n| Norway          | :white_check_mark:           | :white_check_mark: |                    |\n| New Zealand     |                              |                    | :white_check_mark: |\n| Poland          | :white_check_mark:           | :white_check_mark: |                    |\n| Portugal        | :white_check_mark:           | :white_check_mark: |                    |\n| Romania         | :white_check_mark:           | :white_check_mark: |                    |\n| San Marino      | :white_check_mark:           | :white_check_mark: |                    |\n| Slovakia        | :white_check_mark:           | :white_check_mark: |                    |\n| Slovenia        | :white_check_mark:           | :white_check_mark: |                    |\n| Spain           | :white_check_mark:           | :white_check_mark: |                    |\n| Sweden          | :white_check_mark:           |                    | :white_check_mark: |\n| United Kingdom  | :white_check_mark:           | :white_check_mark: |                    |\n| USA             |                              |                    | :white_check_mark: |\n\n## Usage\n\n### Installation\n\nYou don't need this source code unless you want to modify the gem. If you just\nwant to use it, you should run:\n\n```ruby\ngem install ibandit\n```\n\n### Creating IBANs\n\nAll functionality is based around `IBAN` objects. To create one, simply pass a\nstring to `Ibandit::IBAN.new`:\n\n```ruby\niban = Ibandit::IBAN.new(\"xq75 B a dCode 666\")\niban.to_s                      # =\u003e \"XQ75BADCODE666\"\niban.to_s(:formatted)          # =\u003e \"XQ75 BADC ODE6 66\"\n```\n\nAlternatively, you can [create an IBAN from national banking details](#creating-an-iban-from-national-banking-details).\n\n### Validating an IBAN\n\nIBANs are validated based on their structure and check-digits:\n\n```ruby\niban = Ibandit::IBAN.new(\"XQ75 BADCODE 666\")\n\niban.valid?                    # =\u003e false\n```\n\nAfter validations, you can fetch details of any errors:\n\n```ruby\niban.errors                    # =\u003e { country_code: \"'XQ' is not a valid...\" }\n```\n\nThe following error keys may be set:\n- `country_code`\n- `bank_code`\n- `branch_code`\n- `account_number`\n- `check_digits`\n- `characters`\n- `length`\n- `format`\n\nIbandit will also apply local modulus checks if you set a modulus checker:\n\n```ruby\nmodule ModulusChecker\n  def self.valid_bank_code?(iban)\n    # some_codes\n  end\n\n  def self.valid_branch_code?(iban)\n    # some_codes\n  end\n\n  def self.valid_account_number?(iban)\n    # some_codes\n  end\nend\n\nIbandit.modulus_checker = ModulusChecker\n```\n\nAll three of the `valid_bank_code?`, `valid_branch_code?` and `valid_account_number?` methods will receive an `IBAN` object.\n`valid_bank_code?` and `valid_branch_code?` should return true unless it is known that the bank/branch code in this IBAN\nare invalid in the country specified. `valid_account_number?` should return true unless it is known that the account number\nin this IBAN cannot be valid due to local modulus checking rules.\n\n### Deconstructing an IBAN into national banking details\n\nSWIFT define the following components for IBANs, and publish details of how each\ncountry combines them:\n\n`country_code`\n:    The [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country code prefix\n\n`check_digits`\n:    Two digits calculated using part of the ISO/IEC 7064:2003 standard\n\n`swift_bank_code`\n:    The SWIFT identifier for the bank to which the IBAN refers\n\n`swift_branch_code`\n:    The SWIFT identifer for the branch to which the IBAN refers (not used in all countries)\n\n`swift_account_number`\n:    The account number for the account\n\n`swift_national_id`\n:    The national ID for the bank / branch as documented by SWIFT\n\nThe SWIFT IBAN components are all available as methods on an `IBAN` object:\n\n```ruby\niban = Ibandit::IBAN.new(\"GB82 WEST 1234 5698 7654 32\")\n\niban.country_code              # =\u003e \"GB\"\niban.check_digits              # =\u003e \"82\"\niban.swift_bank_code           # =\u003e \"WEST\"\niban.swift_branch_code         # =\u003e \"123456\"\niban.swift_account_number      # =\u003e \"98765432\"\niban.swift_national_id         # =\u003e \"WEST123456\"\n```\n\nIn addition, it is often useful to extract any local check digits from the IBAN.\nThese are available through a `local_check_digits` method:\n\n```ruby\niban = Ibandit::IBAN.new(\"ES12 1234 5678 9112 3456 7890\")\n\niban.local_check_digits        # =\u003e \"91\"\n```\n\nIn some countries, the SWIFT-defined details differ from the local details that\ncustomers are familiar with.  For this reason, there are also `bank_code`,\n`branch_code` and `account_number` methods on an `IBAN` object.  At present,\nthese only differ from the `swift_` equivalents for Swedish bank accounts.\n\n```ruby\niban = Ibandit::IBAN.new(\n  country_code: 'SE',\n  account_number: '7507-1211203'\n)\niban.swift_account_number      # =\u003e \"75071211203\"\niban.account_number            # =\u003e \"1211203\"\n\niban.swift_branch_code         # =\u003e nil\niban.branch_code               # =\u003e \"7507\"\n```\n\n### Initializing Ibandit\n\nThe UK and Ireland both use part of the BIC as the `bank_code` in their IBANs.\nIf you wish to construct UK or Irish IBANs you will either need to pass the\n`bank_code` explicitly, or configure Ibandit with a BIC finder:\n\n```ruby\n# config/initializers/ibandit.rb\nIbandit.bic_finder = -\u003e (country_code, national_id) do\n  # This assumes you have `BankDirectoryPlus` set up to access the data provided\n  # by SWIFTRef in their Bank Directory Plus product. The `national_id` is the\n  # local national ID, not the \"IBAN National ID\" referred to in the IBAN Plus\n  # file (since that is the `bank_code` and the `branch_code`).\n BankDirectoryPlus.find_by(country_code: country_code,\n                           national_id: national_id).\n                   try(:bic)\nend\n```\n\n### Creating an IBAN from national banking details\n\nIn many countries customers are familiar with national details rather than\ntheir IBAN. For example, in the UK customers use their Account Number and Sort\nCode.\n\nTo build an IBAN from local details:\n\n```ruby\n# Austria\niban = Ibandit::IBAN.new(\n  country_code: 'AT',\n  account_number: '234573201',\n  bank_code: '19043'\n)\niban.iban                     # =\u003e \"AT611904300234573201\"\n\n# Belgium\niban = Ibandit::IBAN.new(\n  country_code: 'BE',\n  account_number: '510-0075470-61'\n)\niban.iban                     # =\u003e \"BE62510007547061\"\n\n# Bulgaria\niban = Ibandit::IBAN.new(\n  country_code: 'BG',\n  bank_code: 'BNBG',\n  branch_code: '9661'\n  account_number: '1020345678'\n)\niban.iban                     # =\u003e \"BG80BNBG96611020345678\"\n\n# Croatia\niban = Ibandit::IBAN.new(\n  country_code: 'HR',\n  account_number: '1001005-1863000160',\n)\niban.iban                     # =\u003e \"HR1210010051863000160\"\n\n# Cyprus\niban = Ibandit::IBAN.new(\n  country_code: 'CY',\n  account_number: '1200527600',\n  bank_code: '002',\n  branch_code: '00128'\n)\niban.iban                     # =\u003e \"CY17002001280000001200527600\"\n\n# Czech Republic\niban = Ibandit::IBAN.new(\n  country_code: 'CZ',\n  bank_code: '0800',\n  account_number_prefix: '19',\n  account_number: '2000145399'\n)\niban.iban                     # =\u003e \"CZ6508000000192000145399\"\n\n# Denmark\niban = Ibandit::IBAN.new(\n  country_code: 'DK',\n  account_number: '345-3179681',\n)\niban.iban                     # =\u003e \"DK8003450003179681\"\n\n# Estonia\niban = Ibandit::IBAN.new(\n  country_code: 'EE',\n  account_number: '111020145685'\n)\niban.iban                     # =\u003e \"EE412200111020145685\"\n\n# Finland\niban = Ibandit::IBAN.new(\n  country_code: 'FI',\n  bank_code: '123456'\n  account_number: '785'\n)\niban.iban                     # =\u003e \"FI2112345600000785\"\n\n# France\niban = Ibandit::IBAN.new(\n  country_code: 'FR',\n  bank_code: '20041',\n  branch_code: '01005',\n  account_number: '0500013M02606',\n)\niban.iban                     # =\u003e \"FR1420041010050500013M02606\"\n\n# Germany\niban = Ibandit::IBAN.new(\n  country_code: 'DE',\n  bank_code: '37040044',\n  account_number: '0532013000'\n)\niban.iban                     # =\u003e \"DE89370400440532013000\"\n\n# Greece\niban = Ibandit::IBAN.new(\n  country_code: 'GR',\n  bank_code: '011',\n  branch_code: '0125',\n  account_number: '0000000012300695'\n)\niban.iban                     # =\u003e \"GR16011012500000000012300695\"\n\n# Hungary\niban = Ibandit::IBAN.new(\n  country_code: 'HU',\n  account_number: '11773016-11111018'\n)\niban.iban                     # =\u003e \"HU42117730161111101800000000\"\n\n# Ireland\niban = Ibandit::IBAN.new(\n  country_code: 'IE',\n  bank_code: 'AIBK', # optional if a BIC finder is configured\n  branch_code: '931152',\n  account_number: '12345678'\n)\niban.iban                     # =\u003e \"IE29AIBK93115212345678\"\n\n# Iceland\niban = Ibandit::IBAN.new(\n  country_code: 'IS',\n  bank_code: '1175'\n  account_number: '26-19530-670269-6399'\n)\niban.iban                     # =\u003e \"IS501175260195306702696399\"\n\n# Italy\niban = Ibandit::IBAN.new(\n  country_code: 'IT',\n  bank_code: '05428',\n  branch_code: '11101',\n  account_number: '000000123456'\n)\niban.iban                     # =\u003e \"IT60X0542811101000000123456\"\n\n# Latvia\niban = Ibandit::IBAN.new(\n  country_code: 'LV',\n  account_number: '1234567890123',\n  bank_code: 'BANK'\n)\niban.iban                     # =\u003e \"LV72BANK1234567890123\"\n\n# Lithuania\niban = Ibandit::IBAN.new(\n  country_code: 'LT',\n  account_number: '11101001000',\n  bank_code: '10000'\n)\niban.iban                     # =\u003e \"LT1000011101001000\"\n\n# Luxembourg\niban = Ibandit::IBAN.new(\n  country_code: 'LU',\n  account_number: '1234567890123',\n  bank_code: 'BANK'\n)\niban.iban                     # =\u003e \"LU75BANK1234567890123\"\n\n# Monaco\niban = Ibandit::IBAN.new(\n  country_code: 'MC',\n  bank_code: '20041',\n  branch_code: '01005',\n  account_number: '0500013M026'\n)\niban.iban                     # =\u003e \"MC9320041010050500013M02606\"\n\n# Malta\niban = Ibandit::IBAN.new(\n  country_code: 'MT',\n  bank_code: 'MMEB', # optional if a BIC finder is configured\n  branch_code: '44093',\n  account_number: '9027293051'\n)\niban.iban                     # =\u003e \"MT98MMEB44093000000009027293051\"\n\n# The Netherlands\niban = Ibandit::IBAN.new(\n  country_code: 'NL',\n  account_number: '0417164300',\n  bank_code: 'ABNA'\n)\niban.iban                     # =\u003e \"NL91ABNA0417164300\"\n\n# Norway\niban = Ibandit::IBAN.new(\n  country_code: 'NO',\n  account_number: '8601.1117947',\n)\niban.iban                     # =\u003e \"NO9386011117947\"\n\n# Poland\niban = Ibandit::IBAN.new(\n  country_code: 'PL',\n  account_number: '60102010260000042270201111',\n)\niban.iban                     # =\u003e \"PL60102010260000042270201111\"\n\n# Portugal\niban = Ibandit::IBAN.new(\n  country_code: 'PT',\n  bank_code: '0002',\n  branch_code: '0023',\n  account_number: '0023843000578'\n)\niban.iban                     # =\u003e \"PT50000200230023843000578\"\n\n# Romania\niban = Ibandit::IBAN.new(\n  country_code: 'RO',\n  bank_code: 'AAAA',\n  account_number: '1B31007593840000'\n)\niban.iban                     # =\u003e \"RO49AAAA1B31007593840000\"\n\n# San Marino\niban = Ibandit::IBAN.new(\n  country_code: 'SM',\n  bank_code: '05428',\n  branch_code: '11101',\n  account_number: '000000123456'\n)\niban.iban                     # =\u003e \"SM88X0542811101000000123456\"\n\n# Slovakia\niban = Ibandit::IBAN.new(\n  country_code: 'SK',\n  bank_code: '1200',\n  account_number_prefix: '19',\n  account_number: '8742637541'\n)\niban.iban                     # =\u003e \"SK3112000000198742637541\"\n\n# Slovenia\niban = Ibandit::IBAN.new(\n  country_code: 'SI',\n  bank_code: '19100',\n  account_number: '1234'\n)\niban.iban                     # =\u003e \"SI56191000000123438\"\n\n# Spain\niban = Ibandit::IBAN.new(\n  country_code: 'ES',\n  account_number: '23100001180000012345'\n)\niban.iban                     # =\u003e \"ES8023100001180000012345\"\n\n# Sweden\niban = Ibandit::IBAN.new(\n  country_code: 'SE',\n  account_number: '7507-1211203'\n)\niban.iban                     # =\u003e \"SE2680000000075071211203\"\n\n# United Kingdom\niban = Ibandit::IBAN.new(\n  country_code: 'GB',\n  bank_code: 'BARC', # optional if a BIC finder is configured\n  branch_code: '200000',\n  account_number: '55779911'\n)\niban.iban                     # =\u003e \"GB60BARC20000055779911\"\n```\n\n### Pseudo-IBANs\n\nPseudo-IBANs can be recognized by the fact that they have `ZZ`\nas the third and fourth characters (these would be check digits for a regular\nIBAN). Note: pseudo-IBANs can be used in conjunction with IBANs depending on the country. See [Supported Countries](#supported-countries).\n\n```ruby\niban = Ibandit::IBAN.new(\n  country_code: 'SE',\n  branch_code: '7507',\n  account_number: '1211203'\n)\niban.pseudo_iban              # =\u003e \"SEZZX7507XXX1211203\"\niban.iban                     # =\u003e \"SE2680000000075071211203\"\n\niban = Ibandit::IBAN.new('SEZZX7507XXX1211203')\niban.country_code             # =\u003e \"SE\"\niban.branch_code              # =\u003e \"7507\"\niban.account_number           # =\u003e \"1211203\"\niban.iban                     # =\u003e \"SE2680000000075071211203\"\n\n# Australia\niban = Ibandit::IBAN.new(\n  country_code: 'AU',\n  branch_code: '123-456', # 6 digit BSB number\n  account_number: '123456789' # 9 digit account number\n)\niban.pseudo_iban              # =\u003e \"AUZZ123456123456789\"\niban.iban                     # =\u003e nil\n\niban = Ibandit::IBAN.new('AUZZ123456123456789')\niban.country_code             # =\u003e \"AU\"\niban.branch_code              # =\u003e \"123456\"\niban.account_number           # =\u003e \"123456789\"\niban.iban                     # =\u003e nil\n\n# Canada\niban = Ibandit::IBAN.new(\n  country_code: 'CA',\n  bank_code: '0036',          # 3 or 4 digit Financial Institution number\n  branch_code: '00063',       # 5 digit Branch Transit number\n  account_number: '0123456'   # 7 to 12 digits\n)\niban.pseudo_iban              # =\u003e \"CAZZ003600063000000123456\"\niban.iban                     # =\u003e nil\n\niban = Ibandit::IBAN.new('CAZZ003600063000000123456')\niban.country_code             # =\u003e \"CA\"\niban.bank_code                # =\u003e \"0036\"\niban.branch_code              # =\u003e \"00063\"\niban.account_number           # =\u003e \"000000123456\"\niban.iban                     # =\u003e nil\n\n# New Zealand\niban = Ibandit::IBAN.new(\n  country_code: 'NZ',\n  bank_code: '01',\n  branch_code: '0004',\n  account_number: '3333333-44' # 7 digit account number and 2/3-digit account suffix\n)\niban.pseudo_iban            # =\u003e \"NZZZ0100043333333044\"\niban.iban                   # =\u003e nil\n\niban = Ibandit::IBAN.new(\n  country_code: 'NZ',\n  account_number: '01-0004-3333333-44'\n)\niban.pseudo_iban          # =\u003e \"NZZZ0100043333333044\"\niban.bank_code            # =\u003e \"01\"\niban.branch_code          # =\u003e \"0004\"\niban.account_number       # =\u003e \"3333333044\"\n\niban = Ibandit::IBAN.new('NZZZ0100043333333044')\niban.country_code         # =\u003e \"NZ\"\niban.bank_code            # =\u003e \"01\"\niban.branch_code          # =\u003e \"0004\"\niban.account_number       # =\u003e \"3333333044\"\n\n# USA\niban = Ibandit::IBAN.new(\n  country_code: 'US',\n  bank_code: '026073150',      # 9-digit routing number\n  account_number: '2715500356' # 1 to 17 digits\n)\niban.pseudo_iban               # =\u003e \"USZZ026073150_______2715500356\"\niban.iban                      # =\u003e nil\n\niban = Ibandit::IBAN.new('USZZ026073150_______2715500356')\niban.country_code              # =\u003e \"US\"\niban.bank_code                 # =\u003e \"026073150\"\niban.account_number            # =\u003e \"2715500356\"\niban.iban                      # =\u003e nil\n```\n\n## Other libraries\n\nAnother gem, [iban-tools](https://github.com/alphasights/iban-tools), also\nexists and is an excellent choice if you only require basic IBAN validation.\nWe built Ibandit because iban-tools doesn't provide a comprehensive, consistent\ninterface for the construction and deconstruction of IBANs into national\ndetails.\n\n---\n\nGoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/about/careers/).\n","funding_links":[],"categories":["ActiveRecord"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgocardless%2Fibandit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgocardless%2Fibandit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgocardless%2Fibandit/lists"}