IBANforge

Recettes — valider un IBAN dans votre stack

Chaque recette fait le même appel : POST /v1/iban/validate, qui rend structure + clé, la banque émettrice (BIC), le contrôle du code banque au registre national, la classification EMI/vIBAN et la joignabilité SEPA/VoP. D'abord une clé gratuite (200 requêtes/mois, sans carte) :

curl -X POST https://api.ibanforge.com/v1/keys/generate \
  -H "Content-Type: application/json" \
  -d '{"email": "vous@entreprise.com"}'

La note honnête qui a sa place dans chaque intégration : un contrôle mod-97 local attrape les fautes de frappe, rien d'autre. Trois des quatre IBAN d'exemple officiels passent toutes les clés et pointent pourtant des codes banque qu'aucun registre n'a attribués — l'histoire complète. Le contrôle au registre est la partie impossible en local.

Python

Avec le SDK officiel (pip install ibanforge) :

from ibanforge import IBANforge
 
client = IBANforge(api_key="ifk_votre_cle")
result = client.validate("DE89370400440532013000")
print(result["valid"], result["bic"]["code"], result["bank_code_check"]["status"])
# True COBADEFF verified

Ou requests nature :

import requests
 
r = requests.post(
    "https://api.ibanforge.com/v1/iban/validate",
    json={"iban": "DE89370400440532013000"},
    headers={"Authorization": "Bearer ifk_votre_cle"},
    timeout=15,
)
data = r.json()
print(data["valid"], data["bank_code_check"]["status"])  # True verified

Node.js / TypeScript

fetch natif, zéro dépendance :

const res = await fetch("https://api.ibanforge.com/v1/iban/validate", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer ifk_votre_cle",
  },
  body: JSON.stringify({ iban: "DE89370400440532013000" }),
});
const data = await res.json();
console.log(data.valid, data.bic?.code, data.bank_code_check?.status);
// true COBADEFF verified

Le SDK officiel (npm install @ibanforge/sdk) enveloppe le même appel avec les types.

PHP

Rien au-delà de ce que PHP embarque :

<?php
$payload = json_encode(["iban" => "DE89370400440532013000"]);
$ctx = stream_context_create(["http" => [
    "method"  => "POST",
    "header"  => "Content-Type: application/json\r\nAuthorization: Bearer ifk_votre_cle",
    "content" => $payload,
    "timeout" => 15,
]]);
$data = json_decode(file_get_contents(
    "https://api.ibanforge.com/v1/iban/validate", false, $ctx), true);
echo $data["valid"] ? "valide" : "invalide", " — ",
     $data["bank_code_check"]["status"] ?? "n/a", PHP_EOL;
// valide — verified

Google Sheets

Extensions → Apps Script, puis une fonction personnalisée utilisable en =VALIDATE_IBAN(A2) :

function VALIDATE_IBAN(iban) {
  const res = UrlFetchApp.fetch("https://api.ibanforge.com/v1/iban/validate", {
    method: "post",
    contentType: "application/json",
    headers: { Authorization: "Bearer ifk_votre_cle" },
    payload: JSON.stringify({ iban: String(iban) }),
    muteHttpExceptions: true,
  });
  const d = JSON.parse(res.getContentText());
  return [[d.valid, d.bic ? d.bic.code : "", d.bank_code_check ? d.bank_code_check.status : ""]];
}

Attention au quota : un appel par évaluation de cellule. Pour une colonne entière, préférez le endpoint batch depuis un script (jusqu'à 100 IBAN par appel).

n8n

Installez le node communautaire — validation, recherche BIC, clearing suisse et pré-contrôle conformité, avec un écran de credentials :

Settings → Community nodes → Install → n8n-nodes-ibanforge

Auto-hébergé : npm install n8n-nodes-ibanforge. (Les nodes communautaires non vérifiés tournent en auto-hébergé ; le listing vérifié pour n8n Cloud est en cours.)

Agents IA (MCP)

Claude Desktop, Claude Code, Cursor et tout client MCP :

npx -y ibanforge-mcp        # stdio, 5 outils, clé du palier gratuit optionnelle

Ou le transport hébergé, sans installation : https://api.ibanforge.com/mcp — 10 appels d'outils gratuits par IP et par jour, sans aucune clé : le chemin le plus rapide pour qu'un assistant évalue la donnée avant tout engagement.

Ce que vous recevez

La réponse que les recettes affichent (réponse de production, abrégée) :

{
  "valid": true,
  "bic": { "code": "COBADEFF", "bank_name": "COMMERZBANK Aktiengesellschaft", "city": "Frankfurt am Main" },
  "bank_code_check": {
    "value": "37040044",
    "status": "verified",
    "register": "Deutsche Bundesbank Bankleitzahlendatei",
    "authoritative": true,
    "as_of": "2026-08"
  }
}

authoritative: true signifie que le registre national lui-même a répondu. Les champs que la donnée ne soutient pas valent null, jamais devinés — la sémantique complète explique ce que verified promet et ne promet pas.

Voir aussi : Ce que « verified » veut dire · IBAN vers BIC · Générateur d'IBAN de test · Sources des données