3.6K Views
September 27, 23
スライド概要
JP_Stripes Tokyoでの登壇資料です
Stripe Developer Advocate
JP_Stripes東京 Vol.10 Stripeではじめるサブスクリプション どんな料金体系がStripeで実現できるのか? @hidetaka_dev Updated June 2023
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? 料金モデルを知ることで、ビジネスの柔軟性を高めよう 定額・ 段階 定額+ 従量 従量 2
JP_Stripes東京 Vol.10 👋 Hello! Hidetaka Okamoto(岡本秀高) Developer Advocate @ Stripe AWS Community Builder 💬 @hidetaka_dev ✉ [email protected] Hyogo / Kyoto, Japan
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? なぜ今「価格」の話なのか? 40% 価格の最適化を検討している企業の割合 サブスクリプションと課金請求管理の現状に関する報告書- Stripe https://prtimes.jp/main/html/rd/p/000000041.000077879.html https://stripe.com/sessions 4
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? なぜ今「価格」の話なのか? 40% 43% 価格の最適化を検討している企業の割合 解約率が今後増加するだろうと 予想する企業の割合 サブスクリプションと課金請求管理の現状に関する報告書- Stripe https://prtimes.jp/main/html/rd/p/000000041.000077879.html https://stripe.com/sessions 5
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? 「価格」は解約理由になりやすい 顧客がサブスクリプションを解約する 主な原因は何だと考えていますか? 価格 サービスが顧客のニーズ を満たせなかった サービスが不要になった 競合サービスへの移行 その他・わからない サブスクリプションと課金請求管理の現状に関する報告書- Stripe https://prtimes.jp/main/html/rd/p/000000041.000077879.html https://stripe.com/sessions 6
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? 「価格」は解約理由になりやすい 顧客がサブスクリプションを解約する 主な原因は何だと考えていますか? 価格 サービスが顧客のニーズ を満たせなかった 25% サービスが不要になった 競合サービスへの移行 その他・わからない 顧客離れ対策で、 価格を引き下げることを検討する企業の割合 サブスクリプションと課金請求管理の現状に関する報告書- Stripe https://prtimes.jp/main/html/rd/p/000000041.000077879.html https://stripe.com/sessions 7
価格設定と料金プラン設定は SaaSの収益性に 大きな影響を与える 8
複雑な課金ロジックをシ ンプルに ● 継続課金 週 / 月 / 年 / カスタム ● 単発の請求との組み合わせ 初回手数料・更新料など ● 柔軟な価格モデル 従量課金や段階的価格 ● 割引・トライアル ● etc…
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? Stripe Billingで作れる料金体系モデルの例 ● 標準の料金体系 ● パッケージ料金体系 ● 数量ベースの料金体系 ● 段階的な料金体系 11
Stripeの料金体系モデルいろいろ 標準の料金体系 ● 1つの価格 ● 合計額は 数量に比例 ● 1,000円 51ユーザー -> 51,000円
Stripeの料金体系モデルいろいろ パッケージ 料金体系 ● 1つの価格 ● ユニット単位で 合計金額が増加 ● 10,000円 51ユーザー -> 60,000円
Stripeの料金体系モデルいろいろ 数量ベースの 料金体系 ● 数量ごとの価格 ● ユニット単価は 該当数量で決定 ● 左表の価格 51ユーザー -> 45,900円
Stripeの料金体系モデルいろいろ 段階的な 料金体系 ● 数量ごとの価格 ● ユニット単価は 該当数量で決定 ● 左表の価格 51ユーザー -> 59,900円
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? サービスの使われ方に応じた料金モデルの選定 ● 数量に比例した請求金額 -> 標準な料金体系 ● 特定ユニット単位で金額を変更 -> パッケージな料金体系 ● 数量に応じて全体の単価を変更 -> 数量ベースな料金体系 ● 閾値ごとに単価を設定 -> 段階的な料金体系 ● 定額 + 従量課金の組み合わせ -> 数量ベース or 段階的 16
多岐にわたる料金体系を どのように実装するか? 17
Billing概要 Billing オブジェクト間の処理の流れ Products Customer Prices 500 円 / 月 1000 円 / 月 機能料金 会員料金 10000 円 / 年 18
Billing概要 Billing オブジェクト間の処理の流れ Products Customer Subscription Prices 500 円 / 月 Invoices Paid: Aug. 2020 1000 円 / 月 機能料金 会員料金 10000 円 / 年 19
Billing概要 Billing オブジェクト間の処理の流れ Products Customer Subscription Prices 500 円 / 月 Invoices Paid: Aug. 2020 1000 円 / 月 機能料金 会員料金 10000 円 / 年 Paid: July. 2020 20
Billing概要 料金や商品の中身を、サブスクリプションは意識しない Products Customer Subscription Prices 500 円 / 月 Invoices 申し込み処理で、 料金体系の違いは 考慮しなくて良い Paid: Aug. 2020 1000 円 / 月 機能料金 会員料金 10000 円 / 年 Paid: July. 2020 Paid: June 2020 21
サブスクリプションの作り方 await stripe.subscriptions.create({ customer: 'cus_xxxxxx', items: [{ price: 'price_xxxxxxx', quantity: 51, }] }) 料金IDと顧客ID 数量を指定する
サブスクリプションの作り方 await stripe.subscriptions.create({ customer: 'cus_xxxxxx', items: [{ price: 'price_xxxxxxx', quantity: 51, }], promotion_code: 'promo_xxx', trial_period_days: 7, }) 割引や トライアルの 設定
サブスクリプションの作り方 await stripe.subscriptions.create({ customer: 'cus_xxxxxx', items: [{ price: 'price_xxxxxxx', quantity: 51, }], trial_period_days: 7, trial_settings: { end_behavior: { missing_payment_method: 'cancel', }, }, }) トライアルで、 支払い方法を 後から登録する
サブスクリプションの作り方 await stripe.subscriptions.create({ customer: 'cus_xxxxxx', items: [{ price: 'price_xxxxxxx', quantity: 51, }] }) 料金IDと顧客ID 数量を指定する
サブスクリプションの作り方 const session = await stripe.checkout .sessions .create({ success_url: 'https://example.com/thanks ', cancel_url: 'https://example.com ', line_items: [{ price: 'price_xxx', quantity: 1, },{ price: 'price_xxx', quantity: 1, }], mode: 'subscription' , }) return Response .redirect (session.url, 303) Checkoutでは、 初回手数料ありの サブスクリプションも 提供することが可能
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? 実装時には、料金体系の違いは意識せずに済む ● Subscription / Price / Customerそれぞれ独立したデータ ● 「どのIDの料金でサブスクリプションを作るか?」だけ 意識すれば、申し込みフローのAPI組み込みが可能 ● Checkout ( リダイレクト型申し込みフォーム )では、 初回手数料などの1回きり請求も、まとめて処理できる 27
One more thing 28
Stripeで「従量課金・使っただけ課金」を実装する Usage based billing(従量課金) 従量課金プランの作成 顧客への課金 使用量の記録 subscription amount: 1400 invoice item item Plan amount: 800 usage record amount: 200 quantity: 4 currency: JPY timestamp: 1586475800 interval: week usage_type: metered item item Plan amount: 600 usage record amount: 100 quantity: 6 currency: JPY timestamp: 1585872000 interval: week usage_type: metered 29
Stripeで「従量課金・使っただけ課金」を実装する
UsageRecordで、「どれだけ使ったか」を登録
const subscription = await stripe.subscriptions.retrieve('sub_xxxx');
const usageRecordPrice = subscription.items.data.find(item => {
return item.price.recurring?.usage_type === 'metered';
});
if (usageRecordPrice) {
await stripe.subscriptionItems.createUsageRecord(usageRecordPrice.id, {
action: 'set',
quantity: 10,
timestamp: Math.floor(new Date().getTime() / 1000)
});
}
30
Stripeで「従量課金・使っただけ課金」を実装する Stripeで「従量課金」を実装する ● サブスクリプションの作成方法は同じ ● 「どれだけ使ったか」をUsage Recordとして登録 ○ 登録しないと、「数量0」として扱われる ● SubscriptionのIDではなく、 SubscriptionLineItemsのIDを使う ○ 「サブスクリプション(sub_xxx)の、 この請求項目(si_xxx)についてUsageを登録する」 31
Stripeのデータを使った、レポート分析や成長施策 BilligのダッシュボードでMRRやLTVを確認 35
Stripeのデータを使った、レポート分析や成長施策 BilligのダッシュボードでMRRやLTVを確認 36
Stripe Sigmaで SQLを使った より詳細な分析も
Revenue and Finance Automation ( RFA )
Life Time Value 顧客が取引を終了するまでに、 平均継続期間 x 平均売上高 x 粗利率 いくら企業に支払ったか https://stripe.com/sessions 39
適切な価格設定は、 「平均売上高の向上」に貢献する 40
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? 「売上・決済」から「収益」へ https://offers.hubspot.jp/state-of-revops-report HubSpot: Revenue Operations ( RevOps ) https://stripe.com/jp/use-cases/finance-automation Stripe: Revenue And Finance Automation ( RFA ) https://stripe.com/sessions 41
AWS & Stripeで RevOps https://www.docswell.com/s/hidetaka-stripe/K YWMN9-revops-stripe-aws
10/4 オンライン https://stripe.events/saas-webinar
Stripeではじめるサブスクリプション- どんな料金体系がStripeで実現できるのか? まとめ ● Stripeでは、様々な料金体系のサブスクリプションが作れる ● 料金体系ごとの実装方法は、ほとんど同じ ● レポートやSigmaで、価格が最適かを検証しよう ● RevOps / RFAなど、 「収益を最大化するための取り組み」をはじめよう 44
Stripe Billing サブスクリプション変更管理 subscription 価格の変更 subscription item price A item price B 既存サブスクリプションを別の価格オブジェクトに変更する 日割り計算 ビジネス要件に合わせて柔軟にオン・オフできる 45
サブスクリプション変更管理
Invoice RetriveUpcoming APIで変更をプレビュー
const subscription = await stripe.subscriptions.retrieve('sub_49ty4767H20z6a');
const items = [{
id: subscription.items.data[0].id,
Price: 'price_CBb6IXqvTLXp3f', // 変更したい項目
}];
const invoice = await stripe.invoices.retrieveUpcoming({
customer: 'cus_4fdAW5ftNQow1a',
subscription: 'sub_49ty4767H20z6a',
subscription_items: items,
subscription_proration_date: Math.floor(Date.now() / 1000),
});
46