Rehberler

Stripe ile Abonelik Nasıl Eklenir: Planlar, Denemeler, Webhook'lar ve Başarısız Ödemeler

Stripe ile abonelik eklemek için Stripe Panosu'nda yinelenen fiyatlı bir ürün oluşturun, sunucunuzdan müşterileri abonelik modunda Stripe Checkout'a gönderin ve bir webhook ile her ödemenin başarılı olduğunda, başarısız olduğunda, değiştiğinde ya da sona erdiğinde uygulamanıza haber verilmesini sağlayın. Abonelik durumunu kullanıcıyla ilişkilendirerek saklayın ve erişimi başarı sayfasından değil, bu durumdan verin. Kişilerin kartlarını değiştirebilmesi, plan değiştirebilmesi ve iptal edebilmesi için bir Faturalandırmayı yönet düğmesi ekleyin; bu düğme Stripe'ın barındırılan müşteri portalını açar, böylece bu ekranları kendiniz geliştirmezsiniz.

Bu rehber, uygulamanıza ödeme nasıl eklenir rehberine dayanır; o rehber tek seferlik Checkout, test modu ve canlıya geçişi kapsar. Burada yinelenen faturalandırmayı farklı kılan şeylere odaklanıyoruz. Stripe ayrıntıları, Eylül 2026 itibarıyla Stripe'ın belgelerinden alınmıştır.

Abonelikler neden tek seferlik ödemelerden daha zordur

Tek seferlik bir ödeme, müşteri uygulamanızdayken gerçekleşir. Bir abonelik ise siz ayrıldıktan sonra da devam eder: her ay yenilemeler, süresi dolan kartlar, dönem ortasında yükseltmeler, dönem sonunda geçerli olacak iptaller. Uygulamanız bunları yalnızca webhook'lar aracılığıyla öğrenir. Çoğu abonelik hatası, ilk ödemeyi bütün hikâye sanmaktan kaynaklanır.

Seçenekleriniz

YaklaşımNe geliştirirsinizEn uygun olduğu durum
Yinelenen fiyatlı Payment LinkYalnızca bir bağlantıTalebi test etmek; erişimi elle yönetmek
Checkout (abonelik modu) + müşteri portalıBir sunucu rotası, bir webhook, bir faturalandırma düğmesiÇoğu SaaS uygulaması ve üyelikler
Abonelikler API'si ve kendi ödeme formunuzÇok daha fazlası: ödeme arayüzü, kimlik doğrulama, yeniden denemelerAlışılmadık faturalandırma akışları olan uygulamalar
Merchant-of-record sağlayıcıCheckout'a benzerSatış vergisini sağlayıcının yönetmesini isteyen satıcılar

Çoğu uygulama için Checkout artı portal doğru ödünleşimdir. Vergi işlemleri sizi endişelendiriyorsa sağlayıcıları Stripe vs Paddle vs Lemon Squeezy ile karşılaştırın.

Fiyatlandırmanızı önce Stripe'da planlayın

Stripe'da bir ürün, sattığınız şeydir ("Pro plan"); bir fiyat ise bunun nasıl ücretlendirileceğidir ("ayda 20

quot;, "yılda 200
quot;). Bir ürünün birden fazla fiyatı olabilir. Karar verin:

  • Hangi kademeleri sunduğunuzu ve her birinin uygulamanızda neyin kilidini açtığını
  • Aylık, yıllık veya ikisi birden
  • Bir deneme sunup sunmayacağınızı ve bunun peşin kart gerektirip gerektirmediğini

Ürünleri ve fiyatları test modunda oluşturun ve fiyat kimliklerini saklayın; uygulamanız bunlara başvurur. Fiyatlandırmaya henüz karar vermediyseniz SaaS ürünü nasıl fiyatlandırılır ve freemium ile ücretsiz deneme rehberlerini okuyun.

Yönetmeniz gereken abonelik yaşam döngüsü

Stripe'ın abonelik genel bakışı, bir aboneliğin sahip olabileceği durumları listeler. Erişim açısından en önemli olanlar:

DurumAnlamıErişim verilir mi?
trialingDeneme dönemindeEvet
activeİyi durumdaEvet
incompleteİlk ödeme henüz tamamlanmadı; Stripe müşteriye 23 saat tanırHayır
incomplete_expiredİlk ödeme hiç başarılı olmadıHayır
past_dueSon ödeme başarısız oldu ya da denenmedi; yeniden denemeler gelebilirSizin seçiminiz; birçok uygulama kısa bir ek süre tanır
unpaidDenemeler bitti, faturalar açık kaldı, başka deneme yokHayır; Stripe'ın belgeleri erişimin iptal edilmesini söyler
canceledSona erdi; yeniden başlatılamazHayır
pausedDeneme, ödeme yöntemi olmadan sona erdi ve duraklatılacak şekilde ayarlandıHayır

Durumu kullanıcı veya hesap kaydınızda saklayın ve erişimi buna dayandırın. İlgili her webhook geldiğinde güncelleyin.

İşlenmesi gereken webhook olayları

