IBAN'a para transferi¶
Bu sayfayı okumadan transfer kodu yazmayın
- Transfer isteği asla otomatik tekrarlanmaz. Zaman aşımı aldıysanız işlem gerçekleşmiş olabilir; yeniden göndermeden önce hesap hareketlerini kontrol edin.
- Resmî dokümandaki parametre listesi eksiktir. Aşağıdaki zorunlu alanlar sandbox'ın doğrulama hatalarından tespit edilmiştir.
- Transferin para gönderen adımı bu kütüphanenin testlerinde gerçek sandbox'a karşı çalıştırılmamıştır. İlk kullanımda sandbox'ta deneyin.
Sandbox'ta şu an çalışmıyor (2026-10-07)
outgoing_money_transfer ve money_transfer_payment_type sandbox'ta zorunlu alanlar
doldurulduğunda HTTP 500 Object reference not set to an instance of an object. dönüyor
(para çıkmıyor). LanguageId / DeviceId başlıkları ve transferType eklemek sonucu
değiştirmedi; sorun büyük olasılıkla bankanın sandbox tarafında ve API Market'e
bildirilmesi gerekiyor. Durum: Test durumu.
1. Alıcıyı doğrulayın¶
Göndermeden önce IBAN'ın kime ait olduğunu sorgulayın. Banka maskeli adı ve bankayı döndürür:
bilgi = kt.transfers.customer_iban_info_for_money_transfer(iban="TR...")
print(bilgi["customerName"], bilgi["bankName"]) # "SU***", "Kuveyt Türk Katılım Bankası A.Ş."
Bu adım para hareketi yapmaz; kullanıcıya "şu kişiye gönderiyorsunuz" diye göstermek için uygundur.
2. Transferi gönderin¶
from decimal import Decimal
yanit = kt.transfers.outgoing_money_transfer(
sender_account_suffix=1, # gönderen hesabın ek numarası
receiver_iban="TR...",
money_transfer_amount=Decimal("10.50"),
corporate_web_user_name="kullanici", # işlemi yapan kurumsal kullanıcı
money_transfer_description="Fatura 2026-041",
)
print(yanit["moneyTransferTransactionId"], yanit.execution_reference_id)
| Parametre | Zorunlu | Açıklama |
|---|---|---|
sender_account_suffix |
Evet | Tutarın çekileceği hesabın ek numarası |
receiver_iban |
Evet | Alıcının IBAN'ı. Dokümanda yok; API zorunlu tutuyor |
money_transfer_amount |
Evet | Tutar. Kuruş hatası olmaması için Decimal kullanın |
corporate_web_user_name |
Evet | İşlemi yapan kurumsal internet şubesi kullanıcı adı. Dokümanda yok; API zorunlu tutuyor |
money_transfer_description |
Hayır | Açıklama |
transfer_type |
Hayır | Tür kodu; değerleri dokümanda açıklanmıyor |
corporate_web_user_name neden gerekli: bu akışta kimse giriş yapmaz, uygulama kurum adına
işlem yapar; banka işlemi kurumsal internet şubesindeki hangi kullanıcının yaptığını bilmek
ister.
API ek bir alan isterse hangisinin eksik olduğunu hata mesajında söyler; onu extra_body ile
gönderebilirsiniz:
3. Hataları doğru ele alın¶
from kuveytturk_api import APIError, BusinessError, TransportError
try:
yanit = kt.transfers.outgoing_money_transfer(...)
except TransportError:
# Yanıt alınamadı. İşlem bankaya ulaşmış ve gerçekleşmiş OLABİLİR.
# Tekrar göndermeyin; hesap hareketlerinden durumu doğrulayın.
raise
except BusinessError as hata:
# Banka isteği aldı ve reddetti (yetersiz bakiye, limit vb.). Para çıkmadı.
print(hata.error_code, hata.error_message)
except APIError as hata:
# 400: eksik/hatalı alan. 403: kapsam yetkisi yok. Para çıkmadı.
print(hata.status_code, hata.error_message)
4. Durumu sorgulayın¶
durum = kt.transfers.money_transfer_state(transfer_type="FAST", out_going_id="123456")
print(durum["state"], durum["stateDescription"])
transfer_type olası değerleri: VIRMAN, HAVALE, FAST, POS. Virman için virman_key,
diğerleri için out_going_id verilir.
Hazır örnek¶
examples/money_transfer.py bu akışın tamamını yapar ve varsayılan olarak hiçbir şey
göndermez; yalnızca gönderilecek isteği gösterir:
python examples/money_transfer.py send --from-suffix 1 --iban TR... --amount 10.50 \
--corporate-user KULLANICI --description "Deneme"
Gerçekten göndermek için --execute eklenir ve onay sorulur; canlı ortamda ayrıca
--allow-production gerekir.
Diğer transfer uç noktaları¶
| Metot | Durum |
|---|---|
internal_money_transfer (virman) |
Sandbox'ta transfers kapsamlı token ile 403 "Invalid Scope" döndü; denenemedi |
outgoing_money_transfer_v2 (müşteri girişiyle) |
Dokümandaki parametreler başka bir sayfadan kopyalanmış; gerçek alanlar doğrulanamadı |
money_transfer_payment_type |
Zorunlu alanlar: sender_account_suffix, receiver_iban, amount |
Eski /v1/transfers/ToIBAN uç noktası dokümanda hâlâ görünür ama sunucudan kaldırılmıştır
(404); kütüphanede yer almaz.