İşlem İadesi
POST
/partner/1.0/pos/transaction/refundGerekli scope:
payment:refundBir ödeme tahsilatını tam veya kısmi olarak iade eder. partialAmount verilirse kısmi iade yapılır; verilmezse tam iade uygulanır.
Tahsilat linki veya karekod ile alınan ödemelerde de çalışır; o akışlarda ters kayıt doğrudan ödeme motorundan geçer.
Örnek
curl -X POST https://<host>/partner/1.0/pos/transaction/refund \
-H "X-Api-Key: ..." \
-H "X-Timestamp: ..." \
-H "X-Signature: ..." \
-H "Content-Type: application/json" \
-d '{
"transactionRef": "eb334ec5-9f7a-4c21-9b3e-77a01c4f2d18",
"reason": "Kısmi iade",
"partialAmount": 25
}'İstek Body
| Alan | Tip | Açıklama |
|---|---|---|
transactionRefzorunlu | string | Ödeme yanıtındaki işlem referansı. |
reason | string | Opsiyonel iade gerekçesi; işlem kaydına yazılır. |
partialAmount | decimal | Kısmi iade tutarı. Verilirse kısmi iade yapılır; verilmezse (null) tam iade uygulanır. |
Yanıt
| Alan | Anlamı |
|---|---|
transactionRef | İşlem referansı. Sorgu, iptal ve iade hep bu değeri konuşur. |
orderNumber | Ödemede gönderdiğiniz kendi sipariş numaranız. |
status | İşlem durumu (COMPLETED, PRE_AUTHORIZED, FAILED, PENDING_SETTLEMENT, SETTLED …). |
phase / operation / channel | İşlemin defterdeki aşaması, tipi ve geldiği kanal. |
amount | Sipariş tutarı (komisyon hariç). |
chargedAmount | Müşteriden tahsil edilen nihai tutar — komisyon müşteriye yansıyorsa amounttan farklıdır. |
netAmount | İşletmenizin eline geçen net tutar. |
commissionAmount | Hesaplanan komisyon tutarı. |
refundedAmount | Bugüne kadar iade edilen toplam. |
currency / installment | Para birimi ve taksit sayısı. |
threeDs | İşlem 3D Secure'lü mü. |
refundable / voidable | İşlem şu an iadeye / iptale açık mı. |
cardMasked / cardHolderName / cardBankName | Maskeli kart numarası ve kart sahibi bilgileri. Tam PAN hiçbir uçtan dönmez. |
description | İşlem açıklaması. |
providerReference / providerAuthCode | Mutabakat için banka referans numarası (RRN/host-ref) ve banka onay kodu. Ham sağlayıcı gövdesi dışarı çıkmaz. |
createdDate / valorDate | Oluşturma ve valör tarihi. |
Kısmi İade
partialAmount verildiğinde tahsilatın yalnız o kısmı iade edilir; kalan tutar işletmede kalır. Aynı işleme birden fazla kısmi iade yapılabilir.
- İade tavanı tahsil edilen toplamdır (komisyon dahil tutar). Yapılan iadelerin toplamı bu tavanı aşamaz.
- Toplam iade tavana ulaştığında işlem tam iade edilmiş sayılır ve yeni iade kabul edilmez.
- Her kısmi iade ana işleme bağlı ayrı bir kayıt üretir; işlem detayında iade edilen toplam görünür.
- İade tutar bazlıdır: sepet kalemi göndermiş olsanız bile "ş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)
İptal mi iade mi
Tahsilat kesinleşmemişse (provizyon ya da gün sonu öncesi) İptal kullanın — daha ucuzdur ve karta anında yansır. İade, kesinleşmiş tahsilat içindir.
Hatalar
| Mesaj anahtarı | HTTP | Neden |
|---|---|---|
transaction.not.refundable | 406 | İşlem iadeye kapalı işaretli. |
pos.transaction.status.must.success | 406 | İşlem başarılı durumda değil. |
checkout.not.captured | 406 | Tahsil edilmemiş işlem iade edilemez; iptal kullanın. |
pos.reversal.rejected.by.provider | 406 | Sağlayıcı iadeyi reddetti; ret gerekçesi mesajda yer alır. |
paymenttransaction.not.found | 404 | İşlem bulunamadı ya da işletmenize ait değil. |
İsteği Dene
İsteği Dene
Önizleme modu — değerler kod örneklerini günceller, gerçek istek atılmaz.