İçeriğe geç

İade ve İptal

Başarılı bir ödemenin tamamını ya da bir kısmını iade edebilirsiniz. İade ve iptal aynı uç nokta ile yapılır; yöntemi (iptal mi, iade mi) sistem seçer, siz seçmezsiniz.

POST /v1/payments/{paymentCode}/refunds
Authorization: Bearer ptk_live_…
Content-Type: application/json

İstek gövdesi:

{
"amount": 40000,
"partnerRefundCode": "REF-2026-8841-1"
}
AlanZorunluAçıklama
amountHayırİade edilecek tutar (kuruş). Verilmezse kalan bakiyenin tamamı iade edilir.
partnerRefundCodeEvetSizin tarafınızda üretilen benzersiz iade kodu (idempotency).

Yanıt (201 Created):

{
"refundId": "ref_5Tg8p",
"method": "void",
"status": "approved"
}
AlanAçıklama
refundIdİadenin kimliği; durum sorgusunda kullanılır.
methodSistemin seçtiği yöntem: void (iptal) veya credit (iade). Şeffaf olarak döner.
statusapproved (onaylandı) veya pending (sonuç henüz kesinleşmedi).

İade isteğinin iptal (void) mi yoksa iade (credit) mi olacağını Paytalya, satışın zamanlamasına göre belirler. Partner bu seçimi yapamaz; yalnızca sonucu method alanında şeffaf olarak görür. Kural şudur:

Satış zamanıİstenen tutarYöntemSonuç
Aynı günTam (kalan bakiyenin tamamı)voidİşlem henüz banka tarafına yansımadan iptal edilir.
Aynı günKısmi(yok)Henüz yapılamaz → refund_not_yet_available. Gün sonundan sonra credit ile dener.
Geçmiş günTam veya kısmicreditİade işlenir.

Pratik sonuç: aynı gün kısmi iade isteği yaparsanız refund_not_yet_available alırsınız; isteği gün sonundan sonra tekrarladığınızda credit olarak işlenir. Aynı gün tam iade ise anında void olur.

Onaylanan bir iade, ödemenin durumunu günceller:

Yöntem ve kapsamÖdeme yeni durumu
void (aynı gün tam iptal)voided
credit kısmi (kümülatif iade < satış)partially_refunded
credit tam ya da kümülatif iade = satışrefunded

Durum yalnızca iade onaylandığında (status: "approved") değişir; pending bir iade ödeme durumunu henüz değiştirmez.

status: "pending" dönen bir iade henüz kesinleşmemiştir; sonuç çözülünce (onay ya da ret) durumu güncellenir. Belirsiz bir iadeyi kendiliğinden başarısız saymayın; sistem kesin sonucu kendisi çözer. Nihai durumu GET /v1/payments/{paymentCode}/refunds/{refundId} ile öğrenin.

Aynı ödeme için pending bir iade varken yeni iade isteği refund_in_progress ile reddedilir (tek uçuş kuralı); önceki iade kesinleşene kadar bekleyin.

GET /v1/payments/{paymentCode}/refunds/{refundId}
Authorization: Bearer ptk_live_…

Yanıt (200 OK):

{
"refundId": "ref_5Tg8p",
"method": "void",
"status": "approved",
"amount": 40000,
"procReturnCode": "00",
"authCode": "123456",
"errMsg": null,
"bankReference": "240615091203",
"createdAt": "2026-06-15T09:12:00Z",
"updatedAt": "2026-06-15T09:12:03Z"
}
AlanAçıklama
refundIdİadenin kimliği.
methodSistemin seçtiği yöntem (void / credit).
statusİade durumu (pending / approved / declined).
amountİade tutarı (kuruş).
procReturnCodeBu iadeye ait banka sonuç kodu (varsa; yoksa null).
authCodeBu iadeye ait banka onay kodu (varsa; yoksa null).
errMsgBu iadeye ait banka hata mesajı (varsa; yoksa null).
bankReferenceBu iadeye ait banka referansı (varsa; yoksa null).
createdAt / updatedAtZaman damgaları (UTC).

Bu uç, iadenin nihai sonucunu öğrenmek için kullanılır; pending bir iadenin çözümünü buradan takip edersiniz. Ödemenin güncel iade dökümünü (toplam/kalan) GET /v1/payments ile de görebilirsiniz.

KodSebep
payment_not_refundableÖdeme iade için uygun durumda değil.
refund_amount_exceeds_remainingİstenen tutar kalan iade edilebilir bakiyeyi aşıyor.
refund_not_yet_availableAynı gün kısmi iade; gün sonu sonrasında yapılabilir.
refund_in_progressBu ödeme için pending bir iade zaten var.

Tam liste: Hata Kodları.