IBAN Validation API Documentation

The IBAN-Test REST API validates IBAN structure and check digits, returns available bank and BIC data, validates BICs and German bank accounts, and generates IBANs from bank details. Authenticate with an API token from your dashboard and integrate the JSON responses into forms, payment workflows and backend systems.

Try the online IBAN checker · Use the IBAN generator · Connect the MCP server

Interactive developer documentation

The complete technical reference with parameters, response schemas and test functionality is available in the OpenAPI view.

Open OpenAPI documentation

Authentication

Use the API token from your API overview as a Bearer token in the HTTP header:

Authorization: Bearer YOUR_API_TOKEN

You can find the token after logging in under API overview. If you do not have an account yet, create an API key.

Base URL

https://www.iban-test.eu/api

Endpoints

  • GET /v2/iban/validate?iban=... – validate an IBAN
  • GET /v2/iban/validate/{iban} – validate an IBAN as a path parameter
  • POST /v2/iban/validate – validate an IBAN using the request body
  • GET /v2/bic/validate/{bic} – validate a BIC
  • GET /v2/bank-account/validate?bankcode=...&accountnumber=... – validate a German bank account
  • GET /v2/iban/generate?countrycode=...&bankcode=...&accountnumber=... – generate an IBAN

What IBAN validation checks

  • Country code, character sequence and country-specific IBAN length
  • IBAN check digits using the international MOD-97 checksum
  • Available bank directory data such as bank name, city and BIC

A valid response confirms formal plausibility. It does not prove that an account exists, belongs to a specific person, is active or can receive payments.

Request examples

Validate an IBAN

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/iban/validate?iban=DE89%203704%200044%200532%200130%2000"

Spaces in IBANs are allowed and are removed automatically before validation.

Validate a BIC

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/bic/validate/COBADEFFXXX"

Validate a bank account

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/bank-account/validate?bankcode=37040044&accountnumber=532013000"

Generate an IBAN

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/iban/generate?countrycode=DE&bankcode=37040044&accountnumber=532013000"

Response format and error handling

All endpoints return JSON. Evaluate the HTTP response and the fields error, code, message and optional details before accepting or storing bank data.

{
  "error": false,
  "code": 2100,
  "message": "IBAN is valid",
  "details": {}
}

Use the OpenAPI reference for the current parameter and response schemas. Do not treat a checksum-valid IBAN as confirmation of account ownership.

Result codes and error handling

Check both the HTTP status and the JSON response. HTTP 200 responses can still contain errors or negative validation results. error: false alone does not confirm valid bank details. Evaluate code; the localizable message text is for display only.

For a single IBAN check, 2100 means a valid IBAN; 2200 means successful generation and 2500 means a valid BIC format. For German bank account checks, 2300 only means the check was performed: also evaluate bank.valid and konto.valid.

JSON codeMeaning and action
3100Invalid IBAN. Ask for corrected input; do not automatically retry the same data.
3101Invalid bank code. Check and correct the bank details.
3102Invalid account number. Check and correct the account details.
3500Invalid BIC format. Ask for a corrected BIC.
4002Missing or invalid authentication. Check the Bearer token and Authorization header.
4003API quota reached. Pause further checks until quota is available again; do not start a retry loop.
4004User or API access deactivated. Check the account status or contact support.
4100Missing IBAN. Supply the iban parameter.
4110Missing BIC. Supply a BIC.
4201 / 4210Missing bank code. Supply bankcode; generation uses 4201, while bank account validation uses 4210.
4212 / 4213Bank code too long (4212) or too short (4213). Check the country-specific length.
4220 / 4222 / 4223Account number missing (4220), too long (4222) or too short (4223). Correct accountnumber.
4230 / 4231Country code missing (4230) or invalid (4231). Check countrycode.
4233IBAN could not be generated. Check the combination of country, bank code and account number.
5001Internal processing error. Retry later with increasing delays and a limited number of attempts; contact support if the error persists.

For HTTP 401, correct the authentication. For HTTP 429, respect Retry-After if present. For HTTP 5xx or network failures, use bounded retries with increasing delays. An HTML error page or a missing JSON response is not a validation result.

SEPA: direct debits, credit transfers and instant payments

IBAN validation also returns the bank’s participation in four SEPA schemes, checked against the EPC participant registers.

  • details.sepa.sddCore – SEPA Direct Debit Core
  • details.sepa.sddB2b – SEPA Direct Debit B2B
  • details.sepa.sct – SEPA Credit Transfer (SCT)
  • details.sepa.sctInst – SEPA Instant Credit Transfer (SCT Inst)

All four schemes are checked independently. confirmed means there is an unambiguous, current register match. unknown means participation could not be confirmed; it does not mean the bank does not support the scheme.

Each scheme returns only status and reason. The SEPA status does not change the IBAN validation result.

Example: excerpt from an IBAN validation response

{
  "details": {
    "sepa": {
      "sddCore": {
        "status": "confirmed",
        "reason": "matched"
      },
      "sddB2b": {
        "status": "confirmed",
        "reason": "matched"
      },
      "sct": {
        "status": "confirmed",
        "reason": "matched"
      },
      "sctInst": {
        "status": "confirmed",
        "reason": "matched"
      }
    }
  }
}

Meaning of reason

  • matched – Participation confirmed
  • no_data – No register data available
  • missing_bic – No BIC available
  • ambiguous_bank – Ambiguous bank mapping
  • no_match – No matching register entry
  • ambiguous_participant – Multiple matching register entries
  • not_current – Participation is not currently effective
  • stale_data – Register data is outdated
  • lookup_error – Register lookup failed

