IBAN Validator API avatar

IBAN Validator API

Pricing

$0.90 / 1,000 iban checks

Go to Apify Store
IBAN Validator API

IBAN Validator API

Validate IBANs in one run with country structure checks and the ISO 13616 MOD-97 checksum. Get the submitted value, normalized formats, country details when available, SEPA membership, and a clear diagnostic status for each row.

Pricing

$0.90 / 1,000 iban checks

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

✅ IBAN checks for payment and data teams

Finance teams, accounts-payable staff, and developers can check a list of IBANs in one run. The Actor returns the submitted value, machine-ready and grouped formats, country details when available, separate structure and checksum checks, SEPA membership, and a diagnostic status for each IBAN. Use these rows to catch malformed bank details before they enter a payment or data workflow.

📦 IBAN validation rows at a glance

Each submitted IBAN creates one dataset row. The row keeps the original value and adds electronic and print formats, validity flags, parsed country details when available, length checks, check digits, BBAN data, SEPA membership, and a diagnostic status.

▶️ Run an IBAN list step by step

  1. Open the Actor and add one or more values to IBANs.
  2. Put each value in its own list item.
  3. Start the run.
  4. Open the output link or dataset to review and export the rows.

⚙️ Input

The ibans field is required. Add one or more IBAN values; each value is checked separately, and invalid values are returned too.

Input fields

FieldTypeWhat it does
ibansarray of stringsLists the IBAN values to validate. Each value produces its own output row, including when it is invalid.

Example input

This is the public input from a successful current-beta default-input run:

{
"ibans": [
"GB29 NWBK 6016 1331 9268 19"
]
}

🧾 Output

The output link opens the default dataset. It contains one object for each submitted IBAN. Optional fields are left out when the country or parsed account parts cannot be read, or when no bank code is recognized.

Output fields

FieldTypeWhat it does
submittedIbanstringKeeps the IBAN exactly as submitted.
electronicFormatstringGives the normalized IBAN for machine use.
printFormatstringGives the normalized IBAN grouped for people to read.
isValidbooleanSays whether the country structure and checksum checks pass.
diagnosticStatusstringGives the standard status, such as VALID, INVALID_LENGTH, or INVALID_CHECKSUM.
countryCodestringGives the two-letter country code when it can be read.
countryNamestringGives the country name when the country code is known.
structureValidbooleanSays whether the IBAN matches the country's structure and expected length.
checksumValidbooleanSays whether the IBAN passes the ISO 13616 MOD-97 checksum.
observedLengthintegerCounts characters in the normalized IBAN.
expectedLengthintegerGives the required length when the country format is known.
checkDigitsstringGives the two check digits when they can be read.
bbanstringGives the parsed Basic Bank Account Number when available.
isSepaMemberbooleanSays whether the detected country takes part in SEPA.
bankNamestringGives a mapped bank name when a bank code is recognized.

Example validation row

This complete row is from a successful current-beta run:

{
"submittedIban": "GB29 NWBK 6016 1331 9268 19",
"electronicFormat": "GB29NWBK60161331926819",
"printFormat": "GB29 NWBK 6016 1331 9268 19",
"isValid": true,
"diagnosticStatus": "VALID",
"countryCode": "GB",
"structureValid": true,
"checksumValid": true,
"observedLength": 22,
"expectedLength": 22,
"checkDigits": "29",
"bban": "NWBK60161331926819",
"isSepaMember": true,
"countryName": "United Kingdom"
}

💳 Pricing

This Actor uses pay-per-event pricing. One IBAN check is charged for each submitted value saved to the dataset, including invalid values. The current price is shown in the Actor's pricing panel.

🔌 Integrations

Run the Actor from Apify Console or the Apify API, then export the dataset in the format your workflow needs. You can also schedule runs and pass the finished dataset to Apify integrations.

❓ FAQ

Is this an IBAN calculator, or can it find an IBAN from an account number?

No. This Actor checks IBANs that you provide; it does not create one or show how to find an IBAN number from an account number. Ask the bank or account holder for the correct value.

Does a valid IBAN prove that the account exists?

No. A valid status means the IBAN matches its country structure and passes the ISO 13616 MOD-97 checksum. It does not confirm that the account is open, belongs to a person, or can receive a payment.

Does the Actor look up a bank or payment provider?

No. Live bank, branch, account, ownership, and payment checks are outside this Actor's contract. It validates the structure and checksum of the submitted IBAN.

What does a diagnostic status mean?

VALID means all checks pass. INVALID_INPUT means the value cannot be read as an IBAN. INVALID_COUNTRY means the country code is not supported. INVALID_LENGTH means the length is wrong. INVALID_STRUCTURE means the value has the wrong country pattern. INVALID_CHECKSUM means the structure is right but the MOD-97 checksum fails.

Can I check several IBANs in one run?

Yes. Add the values to ibans, one per list item. The Actor checks each submitted value independently and saves one row for each value, including invalid values.

Why are some output fields missing?

Country details, expected length, check digits, BBAN data, and bank name are optional. They are omitted when the country or account parts cannot be read; the bank name is also omitted when no bank code is recognized.

What is the difference between electronic and print format?

Electronic format has no spaces and is suited to machine use. Print format groups the same normalized value for easier reading.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré