IBANforge

Batch Validate

Validate up to 10 IBANs in a single API call. Each IBAN is processed independently — one invalid IBAN does not affect the others.

Endpoint

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

Cost: $0.020 USDC per request (flat fee regardless of how many IBANs)

Request

Headers

| Header | Value | Required | |---|---|---| | Content-Type | application/json | Yes | | X-PAYMENT | x402 payment token | Yes |

Body

{
  "ibans": [
    "CH93 0076 2011 6238 5295 7",
    "DE89 3704 0044 0532 0130 00",
    "GB29 NWBK 6016 1331 9268 19",
    "INVALID123"
  ]
}

| Field | Type | Description | |---|---|---| | ibans | string[] | Array of IBANs to validate. Maximum 10 items. |

Response

Success (200)

{
  "results": [
    {
      "valid": true,
      "iban": {
        "formatted": "CH93 0076 2011 6238 5295 7",
        "compact": "CH9300762011623852957",
        "country": "Switzerland",
        "countryCode": "CH",
        "checkDigits": "93",
        "bban": "00762011623852957",
        "bankCode": "00762",
        "accountNumber": "011623852957"
      },
      "bic": {
        "code": "UBSWCHZH80A",
        "institution": "UBS SWITZERLAND AG",
        "city": "ZURICH",
        "country": "Switzerland",
        "lei": "BFM8T61CT2L1QCEMIK50"
      }
    },
    {
      "valid": true,
      "iban": {
        "formatted": "DE89 3704 0044 0532 0130 00",
        "compact": "DE89370400440532013000",
        "country": "Germany",
        "countryCode": "DE",
        "checkDigits": "89",
        "bban": "370400440532013000",
        "bankCode": "37040044",
        "accountNumber": "0532013000"
      },
      "bic": {
        "code": "COBADEFFXXX",
        "institution": "COMMERZBANK AG",
        "city": "FRANKFURT AM MAIN",
        "country": "Germany",
        "lei": "851WYGNLUQLFZBSBER43"
      }
    },
    {
      "valid": true,
      "iban": {
        "formatted": "GB29 NWBK 6016 1331 9268 19",
        "compact": "GB29NWBK60161331926819",
        "country": "United Kingdom",
        "countryCode": "GB",
        "checkDigits": "29",
        "bban": "NWBK60161331926819",
        "bankCode": "NWBK",
        "accountNumber": "31926819"
      },
      "bic": {
        "code": "NWBKGB2L",
        "institution": "NATIONAL WESTMINSTER BANK PLC",
        "city": "LONDON",
        "country": "United Kingdom",
        "lei": "RR3QWICWWIPCS8A4S074"
      }
    },
    {
      "valid": false,
      "error": {
        "code": "invalid_format",
        "message": "IBAN contains invalid characters or is not properly formatted"
      }
    }
  ],
  "summary": {
    "total": 4,
    "valid": 3,
    "invalid": 1
  }
}

Response fields

results array: Each item has the same structure as the single validation response. The order matches the input array.

summary object:

| Field | Type | Description | |---|---|---| | total | number | Number of IBANs submitted | | valid | number | Count of valid IBANs | | invalid | number | Count of invalid IBANs |

Errors

| Status | Code | Description | |---|---|---| | 400 | empty_array | The ibans array is empty | | 400 | too_many_ibans | More than 10 IBANs submitted | | 400 | invalid_body | Request body is not valid JSON or missing ibans field |

Code examples

cURL

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

Python

import requests

response = requests.post(
    "https://api.ibanforge.com/v1/iban/batch",
    json={
        "ibans": [
            "CH9300762011623852957",
            "DE89370400440532013000",
            "FR7630006000011234567890189",
        ]
    },
)

data = response.json()
print(f"Valid: {data['summary']['valid']}/{data['summary']['total']}")

for result in data["results"]:
    if result["valid"]:
        print(f"  {result['iban']['compact']} — {result['iban']['country']}")
    else:
        print(f"  INVALID — {result['error']['message']}")

TypeScript

const response = await fetch(
  "https://api.ibanforge.com/v1/iban/batch",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      ibans: [
        "CH9300762011623852957",
        "DE89370400440532013000",
        "FR7630006000011234567890189",
      ],
    }),
  }
);

const data = await response.json();
console.log(`Valid: ${data.summary.valid}/${data.summary.total}`);

for (const result of data.results) {
  if (result.valid) {
    console.log(`  ${result.iban.compact} — ${result.iban.country}`);
  } else {
    console.log(`  INVALID — ${result.error.message}`);
  }
}