Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

IBAN Validator & Bank Account Checker

A failed SEPA transfer is expensive in every way that matters: the bank charges you an R-transaction fee, the supplier chases you for a payment you thought you sent, and someone on your team spends an afternoon reconciling it. Almost every one of these failures starts the same way — a typo in an IBAN that nobody caught at the point of entry.

This API catches it in one GET request. Send an IBAN to /validate and you get back a full verdict: MOD-97 checksum, country-specific length, and the national BBAN structure for 77 countries from the official SWIFT registry. If it's valid, the response breaks the IBAN into the parts your payment flow actually needs — country, check digits, bank code, branch/sort code, account number, and the BIC/SWIFT code where it can be derived. If it's invalid, you get human-readable reasons (checksum failed, wrong length for DE), not just false.

Common uses:

  • Validate IBANs on checkout, invoicing, and payroll forms before submission
  • Auto-fill bank name and BIC from the IBAN to cut form friction
  • Bulk-clean supplier and customer master data with /validate-batch
  • Show country-specific format hints and sample IBANs via /country/{code}

Pure computation on bundled data — no third-party calls, so bank details never leave the request.

Get started

  1. Subscribe (free tier available) on RapidAPI and copy your X-RapidAPI-Key.
  2. Call the API — here's the primary endpoint in every major language.

Base URL: https://iban-validator-bank-account-checker.p.rapidapi.com

Code examples

cURL

curl --request GET \
  --url 'https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header 'X-RapidAPI-Host: iban-validator-bank-account-checker.p.rapidapi.com'

Python

import requests

url = "https://iban-validator-bank-account-checker.p.rapidapi.com/validate"
querystring = {"iban": "DE89370400440532013000"}
headers = {
    "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
    "X-RapidAPI-Host": "iban-validator-bank-account-checker.p.rapidapi.com",
}

response = requests.get(url, headers=headers, params=querystring)
print(response.json())

JavaScript (fetch)

const url = 'https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000';
const options = {
  method: 'GET',
  headers: {
    'X-RapidAPI-Key': 'YOUR_RAPIDAPI_KEY',
    'X-RapidAPI-Host': 'iban-validator-bank-account-checker.p.rapidapi.com',
  },
};

const response = await fetch(url, options);
console.log(await response.json());

Node.js (axios)

import axios from 'axios';

const options = {
  method: 'GET',
  url: 'https://iban-validator-bank-account-checker.p.rapidapi.com/validate',
  params: {iban: 'DE89370400440532013000'},
  headers: {
    'X-RapidAPI-Key': 'YOUR_RAPIDAPI_KEY',
    'X-RapidAPI-Host': 'iban-validator-bank-account-checker.p.rapidapi.com',
  },
};

const { data } = await axios.request(options);
console.log(data);

TypeScript

const url = 'https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000';

const response = await fetch(url, {
  method: 'GET',
  headers: {
    'X-RapidAPI-Key': 'YOUR_RAPIDAPI_KEY',
    'X-RapidAPI-Host': 'iban-validator-bank-account-checker.p.rapidapi.com',
  } as Record<string, string>,
});

const data: unknown = await response.json();
console.log(data);

PHP

<?php
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => "https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY",
        "X-RapidAPI-Host: iban-validator-bank-account-checker.p.rapidapi.com",
    ],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;

Ruby

require 'uri'
require 'net/http'

url = URI("https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-RapidAPI-Key"] = 'YOUR_RAPIDAPI_KEY'
request["X-RapidAPI-Host"] = 'iban-validator-bank-account-checker.p.rapidapi.com'

response = http.request(request)
puts response.read_body

Java (OkHttp)

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
    .url("https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000")
    .get()
    .addHeader("X-RapidAPI-Key", "YOUR_RAPIDAPI_KEY")
    .addHeader("X-RapidAPI-Host", "iban-validator-bank-account-checker.p.rapidapi.com")
    .build();

Response response = client.newCall(request).execute();
System.out.println(response.body().string());

C#

using var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000"),
    Headers =
    {
        { "X-RapidAPI-Key", "YOUR_RAPIDAPI_KEY" },
        { "X-RapidAPI-Host", "iban-validator-bank-account-checker.p.rapidapi.com" },
    },
};

using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Go

package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET", "https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000", nil)
    req.Header.Add("X-RapidAPI-Key", "YOUR_RAPIDAPI_KEY")
    req.Header.Add("X-RapidAPI-Host", "iban-validator-bank-account-checker.p.rapidapi.com")

    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    fmt.Println(string(body))
}

Rust

use reqwest::header::{HeaderMap, HeaderValue};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut headers = HeaderMap::new();
    headers.insert("X-RapidAPI-Key", HeaderValue::from_static("YOUR_RAPIDAPI_KEY"));
    headers.insert("X-RapidAPI-Host", HeaderValue::from_static("iban-validator-bank-account-checker.p.rapidapi.com"));

    let client = reqwest::Client::new();
    let res = client.get("https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000").headers(headers).send().await?;
    println!("{}", res.text().await?);
    Ok(())
}

Swift

import Foundation

var request = URLRequest(url: URL(string: "https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000")!)
request.httpMethod = "GET"
request.setValue("YOUR_RAPIDAPI_KEY", forHTTPHeaderField: "X-RapidAPI-Key")
request.setValue("iban-validator-bank-account-checker.p.rapidapi.com", forHTTPHeaderField: "X-RapidAPI-Host")

let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)

Kotlin

val client = OkHttpClient()

val request = Request.Builder()
    .url("https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000")
    .get()
    .addHeader("X-RapidAPI-Key", "YOUR_RAPIDAPI_KEY")
    .addHeader("X-RapidAPI-Host", "iban-validator-bank-account-checker.p.rapidapi.com")
    .build()

val response = client.newCall(request).execute()
println(response.body?.string())

Shell (wget)

wget -qO- \
  --header='X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header='X-RapidAPI-Host: iban-validator-bank-account-checker.p.rapidapi.com' \
  'https://iban-validator-bank-account-checker.p.rapidapi.com/validate?iban=DE89370400440532013000'

Endpoints

Method Path Description
GET /validate Validate an IBAN and extract country, bank code, branch and BIC
POST /validate-batch Validate up to 100 IBANs in one request
GET /countries List all 77 supported countries and their IBAN lengths
GET /country/{code} IBAN format details and a sample IBAN for one country
GET /bic Look up a BIC/SWIFT code from an IBAN or a national bank code

How to validate IBANs in your checkout or payroll form (and stop failed SEPA transfers)

Read the full guide: How to validate IBANs in your checkout or payroll form (and stop failed SEPA transfers)


⭐ Powered by the IBAN Validator & Bank Account Checker API on RapidAPI.

Releases

Packages

Contributors