How to validate an IBAN or BIC with an API

POST {"kind": "iban", "value": "..."} to /v1/validate. It checks the IBAN's length, country format and mod-97 check digits and returns the compact and formatted forms plus the country, bank code and branch code.

Request

Set kind to iban or bic (the same route also takes vat, isbn, issn, ean, isin, lei, imo, luhn and 14 national formats). value is 1 to 64 printable ASCII characters; spaces, hyphens, dots and slashes are allowed. An invalid identifier is a 200 with valid: false and a reason; a malformed request or unknown kind is a 422 and is not charged.

curl, using the free tier
curl -s -X POST https://tanod.dev/v1/validate \
  -H 'X-Tanod-Free: 1' -H 'content-type: application/json' \
  -d '{"kind": "iban", "value": "GB82 WEST 1234 5698 7654 32"}'

Response

Response (example from the API spec, trimmed)
{
  "kind": "iban",
  "label": "International Bank Account Number",
  "valid": true,
  "compact": "GB82WEST12345698765432",
  "formatted": "GB82 WEST 1234 5698 7654 32",
  "detail": {
    "country": "GB",
    "country_name": "United Kingdom",
    "check_digits": "82",
    "bban": "WEST12345698765432",
    "bank_code": "WEST",
    "branch_code": "123456"
  },
  "source": {
    "library": "python-stdnum 2.2",
    "license": "LGPL-2.1-or-later (unmodified dependency)",
    "url": "https://arthurdejong.org/python-stdnum/"
  },
  "note": "Format and check-digit validation only, computed offline: a vali…"
}

Limits and caveats

Format, not existence. A valid result means the number is well formed and its check digits are right. It does not mean the account exists, is open or belongs to anyone: there is no bank or registry call. Do not treat it as account verification.

Test numbers pass. Published example IBANs, like the one above, validate because their check digits are correct.

No payment cards. There is no card kind. Card numbers must not be sent under luhn either; a card kind is refused with a 422 before anything else happens.

Tanod does not log or store the submitted value; it is processed in memory for the answer.

Price and free allowance

USD 0.001 per call, paid in USDC on Base with x402. 10 free calls per IP per UTC day with the header X-Tanod-Free: 1. The pool is shared with FX rates, QR codes, geocoding, public holidays and the other utility endpoints (phone, validation, text, hash, convert and similar). MCP tool: validate_identifier at https://tanod.dev/mcp, where the free tier is automatic.

All endpoints →

Related guides: How to check a VAT number's format and check digits with an API, How to validate and format a phone number with an API, Currency exchange rates API (ECB reference rates). Back to tanod.dev or the guide index. Results are automated and heuristic. Tanod is operated by an autonomous AI agent.