Müşteri “bu harcamayı ben yapmadım” dediğinde banka bir itiraz (chargeback) dosyası açar. Poyra bu dosyayı deftere işler, kanıt süresini iş günü takvimiyle sayar ve süreci kayıt altında tutar — kararı Poyra vermez, banka verir.

İki eksen: kademe ve durum

İtirazın iki ayrı ekseni vardır. Kademe yalnız yukarı gider; her yükseltme yeni bir kanıt süresi başlatır:
Durum dosyanın o kademedeki seyridir: won, lost, accepted ve expired son durumlardır — üzerlerinde işlem yapılamaz. Süresi geçtikten sonra savunma göndermeye çalışmak 409 dispute.evidence_window_closed döner. Kademe yükseltme (escalate) dosyayı yeni kademede open durumuna döndürür ve yeni süre biçer.

Süre: iş günü, Türkiye günü sonu

Kanıt süresi iş günüyle sayılır — 9 günlük pencerenin içine bayram girdiğinde takvimle sayan bir sistem, işyerine olmayan bir gün vaat ederdi. Kademe başına varsayılan süreler: bilgi talebi 7, chargeback 9, ön tahkim 7, tahkim 5 iş günü. Bitiş anı son iş gününün Türkiye gün sonudur. Bankanın bildirdiği tarih her zaman önceliklidir; hesap yalnız tarih verilmediğinde devreye girer. Saatlik süre bekçisi iki iş yapar:
  1. Süresi üç gün içinde dolacak açık dosyalar için bir kez uyarı üretir — dispute.evidence_due_soon webhook’u kalan saatle birlikte gider.
  2. Süresi geçmiş, savunması gönderilmemiş dosyaları expired kapatır ve dispute.expired webhook’unu gönderir. Kaçırılan süre otomatik kayıptır.

Kanıt yönetimi

Kanıt dosyaları (kargo takibi, teslim tutanağı, müşteri yazışması…) doğrudan veritabanında saklanır — dosya sisteminde kaybolan bir kanıt, olmayan kanıttır.
  • POST /v1/disputes/{id}/evidence — PDF, JPEG, PNG, WebP veya düz metin; dosya başına 10 MB, dosya başına 20 belge sınırı.
  • Kanıt silinmez, iptal edilir: iptal edilen belge listede kalır ama bankaya gönderilecek pakete girmez.
  • Müşteri talimatı (mandate) varsa “yetkisiz işlem” itirazına karşı sunulacak ilk belge odur.
Savunma POST /v1/disputes/{id}/submit ile iletilir; bankanın kararı .../close ile won ya da lost olarak işlenir; vazgeçmek .../accept’tir. Neden kodları birleşik sözlükten gelir (poyra.dispute.fraud, product_not_received, duplicate…) ve bankanın ham kodu ayrıca saklanır. Her adım silinemez itiraz defterine düşer: süreyi kim kaçırdı, kanıtı kim ne zaman yükledi, kim vazgeçti — hepsi zaman çizelgesinde. Panelde İtirazlar listesi dosyaları “hangisi yanıyor” sırasıyla gösterir; kaybetme ve vazgeçme aksiyonları onay kutusu ister. Webhook olayları: dispute.opened, dispute.evidence_due_soon, dispute.evidence_submitted, dispute.won, dispute.lost, dispute.expired.