Skip to main content
Başarılı bir ödemenin tamamını veya bir kısmını iade edebilirsiniz. İade banka tarafında gerçekleşir; tutar müşterinin kartına geri yansır. Mutabakat öncesi yapılan iadeler “void/cancel” mantığıyla, mutabakat sonrası iadeler ise “refund” satırıyla işlenir — Payven bu kararı banka durumuna göre otomatik verir.

Endpoint

POST /api/v1/payments/{transaction_id}/refund

İstek

curl -X POST https://vpos.payven.com.tr/api/v1/payments/8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6/refund \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Idempotency-Key: order-1001-refund-1" \
  -H "Content-Type: application/json" \
  -d '{
    "amount":      5000,
    "currency":    "TRY",
    "reason":      "Musteri iade talebi",
    "reason_code": "customer_request"
  }'
AlanTipZorunlulukAçıklama
amountint (kuruş)Opsiyonelİade tutarı. Boş bırakılırsa kalan tüm tutar iade edilir.
currencystringOpsiyonelPara birimi. Belirtilmezse orijinal işlemin para birimi kullanılır.
reasonstringOpsiyonelSerbest metin iade notu (max 500 karakter). Raporlamada görünür.
reason_codeenumOpsiyonelYapılandırılmış iade sebebi: customer_request, out_of_stock, duplicate_charge, product_defect, fraud, wrong_amount, other
extra_propertiesobjectOpsiyonelKonnektör-spesifik özel alanlar
Idempotency-Key kullanın. Operatör arayüzünde butonun iki kez basılması veya client tarafı retry sırasında iki kez iade gerçekleşmesini engeller. Önerilen pattern: refund-{transaction_id}-{slot} (slot = 1, 2, 3 … her kısmi iade için artar).

Başarılı response

{
  "transaction_id": "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
  "status":         "completed",
  "extra_properties": {
    "processed_at":            "2026-05-03T15:00:01.234+00:00",
    "host_reference":          "REFUND-REF-789",
    "provider_transaction_id": "REFUND-9f3d2b8e",
    "refund_amount":           "5000",
    "remaining_refundable":    "10000"
  }
}
status sonucuAnlam
completedKısmi iade — ana işlem completed kalır, ayrı bir refund alt-Transaction’ı yazılır. Kalan tutar yine iade edilebilir.
refundedTüm tutar iade edildi (cumulative)
refund_processingİade konnektörde, asenkron — webhook ile takip edin
Wire seviyesinde partially_refunded adında bir status yoktur. Kısmi iade, ana Transaction’ın status’unu değiştirmez (completed kalır); her iade ayrı alt-Transaction kaydı olarak yazılır. Kalan iade edilebilir tutarı extra_properties.remaining_refundable veya GET /payments/{id} yanıtındaki refunded_amount alanından okuyun.

Çoklu kısmi iade

Bir işleme birden fazla kısmi iade yapabilirsiniz. Toplam iade tutarı orijinal işlem tutarını aşamaz.
İade noTutarToplam iadeAna işlem statusAlt iade kaydı
150005000completedyeni refunded
2500010000completedyeni refunded
3500015000refunded (toplam = orijinal)yeni refunded
İşlem detayını GET /api/v1/payments/{transaction_id} ile sorgulayarak kalan iade edilebilir tutarı extra_properties.remaining_refundable alanında görebilirsiniz.

Süre kısıtları

Durumİade davranışı
Mutabakat öncesi (gün içi)Banka iptal (void) ile işlenir — komisyon yansımaz
Mutabakat sonrasıBanka iade (refund) satırı oluşur — komisyon iade politikası bankaya bağlı
180 gün sonrasıÇoğu banka iade kabul etmez (bank_refund_period_expired)
Mutabakat öncesi iadelerde banka komisyonu çoğu durumda yansımaz; mutabakat sonrası iadelerde komisyon iadesi banka anlaşmanıza tabidir. Anlaşma detayı için müşteri başarısı ekibine ulaşın.

Hata response’ları

HTTPcodeAnlam
404payment_not_foundİşlem bulunamadı
422payment_not_refundableİşlem iade edilemez durumda (örn. zaten iade edilmiş, başarısız, iptal edilmiş)
422payment_already_refundedTüm tutar zaten iade edilmiş
422refund_exceeds_originalİade tutarı kalan tutardan büyük
422bank_refund_period_expiredBanka iade süresi dolmuş
422bank_declinedBanka iadeyi reddetti — yanıttaki provider_error_code’a bakın
Hata yanıtı RFC 9457 problem+json formatındadır. Detay: Hata Yönetimi.

Webhook olayları

OlayAçıklama
refund.completedİade başarıyla tamamlandı (tam veya kısmi). data.status yeni durumu (partially_refunded / refunded) yansıtır.
Detay: Webhook Olayları.

Test

Sandbox’ta test kartlarıyla yapılan ödemeler iade edilebilir. Banka iade reddi senaryolarını tetiklemek için özel test kartlarını kullanın: Test Kartları.