コンテンツにスキップ
アカウントを作成またはサインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成サインイン
導入方法
決済管理
売上管理
プラットフォームとマーケットプレイス
資金管理
開発者向けリソース
API & SDKヘルプ
概要
Billing
概要Billing API について
サブスクリプション
    概要
    サブスクリプションの仕組み
    導入方法
    クイックスタート
    連携の計画を立てる
    連携機能の構築
    ユースケース
    サブスクリプションについて
    請求モードを有効にする
    サブスクリプション・イベントの設定
    エンタイトルメント
    サブスクリプションの請求書
    サブスクリプションのスケジュール
    継続的な料金体系モデル
    サブスクリプションを設定する
    請求回収方法の設定
    料金表を埋め込む
    請求サイクルの設定
    サブスクリプションを管理
    サブスクリプションを Stripe に移行する
    製品またはサブスクリプション数量の設定
    複数のサブスクリプション期間
    サブスクリプションの遡及適用
    トライアル期間を設定
    後払いによるサブスクリプションの処理
    クーポンを適用
    サブスクリプションの修正
    サブスクリプションの決済方法の管理
    アナリティクス
    iOS でサブスクリプションを管理する
Invoicing
従量課金
見積もり
顧客管理
Billing と他のプロダクトの連携
売上回収
オートメーション
実装内容をテストする
税金
概要
Stripe tax を使用
法規制の遵守・対応管理
レポート機能
概要
レポートの選択
レポートを設定
複数のアカウントのレポート
Reports API
収益認識
データ
概要
ビジネスデータのクエリ
Sigma
Data Pipeline
外部データをインポート
アメリカ
日本語
ホーム売上管理Subscriptions

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

サブスクリプションの実装を構築する

サブスクリプションを作成して、継続支払いを受け付けるように管理します。

Checkout のサブスクリプションページ
ローコード

ロゴ、画像、カラーをカスタマイズします。

構築済みのホストされたページを使用して決済を回収し、 サブスクリプション を管理します。

GitHub からサンプルの導入を複製します。

より実践的な内容については、請求書導入クイックスタート を参照してください。

GitHub のサンプル または デモ を参照してください。

作成する内容

このガイドでは、Stripe Checkout を利用して月額固定料金のサブスクリプションを販売する方法について説明します。

このガイドでは以下の方法について説明します。

  • 商品カタログを構築して、ビジネスをモデル化します。
  • Checkout セッションをサイトに追加し、ボタン、成功ページ、キャンセルページなどを組み込む。
  • サブスクリプションのイベントをモニタリングし、サービスへのアクセスを提供する。
  • カスタマーポータルを設定します。
  • 顧客ポータルセッションをサイトに追加し、ボタンやリダイレクトなどを組み込む。
  • ポータルを使用して顧客がサブスクリプションを自身で管理できるようにする。
  • フレキシブル請求モード を使用して、拡張請求動作と追加機能にアクセスする方法を確認してください。

導入をコーディングする準備ができていない場合は、基本的なサブスクリプションをダッシュボードから手動で設定するか、Payment Links を使用してコードの記述なしにサブスクリプションを設定することもできます。

導入の設計 の詳細をご覧になり、完全な導入において何を決定する必要があり、どのようなリソースが必要なのかを把握してください。

組み込み完了後に、以下の拡張を行うことができます。

  • 税金を表示
  • 割引 の適用
  • 顧客に 無料トライアル期間 を提供する
  • 決済手段 を追加する
  • オンライン請求書ページ を導入する
  • 決済を 設定モード で使用する
  • 従量課金、料金体系、従量課金ベースの料金体系 を設定
  • 比例配分 の管理
  • 顧客が複数の製品に登録できるようにする
  • エンタイトルメントを導入して商品の機能へのアクセスを管理する

Stripe をセットアップする

任意の Stripe クライアントをインストールします。

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

オプションで、Stripe CLI をインストールします。CLI は Webhook のテストを提供し、これを実行することで商品と料金を作成できます。

Command Line
homebrew
ソースからインストールする
No results
# Install Homebrew to run this command: https://brew.sh/ brew install stripe/stripe-cli/stripe # Connect the CLI to your dashboard stripe login

その他のインストールオプションについては、Stripe CLI を使ってみるをご覧ください。

価格モデルを作成する
ダッシュボードまたは Stripe CLI

ダッシュボードまたは Stripe CLI で商品とその価格を作成します。

この例では、「基本」と「プレミアム」という 2 つのサービスレベルオプションがある固定価格のサービスを使用しています。サービスレベルオプションごとに、1 つの商品と 1 つの継続価格を作成する必要があります (初期費用のような 1 回限りの支払いを追加する場合は、1 回限りの価格で 3 つ目の商品を作成します。わかりやすくするために、この例には 1 回限りの支払いを含めていません)。

この例では、各商品が 1 カ月間隔で請求されます。基本商品の価格は 5 USD で、プレミアム商品の価格は 15 USD です。

