Skip to main content
Reject, 4-eyes akışında onay yerine uygulanan alternatif aksiyondur. pending durumdaki transferler reddedildiğinde kalıcı olarak rejected durumuna geçer; bankaya hiçbir istek gönderilmez ve hesaplarınızdan para çekilmez.

Endpoint

POST /api/v1/transfers/bulk/reject
Yetki: transfer-admin rolü gerektirir (onay yetkisiyle aynı).

Ne zaman kullanılır?

SenaryoAksiyon
Yanlış kaynak hesap seçildiReject + yeniden create
Hatalı tutar veya alıcıReject + yeniden create
4-eyes onay süreci başarısız (operatör itiraz etti)Reject
Toplu transfer içinde bir kalem hatalı, kalanı temizSadece hatalıyı reject + yeniden create
Reject ≠ İptal. Bir transfer bankaya gönderildikten sonra reject edilemez (pending durumunda değildir). Bankaya gitmiş bir transferin geri alınması için banka tarafı iade akışı (sonradan transfer.refunded olabilir) gerekir.

İstek

curl -X POST https://transfer.payven.com.tr/api/v1/transfers/bulk/reject \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "X-Tenant-Id: $TENANT_ID" \
  -H "Idempotency-Key: payroll-2026-05-01-reject" \
  -H "Content-Type: application/json" \
  -d '{
    "transfer_ids": [
      "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
      "9f3d2b8e-..."
    ],
    "reason": "Yanlış kaynak hesap seçildi — düzeltilmiş listeyle yeniden oluşturulacak"
  }'
AlanTipZorunlulukAçıklama
transfer_ids[]UUID arrayZorunluReddedilecek transfer kimlikleri (max 1000 / istek)
reasonstringOpsiyonelOperatör notu (audit kaydında saklanır, max 500 karakter)

Yanıt

HTTP/1.1 200 OK
Content-Type: application/json
{
  "rejected": [
    {
      "id":            "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
      "status":        "rejected",
      "rejected_at":   "2026-05-03T12:34:55.000+00:00",
      "rejected_by":   "operator-user-id"
    },
    {
      "id":            "9f3d2b8e-...",
      "status":        "rejected",
      "rejected_at":   "2026-05-03T12:34:55.000+00:00",
      "rejected_by":   "operator-user-id"
    }
  ],
  "skipped": [],
  "total_rejected": 2
}
AlanAçıklama
rejected[]Başarıyla reddedilen transferler
skipped[]Reddedilemeyenler (zaten approved, sent, completed, vb.) — her biri için reason döner
total_rejectedReddedilen transfer sayısı

Kısmi başarı

Bir veya daha fazla transfer reddedilemeyebilir (örn. zaten onaylanmış, gönderilmiş veya başka tenant’a ait). Bu durumda yine 200 OK döner; başarısızlar skipped[] array’inde gözükür:
{
  "rejected": [
    { "id": "8e3f5c12-...", "status": "rejected", "rejected_at": "..." }
  ],
  "skipped": [
    {
      "id":      "9f3d2b8e-...",
      "reason":  "already_sent",
      "message": "Bu transfer zaten bankaya gönderilmiş, reddedilemez."
    }
  ],
  "total_rejected": 1
}
İstek tamamen başarısızsa (örn. tüm transfer ID’ler geçersiz) 422 Unprocessable Entity döner.

Hata response’ları

HTTPcodeAnlam
400validation_failedtransfer_ids[] boş veya ID formatı geçersiz
403forbiddentransfer-admin rolü yok
404transfer_not_foundTüm verilen ID’ler bulunamadı
422invalid_state_transitionTransfer pending durumunda değil
409idempotency_key_in_useAynı Idempotency-Key farklı body için kullanılmış
Hata yanıtı RFC 9457 problem+json.

Webhook olayı

Reject şu an dedicated bir webhook olayı yayınlamaz — operatör eylemi olarak konsoldaki audit log’a düşer. İleride transfer.rejected olayı yol haritasındadır.