İptal & İade Rehberi
Bir tahsilatı geri almanın iki yolu vardır: iptal (void) ve iade (refund). Hangisini kullanacağınız işlemin durumuna bağlıdır.
İptal mi İade mi?
| Durum | Doğru uç | Neden |
|---|---|---|
| Tahsilat kesinleşmemiş (provizyon veya gün sonu öncesi) | İptal | Daha ucuzdur, karta anında yansır. |
| Tahsilat kesinleşmiş | İade | İptal artık mümkün değil (checkout.already.captured). |
| Tutarın yalnız bir kısmı geri verilecek | İade + partialAmount | Kısmi iade; birden fazla kez yapılabilir. |
| Provizyon açık, tahsil edilmeyecek | İptal | Bloke çözülür, tahsilat hiç gerçekleşmez. |
işlem kesinleşti mi?
├─ hayır → transaction/cancel (void — ücretsiz, anında)
└─ evet → transaction/refund
├─ partialAmount yok → tam iade
└─ partialAmount var → kısmi iade (tekrarlanabilir)Kısmi İade Kuralları
- İade tavanı tahsil edilen toplamdır (komisyon dahil). Yapılan iadelerin toplamı tavanı aşamaz.
- Aynı işleme birden fazla kısmi iade yapılabilir; toplam tavana ulaşınca işlem tam iade edilmiş sayılır.
- Her kısmi iade ana işleme bağlı ayrı kayıt üretir;
transaction/detailiade edilen toplamı gösterir. - İade tutar bazlıdır — sepet kalemi göndermiş olsanız da "şu kalemi iade et" diyemezsiniz.
100 TL tahsilat ├─ partialAmount: 30 → kalan iade edilebilir: 70 ├─ partialAmount: 20 → kalan iade edilebilir: 50 └─ partialAmount: 60 → RET (tavanı aşıyor, kalan 50)
Ödeme Linki İptali
Henüz ödenmemiş link payment-link/cancel ile iptal edilir; link ödenemez hâle gelir.
Link ödendiyse artık işlem iadesi gerekir — kısmi ödemeye açık linkte tahsil edilmiş tutar iptalle geri dönmez.
Link veya karekod ile alınan ödemenin iptali/iadesi de normal işlem uçlarından yürür: link/detail yanıtındaki transactionRef değerini cancel ya da refund ucuna verin.
Sağlayıcı Reddi
İptal/iade isteğini bankanın veya sağlayıcının reddetmesi mümkündür. Bu durumda pos.reversal.rejected.by.provider döner ve sağlayıcının ret gerekçesi hata mesajında yer alır — jenerik bir hataya düşmez.
Ret durumunda defterde hiçbir şey değişmez; gerekçeyi okuyup (ör. gün sonu geçmiş, tutar uyuşmuyor) uygun uca yönelin.
Sonuçları İzleme
İptal ve iade sonrası işlemin son hâlini transaction/detail gösterir: refundedAmount iade edilen toplamı, refundable / voidable işlemin hâlâ iadeye/iptale açık olup olmadığını söyler.
Muhasebe mutabakatı için dönem özeti ucundaki totalRefundedAmount alanını kullanın.
İptal payment:void, iade payment:refund scope'u gerektirir — anahtar oluştururken ikisini ayrı ayrı seçin.