商品を追加ページに移動し、2 つの商品を作成します。商品ごとに 1 つの価格を追加し、それぞれに毎月の継続請求期間を設定します。

  • プレミアム商品: 追加機能を備えたプレミアムサービス

    • 価格:定額 | 15 USD
  • 基本商品: 最低限の機能を備えた基本サービス

    • 価格:定額 | 5 USD

価格を作成したら、価格 ID を記録しておき、他のステップで使用できるようにします。価格 ID は、price_G0FvDp6vZvdwRZ のように表示されます。

準備が完了したら、ページ右上の本番環境にコピーボタンを使用して、サンドボックスから本番環境に商品を複製します。

複数の請求期間を提供している場合は、決済を使用して、請求期間の長い顧客を アップセル し、より多くの収入を前払いで徴収します。

その他の料金体系モデルについては、請求書例 を参照してください。

Checkout Session を作成
クライアントおよびサーバー

サーバー側のエンドポイントを呼び出して Checkout Session を作成するチェックアウトボタンを Web サイトに追加します。

index.html
サンプル全体を表示
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <!-- Note: If using PHP set the action to /create-checkout-session.php --> <input type="hidden" name="priceId" value="price_G0FvDp6vZvdwRZ" /> <button type="submit">Checkout</button> </form> </body> </html>

アプリケーションのバックエンドで、フロントエンドが呼び出す セッションを作成 するエンドポイントを定義します。以下の値が必要です。

  • 顧客が登録するサブスクリプションの価格 ID。フロントエンドがこの値を渡します
  • success_url。お客様の Web サイト上にあり、決済完了後に顧客が戻されるページです

オプションとして以下を実行できます。

  • cancel_url を使用して、決済プロセスをキャンセルした場合に顧客が戻されるページを Web サイト上に提供します。
  • このコールでサブスクリプションへの 請求サイクルアンカー を設定します。
  • カスタムテキスト を使用して、サブスクリプションとキャンセルの規約、および顧客がサブスクリプションを更新またはキャンセルできる場所へのリンクを含めます。サブスクリプション登録者には メールリマインダーと通知 を設定することをお勧めします。

ステップ 2 で 1 回限りの価格を作成した場合は、その価格 ID も渡します。Checkout Session を作成したら、レスポンスで返された URL に顧客をリダイレクトします。

請求モード のタイプを flexible に設定することで、Checkout Session の作成時により正確で予測可能なサブスクリプション動作を有効にできます。Stripe API バージョン 2025-06-30.basil 以降を使用する必要があります。

注

lookup_keys を使用して、価格 ID ではなく価格を取得できます。例については、サンプルアプリケーション を参照してください。

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# The price ID passed from the front end. # price_id = params['priceId'] price_id = '{{PRICE_ID}}' session = Stripe::Checkout::Session.create({ success_url: 'https://example.com/success.html?session_id={CHECKOUT_SESSION_ID}', cancel_url: 'https://example.com/canceled.html', mode: 'subscription', line_items: [{ # For usage-based billing, don't pass quantity quantity: 1, price: price_id, }], subscription_data: { billing_mode: { type: 'flexible' } } }) # Redirect to the URL returned on the session # redirect session.url, 303

この例では、セッション ID を追加して success_url をカスタマイズします。成功ページのカスタマイズ の詳細を参照してください。

ダッシュボード で、顧客から受け付ける支払い方法を有効にします。決済は 複数の支払い方法 に対応しています。

サブスクリプションを提供して監視する
サーバー

サブスクリプション登録完了後、顧客は成功ページ success_url に戻り、同時に、checkout.session.completed Webhook が送信されます。checkout.session.completed イベントを受信したら、エンタイトルメント 機能を使ってサブスクリプションサービスを有効化してください。invoice.paidイベントの受信に合わせて継続的に(月次請求の場合は毎月)サービスを提供し続けます。invoice.payment_failed イベントを受信した場合は、顧客に決済失敗を通知し、カスタマーポータルで決済手段を更新してもらうよう案内してください。

システムロジックの次のステップを決定するには、イベントタイプを確認し、invoice.paid などの各 Event オブジェクト のペイロードを解析します。データベースに subscription.id と customer.id の Event オブジェクトを保存して確認に使用します。

