IBAN Number Validation

IBAN (International Bank Account Number) is the standard international format used by banks to credit funds to a remittee’s account. It’s used across the European Union as well as some other parts of the world (mainly in the Middle East and the Caribbean) for international and local money transfers.

An IBAN consists of up to 34 (depending on the country) alphanumeric characters and contains the country code, 2 check digits, the bank identifier, the branch identifier (optionally) and the domestic bank account number.

For example, IBAN number FR7630006000011234567890189:

When you send money to an invalid IBAN number, the bank should reverse the transaction and return the money, but this might take some time and your bank may charge you a fee. Using our flexible and fast RESTful API you can validate an IBAN number and receive all possible information about it - see whether it's valid and which country and SWIFT code it belongs to, as well as SWIFT code bank name, branch information and city.

How to validate an IBAN number

To start using our SWIFT codes API sign up here and create your API key. Pass this key either via x-api-key HTTP header or via api_key query param.

To validate an IBAN number call /v1/ibans/{iban_number} endpoint using HTTP client of your preference, i.e.:

curl 'https://swiftcodesapi.com/v1/ibans/FR7630006000011234567890189' \
    --header 'X-Api-Key: your-api-key-here' \
    --header 'Accept: application/json'
# INSTALLATION
$ composer require guzzlehttp/guzzle
# REQUEST
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://swiftcodesapi.com/v1/ibans/FR7630006000011234567890189', [
    'headers' => [
        'Accept' => 'application/json',
        'X-Api-Key' => 'your-api-key-here',
    ],
]);

echo $response->getBody();
# INSTALLATION
$ python -m pip install requests
# REQUEST
import requests

url = "https://swiftcodesapi.com/v1/ibans/FR7630006000011234567890189"

headers = {
    "Accept": "application/json",
    "X-Api-Key": "your-api-key-here"
}

response = requests.request("GET", url, headers=headers)

print(response.text)
# INSTALLATION
$ npm install node-fetch --save
// REQUEST
const fetch = require('node-fetch');

const url = 'https://swiftcodesapi.com/v1/ibans/FR7630006000011234567890189';
const options = {method: 'GET', headers: {'Accept': 'application/json', 'X-Api-Key': 'your-api-key-here'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));)
const options = {method: 'GET', headers: {'Accept': 'application/json', 'X-Api-Key': 'your-api-key-here'}};

fetch('https://swiftcodesapi.com/v1/ibans/FR7630006000011234567890189', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

The response should be:

{
    "success": true,
    "data": {
        "id": "FR7630006000011234567890189",
        "account_number": "1234567890189",
        "national_bank_code": "30006",
        "national_branch_code": "00001",
        "swift": {
            "id": "AGRIFRPP",
            "address": "12 PLACE DES ETATS-UNIS",
            "postcode": "92120",
            "branch_name": "(HEAD OFFICE)",
            "branch_code": "",
            "country": {
                "id": "FR",
                "name": "France"
            },
            "city": {
                "id": "a3e9cd32-d241-475a-89bb-41f9621be4e5",
                "country_id": "FR",
                "name": "Montrouge"
            },
            "bank": {
                "id": "fff72551-720a-4c37-b430-32d747634905",
                "country_id": "FR",
                "code": "AGRI",
                "name": "CREDIT AGRICOLE SA"
            }
        },
        "country": {
            "id": "FR",
            "name": "France"
        }
    }
}

You can find full documentation here.

Using our API you can check whether an IBAN is in the valid format and represents an existing bank/branch, but we can’t guarantee that the actual account number exists, or that it represents the intended account. Our API should help you to confirm some of the details you already know, such as the country and bank.