İadeler
Tek bir çağrıyla, POST /v1/refunds ile iade yaparsınız. İptal (void) ile iade (refund) arasında seçim yapmazsınız: platform, kart ağının ve acquirer bankanın izin verdiği en ucuz yöntemi seçer ve hangisini kullandığını size bildirir.
{
"payment_intent": "pi_01J9ZQ4V8K2M3N5P7R9T1W3Y5A",
"amount": 2500,
"reason": "requested_by_customer",
"metadata": {"ticket": "SUP-4411"}
}
curl -X POST https://pay.example.com/v1/refunds \
-H "Authorization: Bearer sk_sandbox_YOUR_KEY" \
-H "Idempotency-Key: refund-order-1001-1" \
-H "Content-Type: application/json" \
-d '{"payment_intent": "pi_01J9ZQ4V8K2M3N5P7R9T1W3Y5A", "amount": 2500}'
payment_intentzorunludur.amount, satışın temel tutarının (müşterinin ödediği taksit farkı hariç, sizin tahsil ettiğiniz fiyat) en küçük para birimi cinsindendir; hâlâ iade edilebilir olan her şeyi iade etmek için bu alanı boş bırakın.reasonisteğe bağlıdır:duplicate,fraudulentveyarequested_by_customer.- Bir ödemenin iade edilebilir tutarı, ödemedeki
amount_refundablealanıdır: capture edilen tutar, eksi yapılmış iadeler, eksi hâlâ işlemde olan iadeler. Bundan fazlasını istemek400 amount_exceeds_refundablesonucunu verir. - Bir ödemeyi, geriye bir şey kalmayana kadar birkaç kez, parça parça iade edebilirsiniz.
{
"id": "re_01J9ZQ7B2C4D6F8H1K3M5P7R9T",
"object": "refund",
"amount": 2500,
"amount_returned_to_card": 2500,
"currency": "try",
"payment_intent": "pi_01J9ZQ4V8K2M3N5P7R9T1W3Y5A",
"status": "succeeded",
"method": "partial_void",
"scheduled_for": null,
"reason": "requested_by_customer",
"failure_reason": null,
"metadata": {"ticket": "SUP-4411"},
"created": 1790000600
}
Platform bunu nasıl yürütür
Türk acquirer'lar birbirinden farklıdır: çoğu yalnızca gün sonu kesim saatinden önce tutarın tamamının iptaline izin verir, birçoğu o günün batch'i kapanana kadar iadeyi reddeder ve bazıları aynı gün satışın bir kısmını iptal edebilir. Platform her acquirer'ın yeteneklerini bilir ve seçimi yapar. İadenin method alanı sonucu gösterir:
method |
Ne zaman | Sizin için anlamı |
|---|---|---|
void |
Capture edilen tutarın tamamı, daha önce iade yok, kesim saatinden önce aynı iş günü, para henüz bakiyenize aktarılmamış. | Satış iptal edilir. Müşteri genellikle hiç tahsilat görmez. Bakiyenizden hiçbir şey düşülmez ve bakiye kontrolü yapılmaz. Ödeme canceled olur. |
partial_void |
Satışın bir kısmı, kesim saatinden önce aynı iş günü, kısmi iptali destekleyen bir acquirer'da. | Satış tutarı düşürülür. Bakiyenizden tahsil edilmez. |
refund |
Diğer her durum: sonraki günler veya kısmi iptal desteği olmayan bir acquirer. | Bankada normal bir iade. Kullanılabilir bakiyenize karşı kontrol edilir ve tutar işlenirken bloke edilir. |
external |
API dışında yapılan ve platform tarafından kaydedilen bir iade. | Bilgilendirme amaçlıdır. |
Bir ödemede herhangi bir kısmi iade veya iptal varsa, sonradan tam bir void artık mümkün değildir; kalan tutar partial_void veya refund olarak iade edilir.
Ertelenmiş iadeler
Bazı bankalar, aynı günkü bir satışın iadesini gün sonu batch'leri kapanana kadar reddeder. Bu durumda platform isteğinizi hemen kabul eder, tutarı bakiyenizde bloke eder ve izin verildiğinde bankaya gönderir. İade bu durumda status: processing olur ve scheduled_for alanı, gönderileceği unix zamanını (bu zamanda veya sonrasında) içerir. İade gönderildiğinde ilerler (refund.updated, ardından refund.succeeded) ve scheduled_for değeri null olur. Sizin bir şey yapmanız gerekmez; yalnızca aynı iadeyi yeniden başlatmayın.
Fonlar ve onay
Bir refund kullanılabilir bakiye gerektirir: bakiye çok düşükse çağrı 402 insufficient_available_balance (balance_error) ile başarısız olur. Void ve partial void için fon gerekmez. Hesabınız iade onayı gerektiriyorsa iade pending_approval olarak başlar ve yöntem, onaylandığında yeniden belirlenir.
Komisyon
Başarılı bir iade fees taşır: pf_fee_refunded ve fee_tax_refunded (iade edilen komisyon ve vergisi; yalnızca hesabınızın iade komisyon politikası refund ise), installment_surcharge_refunded (iadeyle karta dönen taksit farkı), fee_retained_on_void (bir iptalde platformun tuttuğu komisyon) ve merchant_debit (bakiyenizden düşen tutar: tutar − iade edilen komisyon). Ödemenin fees.refunded alanı bunların toplamıdır, fees.net_after_refunds ise size kalan net tutardır. GET /v1/balance_transactions içinde iade edilen komisyon, negatif fee ile bir refund_fee_return hareketidir.
Durumlar ve olaylar
status şunlardan biridir: pending_approval, processing, succeeded, failed (failure_reason ile) veya canceled. refund.created, refund.updated, refund.succeeded ve refund.failed olaylarına abone olun (webhook kılavuzuna bakın). İadeleri GET /v1/refunds ile listeleyin ve payment_intent, status ve method ile filtreleyin.
Kontrol listesi
- Her iade için, kendi iade id'nizden türetilmiş bir
Idempotency-Keykullanın. - Mutabakatı yalnızca anlık yanıta göre değil,
refund.succeededverefund.failedolaylarına göre yapın. processingdöndüren bir iadeyi yeniden denemeyin;GET /v1/refunds/{id}ile okuyun.