Available for REST IBAN validation and the MCP tools validate_iban and validate_iban_batch. IBAN generation includes these fields when bank details are returned. The separate BIC and German bank-code/account-number checks do not return these fields.

This checks bank participation. It does not confirm account existence or eligibility, a mandate, or the success of a payment. SCT Inst confirms scheme participation, not live reachability through RT1/TIPS or guaranteed instant execution for a particular account.

Data source: European Payments Council (EPC).

MCP for AI clients

In addition to the REST API, IBAN-Test provides a Model Context Protocol server for IBAN validation. MCP exposes the same bank data functions as structured tools for compatible AI clients and agents.

MCP endpoint

Connect an MCP-capable client to this endpoint and authenticate with your API token.

https://www.iban-test.eu/mcp
Authorization: Bearer YOUR_API_TOKEN

Available MCP tools

  • validate_iban – validates a single IBAN
  • validate_iban_batch – validates multiple IBANs; each IBAN counts as one API request
  • generate_test_iban – generates an IBAN from country code, bank code and account number
  • ibantest_bank_account_validate – validates a German bank code and account number
  • ibantest_bic_validate – validates a BIC and returns available bank details
  • get_usage_info – Shows API usage without consuming a validation request.

Functional MCP tools count against the IBAN-Test API quota just like REST requests.

Notes

  • The REST API and MCP use Bearer tokens.
  • The previous API using an auth code is not covered in this documentation.
  • Functional requests count against the current API quota.

Frequently asked questions about the IBAN-Test API

Answers about Bearer tokens, requests, JSON responses, quotas and integrations are available in the IBAN-Test FAQ.

How do I call the IBAN-Test API?
API examples with Bearer token authentication, IBAN validation, BIC validation and IBAN generation.

What does an API request look like?

Use your API token as a Bearer token in the HTTP header.

Authorization: Bearer YOUR_API_TOKEN

Base URL:

https://www.iban-test.eu/api

Validate an IBAN:

GET /v2/iban/validate/{iban}
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/iban/validate/DE89%203704%200044%200532%200130%2000"

Validate a BIC:

GET /v2/bic/validate/{bic}
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://www.iban-test.eu/api/v2/bic/validate/COBADEFFXXX"

Validate a bank account:

GET /v2/bank-account/validate?bankcode=37040044&accountnumber=532013000

Generate an IBAN:

GET /v2/iban/generate?countrycode=DE&bankcode=37040044&accountnumber=532013000

The complete technical reference with parameters, response fields and test functionality is available in the API documentation.

What response format does the API return?
JSON responses from the API with error, code, message and endpoint-specific details.

What does the API return?

All API endpoints return JSON. The result contains error, code, message and endpoint-specific details.

{
  "error": false,
  "code": 2100,
  "message": "IBAN is valid",
  "details": {}
}

Validation details can include bank information, BIC information, account validation results or generated IBAN data, depending on the endpoint and country.

For the current status codes, parameters and response schemas, see the API documentation.

SEPA Direct Debit: Core and B2B

IBAN validation also returns the bank’s participation in SEPA Direct Debit schemes, checked against the EPC participant registers.

  • details.sepa.sddCore – SEPA Direct Debit Core
  • details.sepa.sddB2b – SEPA Direct Debit B2B

Both schemes are checked independently. confirmed means there is an unambiguous, current register match. unknown means participation could not be confirmed; it does not mean the bank does not support the scheme.

This checks bank participation. It does not confirm account existence or direct debit eligibility, a mandate, or the success of a collection.

SEPA fields and response examples

Why is my API access locked?
Common reasons for locked API access: quota, invalid API token or suspicious usage.

Why is my API access locked or disabled?

This can happen when your available API quota has been reached, when an API token is invalid, or when suspicious or abusive usage is detected.

If you only reached your quota, you can wait for the next reset or upgrade to a package with a higher request volume.

If your access appears to be blocked for another reason, please contact support through the contact form.

Can I use IBAN-Test in forms or shops?
The API is designed for IBAN validation in checkout, registration, SEPA mandates and back-office processes.

Yes. The IBAN-Test API is designed for automated validation in forms, shops, SaaS products, SEPA mandates and back-office processes.

Typical use cases include validating bank details during checkout, registration, before a direct debit or before importing larger payment data sets.

This helps catch typos and invalid bank details early instead of discovering them through failed payments or returned direct debits.

Bank data validation

Bank directory checks for 40 countries

IBAN-Test goes beyond checksum-only validation. For these countries, we check the bank identifier against available bank directories and return bank details such as institution, city and BIC when available. See how IBAN validation works.

ALAlbania ADAndorra ATAustria BEBelgium BGBulgaria HRCroatia CYCyprus CZCzech Republic DKDenmark EEEstonia FIFinland FRFrance DEGermany GIGibraltar GRGreece HUHungary ISIceland IEIreland ITItaly LVLatvia LILiechtenstein LTLithuania LULuxembourg MTMalta MDMoldova MEMontenegro NLNetherlands MKNorth Macedonia NONorway PLPoland PTPortugal RORomania SMSan Marino RSSerbia SKSlovakia SISlovenia ESSpain SESweden CHSwitzerland VAVatican City

IBAN syntax check

Format checks for 115 IBAN formats

Check IBANs for a valid structure, correct length and checksum. This helps you catch typos and transposed digits before a payment fails. Additional bank validation against real bank directories is available for the countries listed above.

MCP Server for AI Agents – Connect AI clients to IBAN validation tools – https://www.iban-test.eu/mcpAPI documentation