BankCheck
HomeIBANRouting NumberSort CodeGuides
Home
IBAN
Routing Number
Sort Code
Guides

BankCheck

Validate any bank number instantly. Free and 100% client-side.

Your data never leaves the browser

Formats

IBAN40+ countriesRouting NumberUnited StatesSort CodeUK & Ireland

Info

GuidesCompareAlternativesAboutPrivacy PolicyTerms of UseAPI Docs

BankCheck checks whether a number could be valid based on format, length, and checksum rules. It does not verify that an account exists or confirm who it belongs to. Always confirm account details with your bank before making a payment.

© 2026 BankCheck

BankCheck API

Free REST API for validating IBAN, US routing numbers, and UK sort codes. No authentication required. CORS enabled for browser use.

Endpoint

POST https://bankcheck.dev/api/v1/validate

GET https://bankcheck.dev/api/v1/validate?q={bank_number}

Both methods return the same JSON response. Use POST for programmatic integrations, GET for quick testing.

Quick Start

bashValidate an IBAN
curl "https://bankcheck.dev/api/v1/validate?q=DE89370400440532013000"
bashValidate a US routing number
curl "https://bankcheck.dev/api/v1/validate?q=021000021"
bashPOST with format hint
curl -X POST https://bankcheck.dev/api/v1/validate \
  -H "Content-Type: application/json" \
  -d '{"input": "20-00-00", "format": "uk-sort-code"}'

Request Parameters

FieldTypeDescription
input / qstringThe bank number to validate. Use 'input' in POST body, 'q' as GET query param.
formatstringOptional format hint: "iban", "us-routing", or "uk-sort-code". If omitted, the format is auto-detected.

Response

All validation outcomes (valid or invalid) return HTTP 200. The result.valid field indicates the validation result. HTTP 400 is returned only when the request itself is malformed.

jsonExample response (valid German IBAN)
{
  "apiVersion": "1",
  "processingTimeMs": 1,
  "result": {
    "valid": true,
    "format": "iban",
    "normalized": "DE89370400440532013000",
    "errors": [],
    "breakdown": {
      "formatName": "IBAN",
      "parts": [
        { "label": "Country", "value": "DE", "start": 0, "end": 2 },
        { "label": "Check Digits", "value": "89", "start": 2, "end": 4 },
        { "label": "Bank Code", "value": "37040044", "start": 4, "end": 12 },
        { "label": "Account Number", "value": "0532013000", "start": 12, "end": 22 }
      ]
    },
    "bankInfo": {
      "bankName": "Commerzbank",
      "bic": "COBADEFFXXX",
      "country": "Germany",
      "countryCode": "DE",
      "city": "Frankfurt"
    }
  }
}

Response Fields

FieldTypeDescription
apiVersionstringAlways "1"
processingTimeMsnumberServer-side processing time in milliseconds
result.validbooleanWhether the bank number passed all validation checks
result.formatstring | nullDetected format: "iban", "us-routing", "uk-sort-code", or null
result.normalizedstringInput with whitespace, hyphens, and dots removed, uppercased
result.errorsarrayValidation errors, each with code, message, and suggestion fields
result.breakdownobject | nullStructure breakdown with labeled parts (country code, check digits, etc.)
result.bankInfoobject | nullBank lookup result with bankName, bic, country, countryCode, city

Format-Specific Docs

IBAN

40+ countries, MOD-97

Routing Number

US ABA 9-digit codes

Sort Code

UK 6-digit codes

Privacy Note

Unlike the web interface which validates entirely client-side, API requests are processed on the server. BankCheck does not log or store input data, but if you have strict privacy requirements, use the client-side web tool instead.

FAQ

Is the API free?
Yes. The BankCheck API is completely free with no usage limits, no API keys, and no signup required.
Do I need an API key?
No. Send requests directly — no API key, no OAuth, no signup.
What rate limits apply?
There are currently no rate limits. We reserve the right to introduce reasonable rate limits in the future if needed to maintain service quality.
Is input logged server-side?
No. BankCheck does not log, store, or share bank numbers submitted via the API. However, API requests do travel over the network — for maximum privacy, use the client-side web validator.