IBAN API
Geliştiriciler için ücretsiz, limitli bir IBAN doğrulama ve banka kodu sorgulama API'si. Tüm uç noktalar JSON döner ve CORS'a açıktır; tarayıcıdan ya da sunucudan doğrudan çağırabilirsiniz. İstekler oran sınırına (rate limit) tabidir.
Canlı deneyin (Playground)
Bir uç nokta seçin, örneği düzenleyin ve isteği tarayıcınızdan gerçek API'ye gönderin:
POST /api/validate
Tek bir IBAN'ı doğrular ve zengin bir sonuç nesnesi döner.
curl -X POST https://ibanaraci.com/api/validate \
-H "Content-Type: application/json" \
-d '{ "iban": "TR140001005001234567890123" }'{
"valid": true,
"normalized": "TR140001005001234567890123",
"formatted": "TR14 0001 0050 0123 4567 8901 23",
"masked": "TR14 0001 •••• •••• •••• •••• 23",
"countryCode": "TR",
"countryName": "Türkiye",
"expectedLength": 26,
"actualLength": 26,
"checkDigits": "14",
"checksumValid": true,
"bankCode": "00010",
"bankName": "T.C. Ziraat Bankası A.Ş.",
"bankShortName": "Ziraat Bankası",
"bankType": "Mevduat Bankası",
"bic": "TCZBTR2A",
"reserveDigit": "0",
"accountNumber": "5001234567890123",
"errors": [],
"warnings": [
{ "code": "ACCOUNT_NOT_VERIFIED",
"message": "Bu sonuç biçimsel bir kontroldür. Hesabın aktif olduğunu veya hesap sahibini doğrulamaz." }
],
"message": "IBAN biçimsel olarak geçerlidir. Hesap varlığı, sahipliği veya aktifliği doğrulanmamıştır."
}Yanıt alanları
| Alan | Tip | Açıklama |
|---|---|---|
valid | boolean | IBAN biçimsel olarak geçerli mi? |
normalized | string | Boşluksuz, büyük harfli (elektronik) biçim. |
formatted | string | Dörtlü gruplu (yazılı) biçim. |
masked | string | Güvenli paylaşım için maskeli gösterim. |
countryCode | string | null | ISO ülke kodu (ör. TR). |
expectedLength / actualLength | number | Beklenen ve girilen uzunluk. |
checksumValid | boolean | null | MOD 97 kontrol hanesi tuttu mu? |
bankCode / bankName / bic | string | null | TR IBAN'larında banka bilgisi. |
errors[] / warnings[] | array | Hata ve uyarı kodları + mesajları. |
POST /api/bulk-validate
Bir dizi IBAN'ı toplu doğrular (en fazla 1000 adet). Muhasebe ve toplu ödeme akışları için idealdir.
curl -X POST https://ibanaraci.com/api/bulk-validate \
-H "Content-Type: application/json" \
-d '{ "ibans": ["TR140001005001234567890123", "DE89370400440532013000", "bozuk"] }'{
"total": 3,
"valid": 2,
"invalid": 1,
"results": [
{ "input": "TR14...", "valid": true, "normalized": "TR14...", "countryCode": "TR", "bankName": "T.C. Ziraat Bankası A.Ş." },
{ "input": "DE89...", "valid": true, "normalized": "DE89...", "countryCode": "DE", "bankName": null },
{ "input": "bozuk", "valid": false, "normalized": "BOZUK", "countryCode": null, "bankName": null }
]
}GET /api/bank-code/{country}/{code}
5 haneli Türkiye banka kodunu banka bilgisine çevirir.
curl https://ibanaraci.com/api/bank-code/TR/00062{
"found": true,
"code": "00062",
"name": "Türkiye Garanti Bankası A.Ş.",
"shortName": "Garanti BBVA",
"type": "Mevduat Bankası",
"status": "active",
"lastReviewed": "2026-07-05"
}Kod örnekleri
const res = await fetch("https://ibanaraci.com/api/validate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ iban: "TR140001005001234567890123" }),
});
const data = await res.json();
console.log(data.valid, data.bankName); // true "T.C. Ziraat Bankası A.Ş."import requests
r = requests.post(
"https://ibanaraci.com/api/validate",
json={"iban": "TR140001005001234567890123"},
timeout=10,
)
data = r.json()
print(data["valid"], data["bankName"]) # True T.C. Ziraat Bankası A.Ş.<?php
$ch = curl_init("https://ibanaraci.com/api/validate");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["iban" => "TR140001005001234567890123"]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $data["valid"] ? "geçerli" : "geçersiz";Hata kodları
Geçersiz IBAN'larda errors dizisi, ihlal edilen kuralı belirten kodlar içerir:
| code | Anlamı |
|---|---|
EMPTY | IBAN boş gönderildi. |
INVALID_CHARACTERS | İzin verilmeyen karakter (Türkçe harf, sembol, boşluk). |
MISSING_COUNTRY_CODE | Başta iki harfli ülke kodu yok. |
UNSUPPORTED_COUNTRY | Ülke kodu desteklenmiyor. |
INVALID_LENGTH | Uzunluk, ülke standardına uymuyor. |
INVALID_CHECK_DIGITS | Kontrol hanesi biçimi hatalı. |
CHECKSUM_FAILED | MOD 97 doğrulaması başarısız (yazım hatası). |
UNKNOWN_TR_BANK_CODE | TR banka kodu listede bulunamadı. |
HTTP durum kodları
| Kod | Durum |
|---|---|
200 | Başarılı (IBAN geçersiz olsa bile istek başarılıdır; sonuç gövdededir). |
400 | Hatalı istek (eksik alan ya da geçersiz JSON). |
404 | Banka kodu bulunamadı (yalnızca /bank-code). |
413 | Toplu istekte 1000 sınırının aşılması. |
429 | Oran sınırı aşıldı; Retry-After başlığına bakın. |
Oran sınırları
/api/validate: dakikada 60 istek/api/bulk-validate: dakikada 20 istek/api/bank-code: dakikada 120 istek
Sınır aşıldığında 429 yanıtı ve Retry-After başlığı döner. Daha yüksek limit veya kurumsal kullanım için iletişime geçebilirsiniz. Tarayıcı içi, bağımsız JavaScript örnekleri için JavaScript IBAN kodu sayfasına da bakabilirsiniz.