---
title: "Validates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes."
method: GET
path: "/v1/iban/validate"
tags: ["Validation"]
---

# Validates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes.

`GET /v1/iban/validate`

## Request

- Base URL: `https://api.temsor.com`
- URL: `https://api.temsor.com/v1/iban/validate`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Most free libraries stop at the mod-97 checksum. That only says the digits are self-consistent — not that the number could exist in that country. This checks the country's BBAN structure too, so a wrong-length or wrong-shaped account is rejected before your payment file reaches the bank. When only the two check digits are wrong, the correct ones are computed and returned as a suggestion, because that is what people actually mistype. Turkish, Dutch and Belgian IBANs additionally resolve to a bank name when the national code is in our table; otherwise bankName is null. This is not a SWIFT directory.

**Credits per call:** 1 · **Operation id:** `iban_validate`

In the GET form every field is a query parameter; object and array fields are JSON-encoded.

## Query parameters

- `iban` string, required: IBAN, with or without spaces.
- `expectCountry` string: Expected country code (ISO 3166-1 alpha-2).

## Response `200`

Success

- object
  - `ok` unknown, required
  - `data` object, required
    - `input` string, required
    - `valid` boolean, required
    - `reason` string, nullable, required
    - `formatted` string, nullable, required
    - `electronicFormat` string, nullable, required
    - `country` object, nullable, required
      - `code` string, required
      - `name` string, required
      - `sepa` boolean, required
    - `bankCode` string, nullable, required
    - `branchCode` string, nullable, required
    - `accountNumber` string, nullable, required
    - `bankName` string, nullable, required
    - `checks` object, required
      - `countryKnown` boolean, required
      - `lengthValid` boolean, required
      - `structureValid` boolean, required
      - `checksumValid` boolean, required
    - `suggestion` string, nullable, required
    - `warnings` string[], required
  - `meta` object
    - `credits` integer
    - `cached` boolean
    - `requestId` string
    - `durationMs` integer

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `429`: Rate limit exceeded — wait `Retry-After` seconds. The RateLimit headers are sent here too.

---

[API](https://skmtc.dev/temsor/apis/temsor-api.md) · [All operations](https://skmtc.dev/temsor/apis/temsor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/temsor/apis/temsor-api/revisions/19702107e15a?raw)
