Skip to content

Stripe Connect Akışı

Global eğitmenler, Express Dashboard onboarding, anlık transferler.

Coursio’da uluslararası eğitmenler için ödemeler Stripe Connect (Express) ile yapılır. Bu sayfa, Express Dashboard onboarding, api.stripe.connect-onboarding.ts ve satış sonrası paranın eğitmen hesabına anlık transfer mantığını açıklar. Türkiye’deki eğitmenler için Stripe Connect kısıtlamaları nedeniyle manuel ödeme (IBAN/Payoneer) akışı sunulur; detay için TR Özel Payout Akışı sayfasına bakın.

Global Eğitmenler: Express Dashboard Onboarding

Section titled “Global Eğitmenler: Express Dashboard Onboarding”

Eğitmenin banka bilgilerini Stripe Express Dashboard üzerinden güvenli şekilde tanımlaması; platform daha sonra kazançları bu Connect hesabına transfer eder.

Onboarding Endpoint: api.stripe.connect-onboarding

Section titled “Onboarding Endpoint: api.stripe.connect-onboarding”

Dosya: app/routes/api.stripe.connect-onboarding.ts

Akış:

  1. Yetkilendirme: Giriş yapmış ve role === "instructor" olan kullanıcı.
  2. Connect hesabı yoksa: stripe.accounts.create({ type: "express", country, email, capabilities: { transfers: { requested: true } }, ... }) ile Express hesabı oluşturulur; stripeConnectId kullanıcıya kaydedilir.
  3. Hesap varsa: Mevcut stripeConnectId kullanılır; gerekirse transfers capability güncellenir.
  4. Account Link: stripe.accountLinks.create({ account, refresh_url, return_url, type: "account_onboarding" }) ile Stripe’ın onboarding sayfasına yönlendirme linki üretilir.
  5. Yönlendirme: Kullanıcı bu linke yönlendirilir; tamamlayınca return_url (örn. /instructor/payouts?onboarding=success) ile döner.

Refresh URL: Onboarding yarıda kesilirse tekrar denemek için refresh_url (örn. /instructor/payouts) kullanılır.

Eğitmen, Ödemeler sayfasında (örn. /instructor/payouts) “Stripe Connect hesabını bağla” benzeri bir butonla bu endpoint’i tetikler (form POST veya link). Ülke bilgisi kullanıcı kaydındaki country alanından alınır; Express hesabı o ülkeye göre oluşturulur.

Anlık Transferler: Satış Sonrası Eğitmen Hesabına Aktarım

Section titled “Anlık Transferler: Satış Sonrası Eğitmen Hesabına Aktarım”

Satış gerçekleştiğinde (Stripe checkout.session.completed webhook’u):

  1. Earnings kaydı oluşturulur: toplam tutar, eğitmen payı, platform payı, affiliate payı (varsa) earnings tablosuna yazılır.
  2. Eğitmen bakiyesi bu kayıtlar üzerinden hesaplanır (tamamlanan satışların eğitmen payı toplamı).

Eğitmen ödeme talebi oluşturduğunda:

  • Tablo: payout_requests (PAYOUT_REQUEST).
  • method: stripe_connect (Stripe Connect ile ödeme).
  • destination: Eğitmenin stripeConnectId (Connect hesabı).

Admin talebi onayladığında:

Dosya: app/lib/stripe-connect-payout.tsprocessPayoutTransfer(db, payoutId)

  1. payout_requests tablosundan ilgili kayıt okunur; method === "stripe_connect" ve eğitmenin stripeConnectId’si kontrol edilir.
  2. Tutar cent cinsine çevrilir; eğitmenin country bilgisine göre currency seçilir (TR → try, GB → gbp, AB ülkeleri → eur, diğer → usd).
  3. stripe.transfers.create çağrılır: platform Stripe hesabından eğitmenin Connect hesabına (destination: stripeConnectId) transfer yaratılır.
  4. Başarılıysa stripeTransferId payout kaydına yazılır; durum güncellenir.

Böylece anlık transfer (onay sonrası tek seferde) eğitmenin Stripe Connect bakiyesine yansır; eğitmen Stripe üzerinden kendi bankasına çekim yapar.

KonuAçıklama
Onboardingapi.stripe.connect-onboarding → Express hesap oluşturma / Account Link → Stripe Express sayfasına yönlendirme.
EarningsSatış webhook’unda earnings tablosuna eğitmen/platform/affiliate payları yazılır.
Payout talebiEğitmen talep oluşturur → Admin onaylar → processPayoutTransfer ile Stripe Transfer; para eğitmen Connect hesabına gider.

Türkiye’deki eğitmenler için Stripe kısıtlamaları nedeniyle kullanılan manuel IBAN/Payoneer akışı için Türkiye (TR) Özel Payout Akışı sayfasına bakın.

  • app/routes/api.stripe.connect-onboarding.ts — Stripe Connect Express onboarding; Account Link ile yönlendirme.
  • app/routes/instructor.payouts.tsx — Eğitmen ödemeler sayfası; Connect bağlama ve payout talebi.
  • app/lib/stripe-connect-payout.tsprocessPayoutTransfer; Stripe Transfer oluşturma.
  • app/lib/payout-engine.ts — Payout talebi ve bakiye mantığı.