OlayUygulamanız ne yapar
checkout.session.completedYeni Stripe müşteri ve abonelik kimliklerini kullanıcınıza bağlar
invoice.paidAboneliği aktif olarak işaretler ve yeni dönem sonunu kaydeder
invoice.payment_failedKullanıcıya kartının başarısız olduğunu söyler ve portala bağlantı verir
invoice.payment_action_requiredKullanıcıdan kart doğrulamasını tamamlamasını ister
customer.subscription.updatedPlanı, durumu ve planlanmış iptali günceller
customer.subscription.deletedÜcretli erişimi kaldırır
customer.subscription.trial_will_endDeneme bitmeden kullanıcıyı hatırlatır; Stripe bunu üç gün önce gönderir

Stripe'ın webhook belgelerindeki işleyici kuralları hâlâ geçerlidir: ham gövdeyle imzayı doğrulayın, hızlıca 2xx dönün, yinelenen ve sırasız olayları yönetin ve yeniden denemeleri bekleyin. Webhook nedir rehberi fikri açıklar; ödemeler rehberi kuralları ayrıntılı listeler.

Adım adım

  1. Stripe test modunda ürünleri ve fiyatları oluşturun.
  2. Sırları ekleyin: gizli anahtar, fiyat kimlikleri ve daha sonra webhook imzalama sırrı. Bunları asla ön yüz kodunda tutmayın.
  3. Fiyatlandırma sayfası: her planın düğmesi sunucunuzu çağırır; sunucu, oturum açmış kullanıcı için abonelik modunda bir Checkout Session oluşturur. Ödemeyi hesapla eşleştirebilmesi için kullanıcı kimliğinizi ekleyin.
  4. Webhook uç noktası: imzaları doğrulayın ve yukarıdaki olayları işleyin; kullanıcı başına tek bir abonelik kaydını güncelleyin.
  5. Özellikleri saklanan duruma ve plana göre kapatın; yalnızca gizli düğmelere değil, korunan her eylemde sunucuda kontrol edin.
  6. Müşteri portalı: Stripe Panosu'nda yapılandırın (kişilerin hangi planlara geçebileceği, iptal edip edemeyecekleri), ardından sunucuda bir portal oturumu oluşturup oraya yönlendiren bir Faturalandırmayı yönet düğmesi ekleyin.
  7. Başarısız ödemeler: Stripe'ın faturalandırma ayarlarında yeniden deneme davranışını ve son denemeden sonra ne olacağını seçin. past_due durumundayken uygulama içinde bir uyarı şeridi gösterin.
  8. Tüm yaşam döngüsünü test edin, ardından yayınlayın ve canlı webhook'u kaydedin.

Yapay zekâ oluşturucunuza verilecek istemler

Stripe ile abonelik faturalandırması ekle. Planlar: Starter (fiyat kimliği STRIPE_PRICE_STARTER içinde) ve Pro (STRIPE_PRICE_PRO). Fiyatlandırma sayfası, sunucuda STRIPE_SECRET_KEY kullanarak abonelik modunda bir Checkout Session oluşturur ve oturum açmış kullanıcının kimliğini ekler. Stripe müşteri kimliğini, abonelik kimliğini, planı ve durumu kullanıcıya kaydet. Gizli anahtarı asla tarayıcıya açma.

POST /api/stripe/webhook ekle. İmzayı STRIPE_WEBHOOK_SECRET ile ham istek gövdesini kullanarak doğrula. checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted ve customer.subscription.trial_will_end olaylarını işle. İşlenen olay kimliklerini kaydet, böylece yinelemeler yok sayılır. Kullanıcının durumunu, olayların geldiği sıradan değil, abonelik nesnesinden güncelle.

Pro özelliklerini sunucuda kapat: yalnızca durum active veya trialing ise ve plan Pro ise izin ver. Durum past_due olduğunda "Ödeme başarısız, kartınızı güncelleyin" uyarısı göster. Bu kullanıcı için Stripe müşteri portalını açan bir Faturalandırmayı yönet düğmesi ekle.

Yükseltmeler, düşürmeler ve orantılandırma

Müşteri plan değiştirdiğinde Stripe'ın belgeleri, değişikliğin genellikle bir orantılandırma (proration) oluşturduğunu söyler: yeni fiyat, mevcut faturalandırma döneminin kalan kısmına uygulanır. Orantılandırmaları önizleyebilir veya kapatabilirsiniz. Planlar aynı aralıktaysa faturalandırma tarihleri aynı kalır; aylıktan yıllığa geçmek ise faturalandırma tarihini geçişin olduğu güne taşır. Müşterilerin planlarını portalda değiştirmesine izin vermek bu mantığı yazma zahmetini ortadan kaldırır, ama portal ayarlarında hangi geçişlere izin verileceğine karar verin.

Test kontrol listesi

