Validate IBAN
Validate IBAN is an API that checks whether an IBAN account number is valid (ISO 7064 checksum) before you store it or use it for a payment. Send the IBAN and get back whether it's correct, which country it's from, and how it looks properly formatted.
How it works
You send the IBAN (with or without spaces) and it checks the check-digit mathematically. It doesn't call any bank or verify the account actually exists, only that the number is well-formed: exactly what you need to catch typos before they cause a problem.
An invalid IBAN isn't a request error: the response is 200 with "valid": false, same as when it's valid.
All you need
- Your API key. Create it in your dashboard with "+ Create key". It's shown only once, so copy and save it.
- In your automation platform, an "HTTP Request" step (n8n, Make, Zapier, Pipedream… all have one).
How to use it in n8n (step by step)
In the HTTP Request node:
- Method:
POST - URL:
https://api.cofferdock.com/validate-iban - Send Headers: on → add two:
x-api-key= your key, andContent-Type=application/json - Send Body: on → Body Content Type: JSON →
{ "iban": "GB82 WEST 1234 5698 7654 32" }
In Make (HTTP → Make a request module): same method and URL, Body type: Raw, Content type: JSON, with the same body.
Options (inside the JSON)
| Option | Default | What it does |
|---|---|---|
iban | - | Required. The IBAN to validate, with or without spaces. |
API overview
- Endpoint:
POST https://api.cofferdock.com/validate-iban - Auth: header
x-api-key: YOUR_KEY. - Input:
application/jsonONLY. - Algorithm: ISO 7064 MOD 97-10, computed in pure JS with BigInt (no external dependency or third-party service).
- Limits: 30 requests/min per IP. 1 call = 1 credit, whether the IBAN is valid or not.
Options
| Option | Default | Description |
|---|---|---|
iban | - | Required. Non-empty string, up to 80 characters before stripping spaces (400 otherwise). |
Examples
curl:
curl -X POST "https://api.cofferdock.com/validate-iban" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"iban":"GB82 WEST 1234 5698 7654 32"}'
JavaScript (Node 18+):
const r = await fetch('https://api.cofferdock.com/validate-iban', {
method: 'POST',
headers: { 'x-api-key': 'YOUR_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({ iban: 'GB82 WEST 1234 5698 7654 32' }),
});
const { valid, country, formatted } = await r.json();
Python:
import requests
r = requests.post(
'https://api.cofferdock.com/validate-iban',
headers={'x-api-key': 'YOUR_KEY', 'Content-Type': 'application/json'},
json={'iban': 'GB82 WEST 1234 5698 7654 32'},
)
print(r.json())
Response
{ "success": true, "valid": true, "country": "GB", "formatted": "GB82 WEST 1234 5698 7654 32",
"meta": { "used": 12, "remaining": 488 } }
What you get back
valid (true/false), country (the first 2 characters, if they're letters) and formatted (the IBAN regrouped every 4 characters, even if it's not valid: it's just formatting, not a claim of validity).