Stripe payouts implementation backlog
Payout implementasyon backlog (ekip içi)
Mühendislik notu
Bu sayfa entegratör yol haritasından çok ekip içi operasyon/backlog içeriği taşır. Entegrasyon için API Reference ve ilgili ürün rehberlerini kullanın.
Stripe Payouts Implementation Backlog
Allmine Kredi -> Nakit Çekimi (Global Payouts / Connect-Ready)
- Tarih: 10 Mart 2026
- Kaynak Doküman:
docs/stripe-global-payouts-connect-go-no-go-report.md - Format: Epic -> Task -> Acceptance Criteria (AC)
- Plan Ufku: 6-8 hafta (bağımlılıklara göre değişir)
1) Amaç ve Kapsam
Bu backlog, Allmine’de creator kredilerinin banka hesabına çekilmesi için gereken teknik işleri sprint’e alınabilir görevler halınde listeler.
Kapsam:
withdrawableledger ayrımı- Recipient onboarding
- Payout orchestration
- Webhook + idempotency
- Reconciliation + operasyon paneli
- Risk, limit, rollout
2) Global Definition of Done
Bir task “done” sayılabilmesi için:
- Kod + test + dokümantasyon güncel olmalı.
- Hata durumları ve idempotency kapsanmalı.
- Observability (log + metric + alert) eklenmiş olmalı.
- API davranışı swagger/dto ile uyumlu olmalı.
- Güvenlik ve yetkilendirme kuralları uygulanmış olmalı.
3) Milestone Plan
- M0 - Go/No-Go Gate: Hukuk + Stripe eligibility teyidi
- M1 - Ledger Foundation: Çekilebilir bakiye modeli aktif
- M2 - Payout MVP Core: Talep oluşturma + Stripe payout + webhook finalize
- M3 - Ops & Reconciliation: Mutabakat ve operasyonel görünürlük
- M4 - Pilot Rollout: Kısıtlı kullanıcı grubunda canlı test
4) Epic Özeti
- EPIC-00: Hukuk/Uyumluluk ve Ürün Politikası
- EPIC-01: Ledger ve Domain Model
- EPIC-02: Recipient Onboarding ve Payout Method
- EPIC-03: Payout Request API ve Orchestration
- EPIC-04: Stripe Webhook/Event Processing
- EPIC-05: Reconciliation ve Finans Operasyonları
- EPIC-06: Risk, Limit ve Fraud Kontrolleri
- EPIC-07: Gözlemlenebilirlik, Alerting ve Incident Runbook
- EPIC-08: Test, QA ve Pilot Rollout
5) EPIC-00: Hukuk/Uyumluluk ve Ürün Politikası
Hedef: Teknik geliştirme başlamadan canlı modelin regülasyon açısından sınırlarını netlemek.
EPIC-00 Tasks
-
PAY-0001 - Çekilebilir Kredi Politika Dokümanı
- Açıklama:
earnedvenon-earnedkredi ayrımının yazılı hale getirilmesi. - Efor: 1 gün
- Bağımlılık: Yok
- AC:
- Ürün/hukuk onaylı politika dokümanı var.
- “Hangi event withdrawable yaratır” listesi net.
- Promosyon/satın alma kredışı default olarak çekilemez.
- Açıklama:
-
PAY-0002 - Stripe Eligibility Teyidi
- Açıklama: Hedef ülke/şirket yapısı için Global Payouts eligibility yazılı teyidi.
- Efor: 1-3 gün (dış bağımlılık)
- Bağımlılık: PAY-0001
- AC:
- Stripe temsilcisinden yazılı teyit alındı.
- Kullanılacak payout methods ve limitler listelendi.
-
PAY-0003 - Go/No-Go Karar Kaydı
- Açıklama: Global Payouts vs Connect kararının resmi karar kaydı (ADR) olarak eklenmesi.
- Efor: 0.5 gün
- Bağımlılık: PAY-0002
- AC:
- ADR dosyası repo içinde yayınlandı.
- Karar gerekçesi + geri dönüş koşulları tanımlandı.
6) EPIC-01: Ledger ve Domain Model
Hedef: creditBalance tek alanından güvenli, çekilebilir bakiye modeline geçmek.
Teknik entegrasyon noktaları
src/users/schemas/user.schema.tssrc/users/use-cases/send-credits.use-case.tssrc/users/dto/user-transaction-history-item.dto.tssrc/balance/dto/balance-change-event.dto.ts
EPIC-01 Tasks
-
PAY-0101 - User Bakiye Alanlarını Genişlet
- Açıklama:
spendableCredits,withdrawableCredits,withdrawalHoldCreditsalanları. - Efor: 1 gün
- Bağımlılık: PAY-0001
- AC:
- Şema alanları migration-safe eklendi.
- Varsayılan değerler backward compatible.
- Index planı belirlendi.
- Açıklama:
-
PAY-0102 - Ledger Entry Koleksiyonu
- Açıklama: Çekilebilir bakiye hareketleri için ayrı collection (
payout_ledger_entries). - Efor: 1.5 gün
- Bağımlılık: PAY-0101
- AC:
- Double-entry benzeri kayıt yapısı var.
- Her hareket için
reason,sourceId,idempotencyKeytutuluyor. - Tekrarlı işlemde duplicate kayıt oluşmuyor.
- Açıklama: Çekilebilir bakiye hareketleri için ayrı collection (
-
PAY-0103 - Domain Service: Withdrawable Balance Engine
- Açıklama:
hold,release,finalizeoperasyonlarını transaction içinde yöneten servis. - Efor: 2 gün
- Bağımlılık: PAY-0102
- AC:
- Atomic işlem garantisi var.
- Negatif bakiye oluşmuyor.
- Concurrency testleri geçiyor.
- Açıklama:
-
PAY-0104 - Transaction History Tiplerini Genişlet
- Açıklama:
withdraw_request,withdraw_posted,withdraw_failed,withdraw_returnedtiplerini ekleme. - Efor: 1 gün
- Bağımlılık: PAY-0101
- AC:
- DTO enum güncel.
- History endpoint yeni tipleri döndürüyor.
- Mobile için geriye dönük uyumluluk korunuyor.
- Açıklama:
7) EPIC-02: Recipient Onboarding ve Payout Method
Hedef: Kullanıcının güvenli şekilde payout alıcısı olarak hazırlanması.
Teknik entegrasyon noktaları
src/integrations/stripe/modülü- Yeni
src/payouts/modülü
EPIC-02 Tasks
-
PAY-0201 - Payouts Module İskeleti
- Açıklama: Controller + service + repository + schema katmanları.
- Efor: 1 gün
- Bağımlılık: PAY-0101
- AC:
PayoutsModuleapp’e entegre.- Role/guard politikaları tanımlı.
-
PAY-0202 - Recipient Entity ve Repository
- Açıklama: Stripe account id, status, capabilities, country, audit alanları.
- Efor: 1 gün
- Bağımlılık: PAY-0201
- AC:
- CRUD operasyonları hazır.
- Tek kullanıcı için aktif recipient tekilliği korunuyor.
-
PAY-0203 - Onboarding Link Endpoint
- Açıklama: Stripe-hosted onboarding link üretimi.
- Efor: 1.5 gün
- Bağımlılık: PAY-0202
- AC:
- Endpoint auth korumalı.
- Link expiry/refresh yönetimi var.
- Her çağrı audit log bırakıyor.
-
PAY-0204 - Payout Method Senkronizasyonu
- Açıklama: Onboarding sonrası payout method listesinin çekilmesi ve lokal cache.
- Efor: 1.5 gün
- Bağımlılık: PAY-0203
- AC:
- Kullanılabilir yöntemler kullanıcıya dönebiliyor.
- Disabled methodlar çekim ekranına yansımıyor.
8) EPIC-03: Payout Request API ve Orchestration
Hedef: Kullanıcı talebinin Stripe’a idempotent şekilde gönderilmesi.
EPIC-03 Tasks
-
PAY-0301 - Payout Request Schema + State Machine
- Açıklama:
REQUESTED -> ON_HOLD -> SUBMITTED_TO_STRIPE -> PROCESSING -> POSTED/FAILED/RETURNED/CANCELED - Efor: 1.5 gün
- Bağımlılık: PAY-0103, PAY-0202
- AC:
- Geçersiz state transition’lar engelleniyor.
- Her transition timestamp ve actor ile kaydediliyor.
- Açıklama:
-
PAY-0302 - Create Withdraw Request Endpoint
- Açıklama: Talep validasyonu + hold alma + request kaydı.
- Efor: 2 gün
- Bağımlılık: PAY-0301
- AC:
- Limit, KYC, risk kontrolü uygulanıyor.
- Hold işlemi atomic.
- Tekrarlı submit duplicate üretmiyor.
-
PAY-0303 - Outbound Payment Orchestrator
- Açıklama: Stripe outbound payment create çağrısı + idempotency key stratejisi.
- Efor: 2 gün
- Bağımlılık: PAY-0302
- AC:
- Stripe request/response güvenli loglanıyor (PII maskeli).
- Timeout/retry stratejisi var.
- Başarısız çağrıda state
FAILED_SUBMISSIONbenzeri ara durumla izlenebilir.
-
PAY-0304 - User Withdraw History Endpoint
- Açıklama: Kullanıcıya çekim taleplerinin timeline olarak sunulması.
- Efor: 1 gün
- Bağımlılık: PAY-0301
- AC:
- Sayfalama/sıralama çalışıyor.
- Stripe referans id ve durum görünür.
9) EPIC-04: Stripe Webhook/Event Processing
Hedef: Payout sonuçlarının güvenli ve idempotent işlenmesi.
Teknik entegrasyon noktaları
src/integrations/stripe/stripe-webhook.controller.tssrc/integrations/stripe/services/stripe-webhook.service.tssrc/integrations/schemas/webhook-idempotency.schema.ts
EPIC-04 Tasks
-
PAY-0401 - Global Payouts Webhook Endpoint
- Açıklama: Ayrı route veya mevcut route içinde event routing.
- Efor: 1 gün
- Bağımlılık: PAY-0201
- AC:
- Signature verification zorunlu.
- Unsupported event türleri güvenli şekilde ignore ediliyor.
-
PAY-0402 - Payout Event Handler
- Açıklama:
posted/failed/returned/canceledolaylarını state machine’e map et. - Efor: 2 gün
- Bağımlılık: PAY-0301, PAY-0401
- AC:
posted-> finalizefailed/returned/canceled-> hold release- Handler idempotent
- Açıklama:
-
PAY-0403 - Stale Processing Recovery
- Açıklama: İşlenemeyen/yarım kalan eventlerin backfill job ile tamamlanması.
- Efor: 1.5 gün
- Bağımlılık: PAY-0402
- AC:
- Recovery cron/job var.
- İşlem geçmişi ve error reason izleniyor.
-
PAY-0404 - Webhook E2E Test Suite
- Açıklama: Replay/duplicate/out-of-order event testleri.
- Efor: 1.5 gün
- Bağımlılık: PAY-0402
- AC:
- Duplicate event ikinci kez finansal etki üretmiyor.
- Out-of-order event’te final state doğru.
10) EPIC-05: Reconciliation ve Finans Operasyonları
Hedef: Stripe ve internal ledger’ın günlük mutabakatını sağlamak.
EPIC-05 Tasks
-
PAY-0501 - Daily Reconciliation Job
- Açıklama: Stripe transactions/outbound payments ile internal kayıt karşılaştırması.
- Efor: 2 gün
- Bağımlılık: PAY-0303, PAY-0402
- AC:
- Günlük rapor üretimi var.
- Uyuşmazlıklar severity ile sınıflanıyor.
-
PAY-0502 - Reconciliation Report Storage
- Açıklama: Raporların saklanması (JSON/CSV) + geçmişe dönük erişim.
- Efor: 1 gün
- Bağımlılık: PAY-0501
- AC:
- En az 90 gün rapor saklanıyor.
- Rapor metadata’sı sorgulanabilir.
-
PAY-0503 - Admin Ops Endpointleri
- Açıklama: İlgili çekim isteğini Stripe referansı ile izleme, yeniden deneme/manuel müdahale.
- Efor: 2 gün
- Bağımlılık: PAY-0501
- AC:
- Admin role check zorunlu.
- Tüm manuel aksiyonlar audit logluyor.
11) EPIC-06: Risk, Limit ve Fraud Kontrolleri
Hedef: Abuse ve finansal kayıp riskini minimize etmek.
EPIC-06 Tasks
-
PAY-0601 - Limit Motoru
- Açıklama: Min/max, günlük/haftalık limit, ülke bazlı limit.
- Efor: 1.5 gün
- Bağımlılık: PAY-0302
- AC:
- Limit aşımında deterministic hata kodu dönüyor.
- Konfigürasyon değişikliği deploy olmadan yapılabiliyor.
-
PAY-0602 - Risk Flagging
- Açıklama: Basit kural tabanlı risk skoru (hesap yaşı, anomali frekansı, tutar).
- Efor: 1.5 gün
- Bağımlılık: PAY-0302
- AC:
- High-risk talepler
manual_reviewkuyruğuna düşüyor. - Risk nedeni kullanıcıya maskeli mesajla dönebiliyor.
- High-risk talepler
-
PAY-0603 - Manual Review Queue
- Açıklama: Admin onay/red akışı.
- Efor: 1 gün
- Bağımlılık: PAY-0602, PAY-0503
- AC:
- Onay/red işlemi audit loglu.
- Red durumunda hold otomatik serbest kalıyor.
12) EPIC-07: Gözlemlenebilirlik ve Incident Yönetimi
Hedef: Arızaların hızlı tespiti ve güvenli operasyon.
EPIC-07 Tasks
-
PAY-0701 - Structured Log Standardı
- Açıklama: payout request id, user id, stripe object id, state, error code.
- Efor: 1 gün
- Bağımlılık: PAY-0301
- AC:
- Tüm kritik adımlar tek formatta loglanıyor.
- PII maskeleme kuralı uygulanıyor.
-
PAY-0702 - Metrics Dashboard
- Açıklama: başarı oranı, fail oranı, returned oranı, median settlement time.
- Efor: 1 gün
- Bağımlılık: PAY-0402
- AC:
- Dashboard’da en az 7 KPI görünür.
- 24h/7d trendler takip ediliyor.
-
PAY-0703 - Alert Rules
- Açıklama: webhook fail spike, reconciliation mismatch, prefund low balance.
- Efor: 1 gün
- Bağımlılık: PAY-0501, PAY-0702
- AC:
- Kritik alarmlar paging üretiyor.
- Warning alarmları ops kanalına düşüyor.
-
PAY-0704 - Incident Runbook
- Açıklama:
returned spike,webhook down,ledger mismatchplaybook’ları. - Efor: 0.5 gün
- Bağımlılık: PAY-0703
- AC:
- Runbook dokümante.
- On-call ve escalation zinciri net.
- Açıklama:
13) EPIC-08: Test, QA ve Pilot Rollout
Hedef: Kontrollü canlı geçiş ve geri dönüş planı.
EPIC-08 Tasks
-
PAY-0801 - E2E Test Matrix
- Açıklama: happy path + fail/returned/canceled + duplicate webhook + concurrency.
- Efor: 2 gün
- Bağımlılık: PAY-0404
- AC:
- Test matrix dokümante.
- Kritik akışların tümü otomatik testte.
-
PAY-0802 - Pilot Feature Flag
- Açıklama: çekim özelliğini segment bazlı aç/kapa.
- Efor: 0.5 gün
- Bağımlılık: PAY-0302
- AC:
- Kullanıcı segmentine göre rollout yapılabiliyor.
- Anlık kapatma mekanizması var.
-
PAY-0803 - Rollback Plan
- Açıklama: Özelliği kapatma, bekleyen talepleri güvenli sonlandırma.
- Efor: 0.5 gün
- Bağımlılık: PAY-0802
- AC:
- Rollback adımları test edildi.
- Veri kaybı olmadan safe stop yapılabiliyor.
-
PAY-0804 - Pilot Exit Report
- Açıklama: Pilot sonrası metrik ve karar raporu.
- Efor: 0.5 gün
- Bağımlılık: PAY-0801, PAY-0802
- AC:
- Başarı/fail oranları raporlandı.
- Go-wide kararı için net öneri üretildi.
14) Backlog Sıralama (Önerilen Öncelik)
- PAY-0001
- PAY-0002
- PAY-0101
- PAY-0102
- PAY-0103
- PAY-0201
- PAY-0202
- PAY-0301
- PAY-0302
- PAY-0303
- PAY-0401
- PAY-0402
- PAY-0501
- PAY-0601
- PAY-0802
15) Sprint Önerisi (Örnek)
- Sprint-1: EPIC-00 + EPIC-01 başlangıç
- Sprint-2: EPIC-01 tamam + EPIC-02
- Sprint-3: EPIC-03 + EPIC-04 başlangıç
- Sprint-4: EPIC-04 tamam + EPIC-05
- Sprint-5: EPIC-06 + EPIC-07 + Pilot hazırlık
- Sprint-6: EPIC-08 pilot + exit report
16) Notlar
- Global Payouts’tan başlanıp Connect’e evrim planı yapılacaksa domain modeli baştan provider-agnostic tasarlanmalı.
- API response’larda kullanıcıya yalnızca güvenli finans durum mesajları dönülmeli; ham Stripe hata mesajları maskelenmeli.
- Hukuk ve vergi tarafı netleşmeden geniş rollout önerilmez.