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-tete | Valeur | Requis |
|---|---|---|
Content-Type | application/json | Oui |
Authorization | Bearer ifk_... (clé API gratuite) | L'un des deux |
X-PAYMENT | Token de paiement x402 | L'un des deux |
Corps
{
"ibans": [
"CH10 0023 0000 0000 1234 5",
"DE89 3704 0044 0532 0130 00",
"INVALID123"
]
}| Champ | Type | Description |
|---|---|---|
ibans | string[] | 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 :
| Champ | Type | Description |
|---|---|---|
results | array | Tableau des resultats de validation, dans le meme ordre que l'entree |
count | number | Nombre total d'IBAN traites |
valid_count | number | Nombre d'IBAN valides |
cost_usdc | number | Cout total de ce lot |
processing_ms | number | Temps 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
| Statut | Code | Description |
|---|---|---|
| 400 | empty_batch | Le tableau ibans est vide |
| 400 | batch_too_large | Plus de 100 IBAN soumis |
| 400 | invalid_request | Le 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 fichiersInté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 APILes 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.