テスト目的では、ワークベンチ の イベントタブ でイベントを監視できます。本番環境では、Webhook エンドポイントを設定し、適切なイベントタイプに登録します。STRIPE_WEBHOOK_SECRET キーが不明な場合は、ワークベンチの Webhook タブ の送信先の詳細ビューに移動して表示します。

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/webhook' do webhook_secret =
'{{STRIPE_WEBHOOK_SECRET}}'
payload
= request.body.read if !webhook_secret.empty? # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, webhook_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature puts '⚠️ Webhook signature verification failed.' status 400 return end else data = JSON.parse(payload, symbolize_names: true) event = Stripe::Event.construct_from(data) end # Get the type of webhook event sent event_type = event['type'] data = event['data'] data_object = data['object'] case event_type when 'checkout.session.completed' # Payment is successful and the subscription is created. # You should provision the subscription and save the customer ID to your database. when 'invoice.paid' # Continue to provision the subscription as payments continue to be made. # Store the status in your database and check when a user accesses your service. # This approach helps you avoid hitting rate limits. when 'invoice.payment_failed' # The payment failed or the customer doesn't have a valid payment method. # The subscription becomes past_due. Notify your customer and send them to the # customer portal to update their payment information. else puts "Unhandled event type: \#{event.type}" end status 200 end

モニタリングが必要な最小限のイベントタイプ:

イベント名説明
checkout.session.completed顧客が Checkout Session を正常に完了したときに送信され、新しい購入についてお知らせします。
invoice.paid決済が成功すると請求期間ごとに送信されます。
invoice.payment_failed請求期間ごとに、顧客の決済手段に問題がある場合に送信されます。

監視するイベントの詳細については、サブスクリプション Webhook を参照してください。

カスタマーポータルを設定する
ダッシュボード

カスタマーポータル を使用すると、顧客は既存のサブスクリプションと請求書を直接管理できます。

ダッシュボード を使用してポータルを設定します。少なくとも、顧客が決済手段を更新できるように ポータルを設定 してください。

ポータルセッションを作成する
サーバー

フロントエンドが呼び出すカスタマーポータルセッションを作成 するエンドポイントを定義します。CUSTOMER_ID は、Checkout Session で作成されたものであり、checkout.session.completed イベントの処理中に保存した顧客 ID です。ダッシュボードで、ポータルのデフォルトのリダイレクトリンクを設定することもできます。

サイトのページを示す return_url 値をオプションで渡して、サブスクリプションの管理を終えた顧客をこのページにリダイレクトします。

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
サンプル全体を表示
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# This is the URL that users are redirected to after they're done # managing their billing. return_url =
'{{DOMAIN_URL}}'
customer_id
=
'{{CUSTOMER_ID}}'
session
= Stripe::BillingPortal::Session.create({ customer: customer_id, return_url: return_url, }) # Redirect to the URL for the session # redirect session.url, 303

顧客をカスタマーポータルに移動させる
クライアント

フロントエンドで、カスタマーポータルへのリンクを提供するボタンを success_url のページに追加します。

success.html
サンプル全体を表示
<html> <head> <title>Manage Billing</title> </head> <body> <form action="/customer-portal" method="POST"> <!-- Note: If using PHP set the action to /customer-portal.php --> <button type="submit">Manage Billing</button> </form> </body> </html>

顧客がカスタマーポータルから退出すると、return_url に指定された Web サイトに戻ります。引き続き イベントを監視 することで、顧客のサブスクリプションのステータスを追跡することができます。

サブスクリプションのキャンセルなどのアクションを許可するようにカスタマーポータルを設定する場合は、追加イベントを監視 します。

導入をテストする

支払い方法をテストする

次の表を使用して、さまざまな支払い方法とシナリオをテストします。

決済手段シナリオテスト方法
BECS ダイレクトデビット顧客が BECS ダイレクトデビットによる支払いに成功します。アカウント番号900123456と BSB000000を使用して、フォームに入力します。確定された PaymentIntent のステータスは、まずprocessingに移行し、3 分後にsucceededステータスに移行します。
BECS ダイレクトデビット顧客の支払いが account_closed エラーコードで失敗します。アカウント番号 111111113と BSB 000000を使用して、フォームに入力します。
クレジットカードカード支払いは成功し、認証は必要とされません。クレジットカード番号 4242 4242 4242 4242 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
クレジットカードカード決済で認証が要求されます。クレジットカード番号 4000 0025 0000 3155 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
クレジットカードカードが insufficient_funds などの拒否コードで支払い拒否されます。クレジットカード番号 4000 0000 0000 9995 と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
SEPA ダイレクトデビット顧客が SEPA ダイレクトデビットによる支払いに成功します。口座番号 AT321904300235473204 を使用して、フォームに入力します。確定された PaymentIntent のステータスはまず、processing に移行し、3 分後に succeeded ステータスに移行します。
SEPA ダイレクトデビット顧客の PaymentIntent ステータスが processing から requires_payment_method に移行します。口座番号 AT861904300235473202 を使用して、フォームに入力します。

イベントを監視する

Webhook を設定して、アップグレードやキャンセルなどのサブスクリプション変更イベントをリッスンします。サブスクリプション Webhook イベント は、ダッシュボード または Stripe CLI で表示できます。

Billing 導入テスト の詳細を参照してください。

参照情報

  • 顧客に無料トライアル期間を提供する
  • 割引の適用
  • 比例配分 の管理
  • エンタイトルメントを導入して商品の機能へのアクセスを管理する
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc