AÇIKLA

HTTP API

Bu sitedeki her araç, doğrudan çağrılabilir. Anahtar yok, hesap yok, istek sınırı yok: her istek dağıtımla birlikte gelen veriden yanıtlanır ve hiçbir şey saklanmaz.

/api/v1 OpenAPI

Hatalı IBAN bir HTTP hatası değildir

GET /validate, valid:false ve hangi kontrolün düştüğünü söyleyen bir error_code ile 200 döner. Yalnızca eksik parametre 400'dür — bin hesabı kontrol eden bir çağrıcı, dokuz yüz başarısızlığı aktarım hatası gibi ele almak zorunda kalmamalı.

Null bilinmiyor demektir, yanlış demek değil

Dizinde olmayan bir banka bank_name'i null bırakır. Yayınlanmış kontrol hanesi olmayan bir ülke tahmin etmek yerine national_check_valid'i null bildirir. Burada hiçbir şey elinde olmayan bir değeri uydurmaz.

Hiçbir şey saklanmıyor

Hesap numaraları sorgudan okunur, yanıtlanır ve atılır. Kaydı, veritabanı ve üçüncü tarafı yok.

OPENAPI

Makine okur tanım — bu sayfayla aynı rota tablosundan üretiliyor. Var olmayan bir ucu tarif etmesi mümkün değil.

curl /api/openapi.json

VERİFY

GET /api/v1/validate

Validate one IBAN

Checks length, structure and mod-97, then the country's own check digits where one is published, and enriches the result from the bundled bank directory. A malformed IBAN is HTTP 200 with valid:false — only a missing iban parameter is a 400.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
curl /api/v1/validate?iban=DE89370400440532013000
POST /api/v1/validate

Validate one IBAN (body)

The same check, for callers that would rather not put an account number in a URL.

GÖVDE

iban string · zorunlu
The IBAN to validate.

ÖRNEK GÖVDE

{
  "iban": "DE89370400440532013000"
}
curl -X POST /api/v1/validate \
  -H 'content-type: application/json' \
  -d '{"iban":"DE89370400440532013000"}'
GET /api/v1/validate/bulk

Validate many IBANs

Repeat the iban parameter once per account. Returns the same result object for each, plus valid and invalid counts.

PARAMETRELER

iban zorunlu · query
Repeatable. One IBAN per occurrence.
curl /api/v1/validate/bulk?iban=DE89370400440532013000&iban=GB29NWBK60161331926819
POST /api/v1/validate/bulk

Validate many IBANs (body)

The same, with the list in a JSON body. Preferred for more than a handful.

GÖVDE

ibans string[] · zorunlu
The IBANs to validate.

ÖRNEK GÖVDE

{
  "ibans": [
    "DE89370400440532013000",
    "GB29NWBK60161331926819",
    "NOPE"
  ]
}
curl -X POST /api/v1/validate/bulk \
  -H 'content-type: application/json' \
  -d '{"ibans":["DE89370400440532013000","GB29NWBK60161331926819","NOPE"]}'
POST /api/v1/extract

Find IBANs in free text

Scans prose — an email, an invoice, a chat log — and validates every candidate it finds. The text is processed in the request and discarded.

GÖVDE

text string · zorunlu
The text to scan.

ÖRNEK GÖVDE

{
  "text": "Please pay DE89 3704 0044 0532 0130 00 by Friday. Old account was GB29 NWBK 6016 1331 9268 19."
}
curl -X POST /api/v1/extract \
  -H 'content-type: application/json' \
  -d '{"text":"Please pay DE89 3704 0044 0532 0130 00 by Friday. Old account was GB29 NWBK 6016 1331 9268 19."}'
GET /api/v1/repair

Suggest a correction for a mistyped IBAN

Almost every real failure is one of four things — a wrong character, a missing one, an extra one, or two neighbours swapped. Returns only edits that produce a valid IBAN. unambiguous is true when exactly one does, which is the only case safe to apply without asking.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
limit isteğe bağlı · query
Maximum suggestions, 1-20. Defaults to 5.
curl /api/v1/repair?iban=DE89370400440532013001

BUİLD

GET /api/v1/generate

Generate valid test IBANs

Structurally valid IBANs that satisfy mod-97 and, where one exists, the national check digit. They belong to no real account. Pass every_country=1 for one per country instead.

PARAMETRELER

country zorunlu · query
ISO country code. Not required with every_country.
count isteğe bağlı · query
1-50. Defaults to 1.
letters isteğe bağlı · query
Allow letters where the structure permits them. Off by default.
every_country isteğe bağlı · query
One IBAN for every country that allows generation.
curl /api/v1/generate?country=DE&count=3
GET /api/v1/convert

Build an IBAN from a domestic account

Deterministic construction for AE, BE, DE, FR, GB, NL, TR. Field names match what is printed on the documents a person reads from. Pass bban instead to assemble any country's IBAN from a raw BBAN.

PARAMETRELER

country zorunlu · query
ISO country code.
bban isteğe bağlı · query
A raw BBAN. Wins over the fields below.
blz isteğe bağlı · query
DE: the Bankleitzahl.
account_number isteğe bağlı · query
DE, TR, FR, GB, NL, AE.
bank_code isteğe bağlı · query
TR, FR, GB, NL, AE.
branch_code isteğe bağlı · query
FR.
rib_key isteğe bağlı · query
FR: the two-digit RIB key.
sort_code isteğe bağlı · query
GB.
domestic_number isteğe bağlı · query
BE: 999-9999999-99.
reserved_digit isteğe bağlı · query
TR. Defaults to 0.
curl /api/v1/convert?country=DE&blz=37040044&account_number=0532013000
GET /api/v1/qr

Build a payment QR

With a beneficiary name, an EPC069-12 payment payload a banking app can pre-fill. Without one, the plain IBAN — still scannable, and honest about carrying no payment. Returns the payload, its byte count and an SVG. The IBAN is validated first: a code built around a broken account number scans cleanly and fails at the bank.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
name isteğe bağlı · query
Beneficiary. Required for an EPC payload.
amount isteğe bağlı · query
Euro. Omit for an open amount.
bic isteğe bağlı · query
Defaults to the one derived from the IBAN.
remittance isteğe bağlı · query
Free text, up to 140 characters.
reference isteğe bağlı · query
ISO 11649. Excludes remittance.
purpose isteğe bağlı · query
ISO 20022 purpose code.
note isteğe bağlı · query
Up to 70 characters, for the beneficiary.
curl /api/v1/qr?iban=DE89370400440532013000&name=Example%20GmbH&amount=49.90
POST /api/v1/qr/decode

Read an EPC payload

Turns the twelve positional lines back into fields.

GÖVDE

payload string · zorunlu
The EPC payload.

ÖRNEK GÖVDE

{
  "payload": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nExample GmbH\nDE89370400440532013000\nEUR49.9\n\n\nInvoice 2026-014\n"
}
curl -X POST /api/v1/qr/decode \
  -H 'content-type: application/json' \
  -d '{"payload":"BCD\n002\n1\nSCT\nCOBADEFFXXX\nExample GmbH\nDE89370400440532013000\nEUR49.9\n\n\nInvoice 2026-014\n"}'

LOOK UP

GET /api/v1/swift/:bic

Look up a BIC

The directory record behind a BIC. Unlike IBAN validation, a syntactically valid BIC that is not listed is a 404 rather than a 200 with null fields.

PARAMETRELER

bic zorunlu · path
8 or 11 characters.
curl /api/v1/swift/COBADEFF
GET /api/v1/bic/parse

Split a BIC structurally

Bank, country, location and branch, from the code alone. No directory is consulted, so this answers for codes that are not listed.

PARAMETRELER

bic zorunlu · query
8 or 11 characters.
curl /api/v1/bic/parse?bic=COBADEFFXXX
GET /api/v1/bic/of

Derive the BIC for an IBAN

The BIC the bundled directory holds for that bank code. Null when the bank is not listed — never a guess, because a wrong BIC routes money to the wrong institution.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
curl /api/v1/bic/of?iban=DE89370400440532013000
GET /api/v1/banks

Search the bank directory

By name, BIC or city. Pass country alone to list a country's institutions alphabetically — browsing a country is a different question from searching with a blank term.

PARAMETRELER

q isteğe bağlı · query
Name, BIC or city.
country isteğe bağlı · query
ISO country code.
limit isteğe bağlı · query
1-200. Defaults to 25.
curl /api/v1/banks?q=commerzbank
GET /api/v1/banks/:slug

One institution

The directory entry and its full BIC record.

PARAMETRELER

slug zorunlu · path
Directory slug.
curl /api/v1/banks/commerzbank-ag
GET /api/v1/bics

Search the SWIFT/BIC directory

The same search over BIC records rather than institutions.

PARAMETRELER

q isteğe bağlı · query
Code, institution or city.
country isteğe bağlı · query
ISO country code.
limit isteğe bağlı · query
1-200. Defaults to 25.
curl /api/v1/bics?country=TR&limit=5
GET /api/v1/bank-info/:bic

Bank name for a BIC, tersely

The lookup the site's own interface uses. Never fails: an unknown BIC is found:false with HTTP 200.

PARAMETRELER

bic zorunlu · path
8 or 11 characters.
curl /api/v1/bank-info/COBADEFF

EXPLAİN

GET /api/v1/countries

Every IBAN country

Length, currency, SEPA membership and a published example, per country.

curl /api/v1/countries
GET /api/v1/countries/:code

One country's format

The registered length, the BBAN field layout, and the format mask — k check digit, n digit, A letter, c alphanumeric.

PARAMETRELER

code zorunlu · path
ISO country code.
curl /api/v1/countries/DE
GET /api/v1/domestic

The account in its domestic form

German BLZ and Kontonummer, a British sort code and account number, and so on. Null when the country publishes no domestic presentation — that is a property of the country, not a missing answer.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
curl /api/v1/domestic?iban=DE89370400440532013000
GET /api/v1/mask

Mask an IBAN for display

Keeps the country, the check digits and a configurable tail. For logs and screenshots.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
tail isteğe bağlı · query
Visible trailing characters, 0-8. Defaults to 4.
curl /api/v1/mask?iban=DE89370400440532013000&tail=4
GET /api/v1/describe

Describe an account in a sentence

One line for a confirmation screen. Degrades as detail runs out rather than inventing any.

PARAMETRELER

iban zorunlu · query
The IBAN to act on. Spaces and punctuation are ignored.
curl /api/v1/describe?iban=DE89370400440532013000
GET /api/v1/coverage

What the datasets contain

Counts per dataset and per country. A caller deciding whether to trust a null needs to know how much of the directory exists.

curl /api/v1/coverage