IBAN Validator: Bulk Check & Bank Lookup avatar

IBAN Validator: Bulk Check & Bank Lookup

Pricing

from $1.00 / 1,000 iban checkeds

Go to Apify Store
IBAN Validator: Bulk Check & Bank Lookup

IBAN Validator: Bulk Check & Bank Lookup

Validate up to 10,000 IBANs: country, length and mod-97 per the SWIFT IBAN Registry, national check digits (BE, FR, ES, IT, NL), printed format, test/example IBAN detection, SEPA flag, plus bank name and BIC for DE, AT, CH and LI from official open files.

Pricing

from $1.00 / 1,000 iban checkeds

Rating

0.0

(0)

Developer

Offera Studio

Offera Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does IBAN Validator do?

IBAN Validator checks up to 10,000 IBANs in one run, offline and in seconds, and adds the bank name and BIC for German, Austrian, Swiss and Liechtenstein IBANs. For every IBAN you get:

  • ✅ valid / invalid with the first check that failed: country and length per the SWIFT IBAN Registry, the BBAN structure, the mod-97 check digits, and the national check digits for Belgium, France, Spain, Italy and the Netherlands
  • 🖨️ the IBAN in electronic (DE89370400440532013000) and printed (DE89 3704 0044 0532 0130 00) format
  • 🏦 bank code, branch code and account number as the registry defines them, and for DE, AT, CH and LI the bank name and BIC from official open bank-code files (source, licence and validity date on every row)
  • 🧪 a test / example IBAN flag: the IBANs printed in the IBAN Registry, IBANs used in public payment documentation and placeholder-looking accounts are marked, so nobody pays to them
  • 🌍 a SEPA flag: usesIbanOutsideSepa: true for countries that use IBAN but are not in SEPA (Turkey, Saudi Arabia, Brazil, Israel, Ukraine …), where euro SEPA transfers do not work

Paste IBANs as they come: lower case, with spaces, dots or dashes, or as a comma- or semicolon-separated list.

Who is it for?

  • Finance and accounts payable teams that check supplier and employee IBANs before a payment run (typos are caught before the bank rejects the file).
  • Marketplaces, SaaS and fintechs that need to validate IBANs at onboarding or in bulk, and want the bank name and BIC for display.
  • Data and CRM cleanup: find typos and test IBANs in a customer or supplier list.
  • Developers who want a reference implementation of the offline IBAN rules with the registry data behind it.

How the check works

  1. Country and length. The first two letters must be an IBAN country in the SWIFT IBAN Registry and the length must match (DE = 22 characters, NO = 15, MT = 31 …).
  2. Structure. The part after the check digits must have the structure of the country (digits where digits are required, capital letters where letters are required).
  3. Mod-97. The ISO 7064 check digits (positions 3–4) must match.
  4. National check digits where the algorithm is public and the same for every bank: BE (mod 97), FR (RIB key), ES (two control digits), IT (CIN letter) and NL (11-test, for 9–10 digit account numbers; old giro numbers have no check). Germany is not checked: its Prüfziffer methods differ by bank (the Bundesbank publishes about 150 of them), so nationalCheck says not-applicable.
  5. Bank lookup for IBANs that passed all checks: the bank code is looked up in a bundled file. Bank-code files are used only where the licence allows it:
CountryFileLicence / terms
DE GermanyDeutsche Bundesbank BankleitzahlendateiFree to store, pass on and copy for personal or business use if unaltered and credited "Quelle: Deutsche Bundesbank"
AT AustriaOeNB SEPA-ZahlungsverkehrsverzeichnisCC BY 4.0, commercial use allowed (credit "© OeNB")
CH, LI Switzerland and LiechtensteinSIX Swiss Bank MasterSIX: "Information in the Download Bank Master may be used freely"

