IBAN Validator

IBAN Validator

Data Validation Finance Credits / request: 1

Validates an IBAN and parses country, bank, branch and account details.

GET https://api.apikodu.com/api/v1/ibanvalidator
Documentation
Overview

Validates an IBAN and splits country, bank and account parts.

Authentication

Every request requires the x-api-key header. Credits used and remaining quota are returned in response headers (x-api-credits-used, x-api-remaining-credits, x-rate-limit-*).

Request
GET https://api.apikodu.com/api/v1/ibanvalidator?iban=TR330006100519786457841326
Query string.
Parameters
Name Type Required Default Options Description
iban string * Required — — IBAN with or without spaces.
Response
Name Type Description
isValid boolean true when MOD-97 checksum and country length are valid. Invalid IBANs still return HTTP 200.
iban string Normalized IBAN: no spaces, uppercase.
ibanPrint string Print format in groups of 4. Example: TR60 0001 0001 ...
ibanObfuscated string IBAN with the middle masked as X. Last 4 digits remain visible.
countryCode string ISO 3166-1 alpha-2 country code (first 2 characters).
checkDigits string IBAN check digits (characters 3–4).
bban string Basic Bank Account Number (BBAN), excluding country code and check digits.
bankIdentifier string Bank identifier inside the BBAN. Length depends on the country. May be null.
bankName string Bank name when known. Null otherwise.
branchIdentifier string Branch identifier when the country uses one. Otherwise null.
sepaMember boolean Whether the country is a SEPA member.
isQrIban boolean Whether the IBAN is in the Swiss/Liechtenstein QR-IBAN range.
Errors
HTTP code Description
400 -227 `iban` is empty or whitespace. Invalid checksum returns HTTP 200 with data.isValid=false.
401 -100 x-api-key is missing, empty, malformed, inactive, banned, expired, IP-restricted, or not allowed for this API.
429 -221 Per-minute request limit exceeded. Response headers: x-rate-limit-limit, x-rate-limit-remaining, x-rate-limit-reset.
429 — Package credit quota cannot cover this request. Body may be { error, limit, currentUsage, requestCost } (no code field).
500 -1 Unexpected server error. message is a generic error text without technical details.
Notes
  • Success body is { data: { ... } }. Error body is { code, message }. code is an ApiResponseCode enum value (negative integer).

Sample response

{
  "data": {
    "isValid": true,
    "iban": "TR600001000104603212345678",
    "ibanPrint": "TR60 0001 0001 0460 3212 3456 78",
    "ibanObfuscated": "XXXXXXXXXXXXXXXXXXXXXX5678",
    "countryCode": "TR",
    "checkDigits": "60",
    "bban": "0001000104603212345678",
    "bankIdentifier": "00010",
    "bankName": "T.C. Ziraat Bankası A.Ş.",
    "branchIdentifier": null,
    "sepaMember": false,
    "isQrIban": false
  }
}

Code samples

  
      const response = await fetch('https://api.apikodu.com/api/v1/ibanvalidator', {
        method: 'GET',
        headers: {
          'x-api-key': 'YOUR_API_KEY'
        }
      });

      const data = await response.json();
      console.log(data);
  
  
      import requests

      headers = {
          'x-api-key': 'YOUR_API_KEY'
      }

      response = requests.get('https://api.apikodu.com/api/v1/ibanvalidator', headers=headers)
      print(response.json())
  
  
      using var client = new HttpClient();
      client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");

      var response = await client.GetStringAsync("https://api.apikodu.com/api/v1/ibanvalidator");
      Console.WriteLine(response);
  
  
      $response = file_get_contents('https://api.apikodu.com/api/v1/ibanvalidator', false, stream_context_create([
          'http' => [
              'header' => "x-api-key: YOUR_API_KEY"
          ]
      ]));

      print_r(json_decode($response, true));
  
  
      curl -X GET 'https://api.apikodu.com/api/v1/ibanvalidator' \
        -H 'x-api-key: YOUR_API_KEY'
  

Start building in minutes

Create a free account, get your API key and send your first request in minutes.

Get started free