Methodology
How we verify our data.
ibanchecker.cash answers questions about other people’s money, so the bar for our data is simple: every format rule, bank code, and BIC on this site must be traceable to an authoritative source, and every claim must be one we can prove.
This page documents where the data comes from, how it is tested, and the errors we have found and corrected, including our own.
Principles
If we can't verify it, we leave it blank
A bank record only gets a BIC when an authoritative source confirms it. When we audited our own tables, we found BICs in circulation (including on competitor sites) that exist in no official directory. We removed ours and left the field empty.
Official sources only
Formats come from the SWIFT IBAN Registry. Bank codes come from central bank registries and the EPC SEPA registers. We never copy from other IBAN websites: several national code tables circulating online are shifted by one row, and copying reproduces the error.
Measured, not estimated
Every count on this site is computed from the live dataset, not typed into a page. Uptime on the status page is measured against the production API every 5 minutes; the published figure is calculated from every recorded check.
Every example must pass our own validator
Each sample IBAN displayed anywhere on the site is round-trip tested: it must validate, and its bank code must resolve to the bank the page claims. The audit suite fails the build if any example drifts.
Where the data comes from
Each class of data has a designated authoritative source. When sources disagree, the national registry wins.
IBAN structure, length, and check rules for all countries
SWIFT IBAN Registry (ISO 13616), the authoritative international standard
SEPA participation and institution identity
European Payments Council (EPC) SEPA scheme participant registers
National bank codes and BICs
Central bank and national registries, including Deutsche Bundesbank (DE), NBP EWIB (PL), Banco de Portugal (PT), National Bank of Belgium (BE), SIX Interbank Clearing (CH), OeNB (AT), and their counterparts across the Nordics, Baltics, Central Europe, and the Gulf
Official bank websites
Wikidata official-website property, cross-checked per bank and liveness-tested before publication
Coverage statistics shown on this site
Computed from the live directory at build time: currently 92 countries and 2,316 institutions
Reading a register's own names
A bank's name is printed the way its national register writes it, not tidied up into something that reads better. Tidying is editing, and an edited name is no longer the register's statement.
That is why some German banks appear with a trailing -alt-, from the German for “old”. It marks a superseded Bankleitzahl, and where that code is still live the register keeps it working so that existing accounts settle. Of the 3,507 codes in the register, 611 carry the marker and 559 of those are still live, so it is a normal state rather than an error.
Source: the Deutsche Bundesbank Bankleitzahlen file, which is where the name is published. The Bundesbank does not publish a definition of the suffix itself, so we do not cite one: the meaning is read off the file's own successor column, where a deleted code points at the code that replaced it. Kreissparkasse Hannover -alt- (25050299), for instance, names 25050180, Sparkasse Hannover, as its successor. That column also sets the limit of what we can say about the reason. It is filled in for twenty marked codes: nineteen point at a differently named institution, which is a merger, and one points at the same institution under the same name, the Landeskreditbank Baden-Württemberg moving from 60010700 to 66010700. For the 559 codes that are still live the register names no successor at all, so the marker tells you a code is superseded, not why it was superseded.
The audit suite
A permanent regression suite runs on every change to the validation engine or the bank dataset. As of September 2026 it executes more than 62,000 checks, and a release ships only at zero failures. It covers:
- Sample IBANs for all supported countries: validation, mutation tests (corrupted check digits and lengths must fail), and normalization
- National format rules: structure patterns, BBAN field definitions, and length tables cross-checked for internal consistency
- Bank data integrity: BIC format (ISO 9362), required fields, duplicate detection, and status tracking for merged or closed banks
- Bank lookup round-trips: every bank code must resolve back to the same institution it belongs to
- Generator and converter outputs: test IBAN generation for 37 countries and all account-to-IBAN converters checked against reference values
- Example consistency: every illustrative IBAN shown on bank pages must validate and resolve to the bank named on the page
- Bank logos: every file must be served, carry an intrinsic size, name two genuinely different files when it claims a variant per theme, and carry a recorded human verdict
The suite exists because manual review missed things. Most of the corrections below were first caught by an automated check, then verified by hand against the official source.
The field no audit could read
Every check above reads text: a code, a BIC, a name, a length. A bank logo is a picture, and for a long time nothing here could read one. A page could carry another company's mark while every one of those checks passed, because not one of them was looking at the image.
In September 2026 we rendered every logo we publish and read it. Twenty-six banks were carrying someone else's: a sports arena, a football stadium a bank sponsors, a banking trade association, a broadcaster that happens to share three letters with a bank, and six central banks carrying something that was not them: a commercial bank in four of those cases, an investment promotion agency in one, and another country's central bank in the last. They came from a matcher that searches by name, and a name is not an identity.
All 800 logo files have now been examined one at a time and each verdict written down, 217 accepted and 29 rejected, with a note recording what the mark actually reads. A check refuses to build the site if a logo has no recorded verdict, if its file is not served, if it has no intrinsic size, or if the two files a bank claims as light and dark variants turn out to be the same file under two names.
The limit is worth stating plainly, because it is the reason this took looking rather than a script: nothing automatic can tell you whose mark a picture is. That judgement is a person, which is why each verdict is recorded once and kept rather than recomputed. The banks that were affected are listed in data corrections.
Errors we found and fixed
Bank reference data decays: banks merge, rebrand, and recycle codes, and incorrect tables get copied between websites for years. We audit against the registries instead, and we publish what we fix. Recent corrections:
Rewrote the national bank code tables for France, Italy, Portugal, and Iceland after finding the assignments shifted against central bank records. Widely copied tables online map codes to the wrong banks; ours now match Banque de France, ABI, and Banco de Portugal data.
Corrected 8 of 16 Polish routing entries against the NBP EWIB register, including codes that had silently changed ownership after acquisitions.
Removed BICs that exist in no official directory and left those records without one. Several had been fabricated upstream and repeated across the web.
Fixed 18 sample IBANs sitewide that failed checksum or length rules, and recomputed national check digits (French RIB key, Belgian MOD-97, Norwegian MOD-11, Italian CIN) instead of reusing broken examples.
Tracked rebrands and mergers so lookups return the current institution: Sense Bank (formerly Alfa-Bank Ukraine), Artea (formerly Šiaulių bankas), Nexent Bank (formerly Credit Europe Bank NL), VeloBank (formerly Getin Noble), and OTP banka Slovenia (formerly Nova KBM).
Those are the broad passes. Individual records we published incorrectly are listed one by one in data corrections, each with the BIC it affected and the sources that settled it, so you can tell whether a correction touched something you looked up. Product changes are in the changelog.
What validation can and cannot tell you
Our validator confirms that an IBAN is structurally correct: right length and character pattern for its country, a passing MOD-97 checksum, and a national format match. Where the bank code is in our directory of 2,316 institutions, it also identifies the issuing bank.
It cannot confirm that the account exists, is open, or belongs to the person you intend to pay. No offline IBAN check can. When a lookup finds no bank, the result says “Not in our directory” because the gap may be in our coverage, not in your IBAN. We state these limits everywhere rather than imply a guarantee we cannot make.
Found an error?
If you spot a wrong bank code, an outdated BIC, or a bank we list under a former name, email [email protected]. Reports that include an authoritative source are typically verified and corrected within a few days, and the fix lands in the changelog.