Back to blog
Product

IBAN Validation: More Than Just a Checksum

Josselin Liebe
Josselin Liebe

Most IBAN validation libraries just run a modulo-97 checksum. That catches typos, but it tells you nothing about whether the bank exists, what its BIC code is, or whether it participates in SEPA. The Veille IBAN Validation API (GET /v1/vat/iban) goes further by returning full bank details alongside the mathematical check.

What the API returns

For any IBAN, you get: valid (boolean), bank_name, bic (SWIFT code), country_code, country_name, the structural breakdown (bank_code, branch_code, account_number, bban), and in_sepa_zone.

Quick integration

Python

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.veille.io/v1"

response = requests.get(
    f"{BASE_URL}/vat/iban",
    params={"query": "FR7630006000011234567890189"},
    headers={"x-api-key": API_KEY},
)
data = response.json()

if data["valid"] and data["in_sepa_zone"]:
    print(f"SEPA-ready - {data['bank_name']} (BIC: {data['bic']})")
else:
    print("IBAN invalid or outside SEPA zone")

TypeScript

const API_KEY = "YOUR_API_KEY";
const BASE_URL = "https://api.veille.io/v1";
const headers = { "x-api-key": API_KEY };

const response = await fetch(
  `${BASE_URL}/vat/iban?query=FR7630006000011234567890189`,
  { headers }
);
const data = await response.json();

if (data.valid && data.in_sepa_zone) {
  console.log(`SEPA-ready - ${data.bank_name} (BIC: ${data.bic})`);
} else {
  console.log("IBAN invalid or outside SEPA zone");
}

Key response fields

  • valid - full structural and checksum validation
  • bank_name - the institution behind the IBAN
  • bic - BIC/SWIFT code for routing
  • in_sepa_zone - whether the bank supports SEPA transfers
  • bank_code / branch_code / account_number - BBAN breakdown

5 use cases

  1. Payment form validation - verify the IBAN and display the bank name before the user submits, reducing failed transfers.
  2. SEPA Direct Debit - confirm SEPA zone membership before setting up a mandate to avoid rejected debits.
  3. Supplier payments - auto-resolve the BIC from the IBAN to pre-fill wire transfer details.
  4. KYC onboarding - cross-check the bank country with the customer's declared country of residence.
  5. Payout systems - validate freelancer or creator IBANs before scheduling payouts to prevent failed transactions.