API reference

IBAN and bank details validation API API

Validate IBANs, BIC/SWIFT codes and US routing numbers. Use this reference to choose an operation and integrate its documented response contract.

Operations

POST /v1/bank/validate View API reference

POST /v1/bank/validate

Operation: validateBankDetails Credits and authentication: 1 Authentication required
POST /v1/bank/validate Credits: 1

Body parameters

Parameter Type required
iban string optional
bic string optional
routing_number string optional

Response fields

Field Type
valid boolean
iban object
iban.valid boolean
iban.errors[] string[]
iban.iban string | null
iban.iban_print string | null
iban.country_code string | null
iban.format_country_code string | null
iban.registry_status string | null
iban.check_digits string | null
iban.bban string | null
iban.bank_code string | null
iban.branch_code string | null
iban.account_number string | null
iban.sepa boolean | null
iban.length integer
iban.expected_length integer | null
iban.checks object
iban.checks.characters string
iban.checks.country_supported string
iban.checks.length string
iban.checks.structure string
iban.checks.checksum string
bic object
bic.valid boolean
bic.errors[] string[]
bic.bic string | null
bic.bic8 string | null
bic.institution_code string | null
bic.country_code string | null
bic.location_code string | null
bic.branch_code string | null
bic.primary_office boolean | null
bic.test_bic boolean | null
bic.passive_participant boolean | null
routing_number object
routing_number.valid boolean
routing_number.errors[] string[]
routing_number.routing_number string | null
routing_number.type string | null
routing_number.federal_reserve_district integer | null
routing_number.federal_reserve_bank string | null
routing_number.checks object
routing_number.checks.format string
routing_number.checks.prefix string
routing_number.checks.checksum string
bic_iban_country_relation string | null
signals[] string[]

Example request

curl -X POST "https://domscan.net/v1/bank/validate" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "iban": "DE89 3704 0044 0532 0130 00",
  "bic": "COBADEFFXXX"
}'
const response = await fetch("https://domscan.net/v1/bank/validate", {
  method: "POST",
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    "iban": "DE89 3704 0044 0532 0130 00",
    "bic": "COBADEFFXXX"
  }),
});
const data = await response.json();
console.log(data);
import os
import requests

response = requests.post(
    "https://domscan.net/v1/bank/validate",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
    json={
        "iban": "DE89 3704 0044 0532 0130 00",
        "bic": "COBADEFFXXX",
    },
)
print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
)

func main() {
	body := strings.NewReader(`{
	  "iban": "DE89 3704 0044 0532 0130 00",
	  "bic": "COBADEFFXXX"
	}`)
	req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/bank/validate", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/bank/validate")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
  "iban" => "DE89 3704 0044 0532 0130 00",
  "bic" => "COBADEFFXXX"
})

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))

Example response

{
  "valid": true,
  "iban": {
    "valid": true,
    "errors": [],
    "iban": "DE89370400440532013000",
    "iban_print": "DE89 3704 0044 0532 0130 00",
    "country_code": "DE",
    "format_country_code": "DE",
    "registry_status": "swift_registry",
    "check_digits": "89",
    "bban": "370400440532013000",
    "bank_code": "37040044",
    "branch_code": null,
    "account_number": "0532013000",
    "sepa": true,
    "length": 22,
    "expected_length": 22,
    "checks": {
      "characters": "pass",
      "country_supported": "pass",
      "length": "pass",
      "structure": "pass",
      "checksum": "pass"
    }
  },
  "bic": {
    "valid": true,
    "errors": [],
    "bic": "COBADEFFXXX",
    "bic8": "COBADEFF",
    "institution_code": "COBA",
    "country_code": "DE",
    "location_code": "FF",
    "branch_code": "XXX",
    "primary_office": true,
    "test_bic": false,
    "passive_participant": false
  },
  "routing_number": null,
  "bic_iban_country_relation": "same",
  "signals": []
}

HTTP status codes

  • 200 OK
  • 400 Bad Request
  • 401 Unauthorized
  • 402 Payment Required
  • 409 HTTP 409
  • 422 HTTP 422
  • 429 Too Many Requests

Reference resources