Stripe test modunu ve test kartlarını kullanın ve her durumu gözden geçirin:

  • Yeni abonelik, doğru kullanıcıya doğru planı verir
  • Ödemeden hemen sonra sekmeyi kapatmak yine de erişim sağlar (webhook'un çalıştığını kanıtlar)
  • Kayıt sırasında reddedilen bir kart hiçbir şey vermez
  • Başarısız bir yenileme hesabı past_due durumuna sokar ve uyarıyı gösterir
  • Portalda kartı güncellemek active durumunu geri getirir
  • Yükseltme ve düşürme, özellikleri doğru değiştirir
  • Dönem sonunda iptal, erişimi bitiş tarihine kadar korur, ardından kaldırır
  • Deneme kullanıcıları erişim alır, hatırlatmayı alır ve doğru şekilde dönüşür ya da erişimini kaybeder
  • Aynı webhook olayını iki kez göndermek hiçbir şeyi değiştirmez

Stripe'ın test saatleri (test clocks), bir ay beklemeden yenilemeleri simüle etmenizi sağlar. Bunları nasıl kullanacağınızı Stripe'ın güncel test belgelerinde kontrol edin.

Sık yapılan hatalar

  • Erişimi başarı sayfasında vermek. Müşteriler ödeyip bu sayfaya hiç ulaşmamış olabilir. Webhook kullanın.
  • Yalnızca ilk ödemeyi işlemek. Yenilemeler, başarısızlıklar ve iptaller sonradan olaylar olarak gelir.
  • Plan durumunu yalnızca ön yüzde kontrol etmek. Herkes API'nizi doğrudan çağırabilir.
  • Yanlışlıkla bir kullanıcıya birden çok abonelik. Yeni bir Checkout Session oluşturmadan önce mevcut bir aboneliğin olup olmadığını kontrol edin veya mevcut müşterileri portale yönlendirin.
  • İlk başarısız yenilemede erişimi iptal etmek. Kartlar sıkıcı nedenlerle başarısız olur. Kısa bir ek süre ve net bir uyarı müşterileri tutar.
  • Canlı webhook'u unutmak. Test ve canlı uç noktaların imzalama sırları farklıdır.
  • Vergi ve iadeleri görmezden gelmek. Yayından önce iade politikanıza karar verin ve vergi yükümlülüklerinizi bir muhasebeciyle kontrol edin.

Mythex'te abonelikler

Mythex'te oluşturduğunuz uygulamalar kendi Stripe hesabınızı ve anahtarlarınızı kullanır; uygulamanız için tek tıkla Stripe bağlantısı yoktur. Test anahtarlarınızı ve fiyat kimliklerinizi proje sırları olarak ekleyin, yukarıdakine benzer istemleri kullanın ve Önizleme'de Stripe'ın test kartlarıyla test edin. Webhook'lar uygulamanızın herkese açık URL'sini gerektirir; bu nedenle Stripe'da uç noktayı kaydetmeden önce yayınlayın ve canlı anahtarlara geçtikten sonra canlı uygulamanın bunları alması için tekrar yayınlayın. Bkz. Stripe ile ödeme kabul etme ve arka uçunuzda webhook'ları işleme. Uygulamanın geri kalanı için SaaS MVP nasıl kurulur rehberi, faturalandırma etrafında neyi inşa etmeniz gerektiğini kapsar.

Sorular

Stripe ile abonelik eklemenin en basit yolu nedir?

Stripe Panosu'nda yinelenen fiyatlı bir ürün oluşturun, müşterileri abonelik modunda Stripe Checkout'a yönlendirin, abonelik olaylarını bir webhook ile işleyin ve bir Faturalandırmayı yönet düğmesini Stripe'ın barındırılan müşteri portalına bağlayın. Bu, kart formlarını ve plan değiştirme ekranlarını kendiniz yapmanızı önler.

Abonelikler için hangi Stripe webhook olaylarına ihtiyacım var?

En az şunlar: yeni aboneliği kullanıcınıza bağlamak için checkout.session.completed, her başarılı ödemeyi onaylamak için invoice.paid, başarısız yenilemeler hakkında uyarmak için invoice.payment_failed, plan değişikliklerini ve iptalleri izlemek için customer.subscription.updated ve customer.subscription.deleted.

Bir abonelik ödemesi başarısız olduğunda ne olur?

Stripe'ın Eylül 2026 itibarıyla belgelerine göre abonelik genellikle past_due durumuna geçer ve Stripe, ayarlarınıza göre ödemeyi yeniden deneyebilir. Son denemeden sonra Panonuzdaki ayarlar, aboneliğin iptal edilip edilmeyeceğini, unpaid olarak işaretlenip işaretlenmeyeceğini veya past_due olarak kalıp kalmayacağını belirler.

Kart istemeden ücretsiz deneme sunabilir miyim?

Evet. Stripe ücretsiz denemeleri destekler ve belgeleri, yapılandırıldığında ödeme yöntemi olmadan biten denemeler için bir duraklatılmış (paused) durumunu tanımlar. Peşin kart toplamak genellikle daha az kayıt ama daha fazla ödeyen müşteri anlamına gelir; ürününüze hangisinin uyduğunu test edin.

Mythex · Pricing · Yapay zekayla her şeyi yapın · Web sitesi ve uygulama şablonları · Mythex karşılaştırmaları · Yapay zekayla uygulama geliştirme sözlüğü · Yapay zekayla uygulama geliştirme için ücretsiz araçlar · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)