For every other country there is no openly licensed bank-code file: the row returns the bank code as printed in the IBAN and says bankLookup: "not-available" with a note that the bank name is not available. The bank-code files are bundled with the Actor and refreshed by a script (npm run refresh-data in the Actor's folder); every row says which file it used and how old it is (bankSource, bankDataValidity).

How to use it

  1. Click Start with the default input: eight example IBANs from the IBAN Registry and one with a bad checksum.
  2. Replace the list with your own IBANs, one per line.
  3. Turn Look up the bank off if you only need the checks.

The Results tab shows one row per IBAN; Bank lookup and Checks have their own tabs.

Input example

{
"ibans": ["DE89 3704 0044 0532 0130 00", "DE75 5121 0800 1245 1261 99", "NL91 ABNA 0417 1643 00", "DE89 3704 0044 0532 0130 01"],
"lookupBank": true
}

Output example

Real output of a local run on 1 October 2026 (bank data from the files downloaded the same day):

IBANvalidstatusbankBICtest IBAN
DE89 3704 0044 0532 0130 00truevalidCommerzbankCOBADEFFXXXtrue (registry example)
DE75 5121 0800 1245 1261 99truevalidSociete GeneraleSOGEDEFFXXXfalse
FR14 2004 1010 0505 0001 3M02 606truevalidnot available for FR (bank code 20041)–true (registry example)
DE89 3704 0044 0532 0130 01falseinvalid-checksum––false

One row in full:

{
"input": "DE75 5121 0800 1245 1261 99",
"position": 9,
"iban": "DE75512108001245126199",
"ibanPrinted": "DE75 5121 0800 1245 1261 99",
"countryCode": "DE",
"countryName": "Germany",
"valid": true,
"status": "valid",
"message": "Valid IBAN: country, length, structure and mod-97 check digits match.",
"checkDigits": "75",
"expectedLength": 22,
"nationalCheck": "not-applicable",
"bankCode": "51210800",
"branchCode": null,
"accountNumber": "1245126199",
"bankLookup": "found",
"bankName": "Societe Generale",
"bic": "SOGEDEFFXXX",
"bankSource": "Deutsche Bundesbank Bankleitzahlendatei (Quelle: Deutsche Bundesbank)",
"bankDataValidity": "07.09.2026 to 06.12.2026",
"bankNote": null,
"isTestIban": false,
"testReason": null,
"inSepa": true,
"usesIbanOutsideSepa": false,
"error": null,
"errorMessage": null
}

Fields worth knowing:

  • status: valid, invalid-country, invalid-length, invalid-format, invalid-checksum or invalid-national-check. valid is true only for valid.
  • bankLookup: found, not-found (the code is not in the file: closed or merged bank, or an example IBAN), not-available (no open file for the country), no-bank-code (the country's IBAN has none) or not-checked (lookup off, or the IBAN failed a check).
  • error / errorMessage are set on free rows only: empty-input, not-an-iban, too-long, invalid-input, limit-reached.

How much does it cost?

This Actor uses pay per event:

EventPrice
IBAN checked (one row per IBAN-shaped entry, valid or invalid)$0.001
Entries that cannot be read as an IBAN, and run-level notesfree
  • 1,000 IBANs cost $1.00; the default run costs $0.009.
  • No external service is called, so there are no other costs. Apify also charges a tiny standard start fee per run.
  • Set Maximum cost per run in the run options and the Actor stops when it is reached.

Limitations

  • A valid IBAN is not proof that the account exists, is open, or belongs to the person you expect. The checks catch typos and impossible numbers. The Actor does not contact any bank and cannot confirm the account holder (use your bank's Verification of Payee service for that).
  • The country formats come from the SWIFT IBAN Registry, transcribed from open data sets; the registry changes now and then. Countries that only have a partial IBAN (for example Algeria, Morocco, Senegal) are not in the registry and are reported as invalid-country.
  • National check digits only for BE, FR, ES, IT and NL. A few neobank accounts do not follow their country's national rule and fail the national check although the IBAN works: such rows say invalid-national-check and name the reason; check the IBAN with the bank if you doubt it.
  • Bank names only for DE, AT, CH and LI (see the table above). The bank-code files are a snapshot that is as old as the Actor's last release; bankDataValidity shows the validity the publisher states. A bank that merged or changed its code recently may show not-found.
  • Test IBAN detection is a list of known documentation IBANs plus placeholder patterns; an IBAN that is not flagged is not guaranteed to be real.
  • 10,000 IBANs per run. Entries are de-duplicated after normalising.

Data and licences

The IBAN structure data is from the SWIFT IBAN Registry (the ISO 13616 registration authority). The bank-code files come from the Deutsche Bundesbank (Quelle: Deutsche Bundesbank), the Oesterreichische Nationalbank (© OeNB, CC BY 4.0) and SIX Interbank Clearing. Not affiliated with or endorsed by any of them. No personal data is processed beyond the IBANs you enter; the Actor stores nothing between runs.

FAQ

Does it call a bank or an API?

No. Everything runs offline in the Actor, using the registry table and the bundled bank-code files. That is why it is fast and cheap.

Why does a valid IBAN have no bank name?

Bank names come from open bank-code files, and only DE, AT, CH and LI have one that the licence allows to bundle. For other countries the row returns the bank code and says so. Many national bank registers exist but do not allow redistribution.

Why is an IBAN flagged as a test IBAN?

It is one of the example IBANs printed in the SWIFT IBAN Registry or in public bank and payment documentation, or its account number is a placeholder such as 0123456789. These look real and pass every check, but they are not someone's account.

More tools from the same developer

All pay-per-result, no proxy or login needed, built and maintained by the same developer:

Website audits

Company data and compliance

Media and AI

Market signals

Feedback

Missing a country's national check digits or a bank-code file with an open licence? Open an issue on the Issues tab.