IBAN validation API

An IBAN validation API tells a payout or onboarding system, before money moves, whether an account number is well formed: the right country, the right length for it, check digits that agree with the rest (ISO 7064 mod 97-10), and a national part shaped as the registry says. Veriport answers all five checks separately for 88 countries from the SWIFT IBAN Registry (ISO 13616), returns the bank and branch identifiers where the registry defines them, and flags the 41 SEPA countries; the offline part is also an MIT library.

The answer, field by field

A German IBAN, all checks passed:

FieldWhat it says
validTrue when the five checks pass. A failed IBAN is a 200 with valid: false, never an error.
iban, formattedThe electronic form (upper case, no separators) and the paper form in groups of four.
countryCode, countryName, expectedLengthThe registry entry the IBAN was checked against.
checkDigits, bbanThe two check digits and the national part.
bankIdentifier, branchIdentifierCut from the BBAN at the positions the registry defines; null where it defines none.
sepa, sepaSinceWhether the country is in the SEPA schemes, and since when if recent.
checks, failuresThe five booleans and the list of failed rules (characters, country_unknown, length, check_digits, bban_pattern).
registryThe source of the lengths and structures and the day they were transcribed.
200 OK
{
  "valid": true,
  "iban": "DE89370400440532013000",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "countryCode": "DE",
  "countryName": "Germany",
  "checkDigits": "89",
  "bban": "370400440532013000",
  "bankIdentifier": "37040044",
  "branchIdentifier": null,
  "expectedLength": 22,
  "sepa": true,
  "sepaSince": null,
  "checks": {
    "characters": true,
    "country": true,
    "length": true,
    "mod97": true,
    "bbanPattern": true
  },
  "failures": [],
  "registry": {
    "source": "SWIFT IBAN Registry (ISO 13616)",
    "verifiedOn": "2026-10-24"
  }
}

No upstream, so no degraded path

The IBAN check is deterministic: a registry table and an arithmetic rule, both in the service. Nothing is fetched, nothing is cached, the IBAN you send is not stored. The only states are a 200, a 400 for a missing parameter, and your own rate or quota limits (429, 402).

The same call in six languages

One GET, the key optional for the first 20 calls a day.

curl
curl "https://veriport.io/api/v1/iban/validate?iban=DE89370400440532013000"
# with a key, once you have one:
# curl -H "Authorization: Bearer vp_live_YOUR_KEY" "https://veriport.io/api/v1/iban/validate?iban=DE89370400440532013000"

Price per 1,000 calls, against the named alternatives

Competitors’ figures are read from their public pricing pages on 2026-10-28 at full use of the included volume; a range means several tiers. Ours include the tax of your country, charged by Stripe as merchant of record.

OfferPriceIncludedPer 1,000Billing
iban.com IBAN Suite€530 / year2,000 validations (entry plan)≈ €265Annual subscription; bank name and BIC included
ibanapi.commonthly tiersper tier$3.80Subscription
OpenIBANfreeunlimited$0Open source, unmaintained, self-hosted
Veriport 2,000 pack$9 once2,000 calls, 12 months$4.50Prepaid, no renewal
Veriport 10,000 pack$29 once10,000 calls, 12 months$2.90Prepaid, no renewal
Veriport monthly plan$15 / month5,000 calls + bulk$3.00Subscription, cancel any time

Free before any of this: 100 calls a month with a key, 20 a day without one. A 4xx or 5xx is never counted.

What it is not

Not a proof that the account exists or belongs to your payee: nothing public can tell that; payee verification is a bank-to-bank service. Not a BIC or bank-name lookup: SWIFT’s BIC Directory and IBAN Plus are licensed products, and the line is on the roadmap. Not a SEPA reachability check.

Questions

Why pay for a mod-97 check I can run locally?
You should run it locally, and the SDK does it for free. The API adds what a library drifts on: the registry lengths and BBAN patterns kept current, the SEPA list with its dates, the bank and branch positions, and one place to validate from any language or a no-code tool.
Which countries are covered?
88 countries and territories of the SWIFT IBAN Registry, each with its own page under IBAN formats; a country outside the registry answers country_unknown.
Is the IBAN stored?
No. The check runs in memory and the request body is not logged; metering records the count, not the value.

100 IBAN checks a month, no card.

Get a free key

Sources