Aller au contenu
IBANforge

Validation par lot

Validez jusqu'a 100 IBAN en un seul appel API. Chaque IBAN est traite independamment — un IBAN invalide n'affecte pas les autres. 60 % moins cher que les appels individuels.

Endpoint

POST https://api.ibanforge.com/v1/iban/batch

Cout : $0.002 USDC par IBAN via x402 (ex. : 10 IBAN = $0.020, 100 IBAN = $0.200). Avec une cle API, un lot debite 1 requete / 1 credit prepaye par IBAN — offre gratuite et packs de credits inclus. Si le lot depasse votre solde restant, l'API le refuse en tout-ou-rien avec un 402 qui nomme le manque (en-tetes X-Credits-Required / X-Quota-Required) ; rien n'est consomme.

Requete

En-tetes

En-teteValeurRequis
Content-Typeapplication/jsonOui
AuthorizationBearer ifk_... (clé API gratuite)L'un des deux
X-PAYMENTToken de paiement x402L'un des deux

Corps

{
  "ibans": [
    "CH10 0023 0000 0000 1234 5",
    "DE89 3704 0044 0532 0130 00",
    "INVALID123"
  ]
}
ChampTypeDescription
ibansstring[]Tableau d'IBAN a valider. De 1 a 100 elements.

Reponse

Succes (200)

{
  "results": [
    {
      "iban": "CH1000230000000012345",
      "valid": true,
      "country": { "code": "CH", "name": "Switzerland" },
      "check_digits": "10",
      "bban": { "bank_code": "00230", "account_number": "000000012345" },
      "bic": { "code": "UBSWCHZH80A", "bic8": "UBSWCHZH", "bank_name": "UBS Switzerland AG", "city": "Zürich" },
      "sepa": { "member": true, "schemes": ["SCT", "SDD"], "vop_required": false },
      "issuer": { "type": "bank", "name": "UBS Switzerland AG" },
      "risk_indicators": {
        "issuer_type": "bank",
        "country_risk": "standard",
        "test_bic": false,
        "sepa_reachable": true,
        "vop_coverage": false
      },
      "clearing": {
        "iid": "00230",
        "name": "UBS Switzerland AG",
        "type": "bank",
        "town": "Zürich",
        "sic": true,
        "instant_payments_chf": true,
        "eurosic": true,
        "qr_iid": null
      },
      "formatted": "CH10 0023 0000 0000 1234 5",
      "cost_usdc": 0.002
    },
    {
      "iban": "DE89370400440532013000",
      "valid": true,
      "country": { "code": "DE", "name": "Germany" },
      "check_digits": "89",
      "bban": { "bank_code": "37040044", "account_number": "0532013000" },
      "bic": { "code": "COBADEFFXXX", "bank_name": "Commerzbank", "city": "Köln" },
      "sepa": { "member": true, "schemes": ["SCT", "SDD", "SCT_INST"], "vop_required": true },
      "issuer": { "type": "bank", "name": "Commerzbank" },
      "risk_indicators": {
        "issuer_type": "bank",
        "country_risk": "standard",
        "test_bic": false,
        "sepa_reachable": true,
        "vop_coverage": true
      },
      "formatted": "DE89 3704 0044 0532 0130 00",
      "cost_usdc": 0.002
    },
    {
      "iban": "INVALID123",
      "valid": false,
      "error": "unsupported_country",
      "error_detail": "Country code 'IN' is not a recognized IBAN country.",
      "cost_usdc": 0.002
    }
  ],
  "count": 3,
  "valid_count": 2,
  "cost_usdc": 0.006,
  "processing_ms": 1.05
}

Champs de la reponse

Premier niveau :

ChampTypeDescription
resultsarrayTableau des resultats de validation, dans le meme ordre que l'entree
countnumberNombre total d'IBAN traites
valid_countnumberNombre d'IBAN valides
cost_usdcnumberCout total de ce lot
processing_msnumberTemps total de traitement

Chaque element de results possede la meme structure que la reponse de validation unitaire, incluant sepa, issuer et risk_indicators pour les IBAN valides.

Erreurs

StatutCodeDescription
400empty_batchLe tableau ibans est vide
400batch_too_largePlus de 100 IBAN soumis
400invalid_requestLe corps de la requete n'est pas un JSON valide ou le champ ibans est manquant

Exemples de code

cURL

curl -X POST https://api.ibanforge.com/v1/iban/batch \
  -H "Content-Type: application/json" \
  -d '{
    "ibans": [
      "CH1000230000000012345",
      "DE89370400440532013000",
      "FR7630006000011234567890189"
    ]
  }'

Python

import requests
 
response = requests.post(
    "https://api.ibanforge.com/v1/iban/batch",
    json={
        "ibans": [
            "CH1000230000000012345",
            "DE89370400440532013000",
            "FR7630006000011234567890189",
        ]
    },
)
 
data = response.json()
print(f"Valid: {data['valid_count']}/{data['count']}")
 
for result in data["results"]:
    if result["valid"]:
        risk = result["risk_indicators"]["country_risk"]
        issuer = result["issuer"]["type"]
        print(f"  {result['iban']} — {result['country']['name']} ({issuer}, risk: {risk})")
    else:
        print(f"  INVALID — {result['error_detail']}")

TypeScript

const response = await fetch(
  "https://api.ibanforge.com/v1/iban/batch",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      ibans: [
        "CH1000230000000012345",
        "DE89370400440532013000",
        "FR7630006000011234567890189",
      ],
    }),
  }
);
 
const data = await response.json();
console.log(`Valid: ${data.valid_count}/${data.count}`);
 
for (const result of data.results) {
  if (result.valid) {
    console.log(`  ${result.iban} — ${result.issuer.type}, risk: ${result.risk_indicators.country_risk}`);
  } else {
    console.log(`  INVALID — ${result.error_detail}`);
  }
}

Passez à votre cas concret

Choisissez une première étape pour votre logiciel ou votre fichier fournisseurs.

Contrôler un fichier fournisseurs

Déposez un CSV ou un fichier Excel et consultez gratuitement l’aperçu des constats. Achetez le classeur annoté si vous avez besoin du rapport complet. Sans compte ni abonnement.

Découvrir l’audit de fichiers

Intégrer les contrôles IBAN à votre logiciel

Essayez une validation, examinez la réponse, puis reliez votre application à l’API ou à une intégration existante.

Découvrir le parcours API

Les informations bancaires disponibles varient selon le pays et la source. Ces contrôles ne confirment pas le titulaire du compte et ne garantissent pas la réussite d’un paiement.