Wise API: Check IBAN
Checks an IBAN's country length and check digits locally, then looks up the bank details Wise shows for it. A valid format does not confirm the account exists; branch names may be unavailable.
Unofficial. Not affiliated with or endorsed by Wise.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- IBAN, required
iban IBAN as printed on an invoice or bank letter, with or without spaces; for example GB33 BUKB 2020 1555 5555 55.
GB33 BUKB 2020 1555 5555 55
Input as JSON
{ "iban": "GB33 BUKB 2020 1555 5555 55"}Output
{ "valid": true, "reason": null, "country": "United Kingdom", "page_url": "https://wise.com/gb/iban/checker" , "bank_code": "BUKB", "bank_name": "BARCLAYS BANK UK PLC", "branch_name": null, "bic_swift_code": "BUKBGB22XXX", "branch_address": "1 CHURCHILL PLACE, LONDON, UNITED KINGDOM", "formatted_iban": "GB33 BUKB 2020 1555 5555 55"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"wise.com/check_iban","input":{"iban":"GB33 BUKB 2020 1555 5555 55"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "wise.com/check_iban" , "input": { "iban": "GB33 BUKB 2020 1555 5555 55" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "wise.com/check_iban" , "input": { "iban": "GB33 BUKB 2020 1555 5555 55" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run wise.com/check_iban# with {"iban":"GB33 BUKB 2020 1555 5555 55"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "iban" ], "properties": { "iban": { "type": "string", "description": "IBAN as printed on an invoice or bank letter, with or without spaces; for example GB33 BUKB 2020 1555 5555 55." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "valid", "reason", "formatted_iban", "country", "bank_name", "bank_code", "branch_name", "branch_address", "bic_swift_code", "page_url" ], "properties": { "valid": { "type": "boolean", "description": "Whether the IBAN passes country length and check-digit checks." }, "reason": { "type": [ "string", "null" ], "description": "Plain-language explanation when invalid; otherwise null." }, "country": { "type": [ "string", "null" ], "description": "Country name for the IBAN prefix, if recognized." }, "page_url": { "type": "string", "description": "Wise checker page link." }, "bank_code": { "type": [ "string", "null" ], "description": "Bank identifier from the IBAN as shown by Wise, if available." }, "bank_name": { "type": [ "string", "null" ], "description": "Bank name Wise identifies, if available." }, "branch_name": { "type": [ "string", "null" ], "description": "Branch name if Wise provides one." }, "bic_swift_code": { "type": [ "string", "null" ], "description": "BIC/SWIFT code if Wise provides one." }, "branch_address": { "type": [ "string", "null" ], "description": "Bank or branch address shown by Wise, if available." }, "formatted_iban": { "type": "string", "description": "Uppercase IBAN grouped in blocks of four." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
wise.com/check_iban- Returns
- valid flag, reason, formatted IBAN, country, bank name, bank code, BIC/SWIFT, bank address, checker page URL
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method wise.com/check_iban with the inputs above.
Ask your agent
- Can you check whether the IBAN GB82 WEST 1234 5698 7654 32 is valid and tell me which bank it belongs to?
- I got an invoice from a German supplier with IBAN DE89370400440532013000. Does the format check out and what bank is it?
- Look up the BIC and bank name for this French IBAN: FR14 2004 1010 0505 0001 3M02 606.
- Verify this Irish IBAN from a bank letter, IE29AIBK93115212345678, and show me the bank address if available.
- Please confirm if NL91ABNA0417164300 is a properly formatted IBAN and give me the country and bank code.
See more
All Wise methodsFinds the SWIFT/BIC codes and branch locations Wise lists for a bank in a country, optionally narrowed by city, address, postcode, branch name or code; head office first.
wise.com/search_swift_codesCompares what recipients get from Wise and other providers for a transfer amount and currency pair, with fees, rates and delivery times.
wise.com/compare_transfer_costsGets Wise's current mid-market exchange rate and converted amount for two currencies, with optional daily rate history.
wise.com/get_exchange_rateChecks an EU VAT number in the European Commission's VIES service and returns whether it is valid, with the registered name and address when the country makes them available.
ec.europa.eu/validate_vat_numberLooks up a UK postcode on Postcodes.io, including its location, administrative areas and whether it is still in use. Retired postcodes return location and retirement year only.
postcodes.io/get_postcodeLooks up an organization in the IRS Tax Exempt Organization Search by name or EIN. It reports whether donations are deductible, whether the organization was automatically revoked, and its recent Form 990 filings.
irs.gov/check_charity_statusChecks a passport holder's visa requirement and permitted stay for a destination on Passport Index. This is guidance; travellers should confirm entry rules with the embassy before travel. Visits to the passport's issuing country are not listed.
passportindex.org/check_visa_requirementReturns current UK government (FCDO) travel warnings, entry requirements for British passport holders, safety, health and emergency information for a country. Summaries are shortened; follow the link for full details.
gov.uk/get_travel_advice