サブスクリプションでトライアル期間を使用する
サブスクリプションの作成時に次のように trial_end
引数を指定することで、無料のトライアル期間を設けて顧客のサブスクリプションを開始できます。
trial_end
パラメーターは、トライアルが終了する厳密な時点を示すタイムスタンプを取得します。サブスクリプションの作成時に、現時点からトライアルの継続期間の日数を表す整数である trial_period_days パラメーターを代わりに使用することもできます。
トライアル期間を指定してサブスクリプションを作成するときに、顧客の支払い方法は必要ありません。即時インボイスが作成されますが、請求金額は $0 になります。
トライアルの終了時にサブスクリプションの status
が paused
でない場合、インボイスが生成され、invoice.created
イベント通知が送信されます。約 1 時間後に、Stripe はそのインボイスの請求を試行します。トライアルの終了時に顧客の新しい請求サイクルも開始されます。
トライアルを早期終了するには、サブスクリプションの更新 API コールを実行して、trial_end
の値に新しいタイムスタンプを設定します。即時終了する場合は、次のように now を設定します。
トライアルを請求サイクルアンカーと組み合わせる
API バージョン 2018-02-05
では、トライアルを billing_cycle_anchor
と組み合わせることもできるようになりました。これにより、無料期間の後に比例配分 (日割り / 秒割り計算) 期間が続き、その後に固定の請求サイクルが開始されます。
たとえば、今日が 15 日で、顧客に無料の 7 日間のトライアルを (22 日まで) 提供し、翌月 1 日から通常の請求を開始するとします。この設定は、API でトライアルを billing_cycle_anchor
と組み合わせることにより実行できます (現在ダッシュボードでは利用できません)。
この例では、顧客は 22 日に (翌月 1 日までの期間に対して)_「比例配分 (日割りおよび秒割り計算) を適用した」_金額のインボイスを受け取ります。その後、翌月 1 日に全額を再度請求され、さらに翌々月 1 日に再度請求という形で続きます。
トライアルを従量課金と組み合わせる
従量課金を使用したサブスクリプションのトライアル期間を使用できます。トライアル期間中に発生した使用量は、請求サイクルの終了時に顧客に対して請求される総額に含められません。トライアル期間の終了後に使用量が発生し、それが次回の請求サイクルの終了時に請求されます。
トライアルと使用量の集計
aggregate_usage
パラメーターを使用して、動作を last_ever
に設定すると、その使用量がトライアル期間内に発生した場合でも、顧客はトライアル期間内の最新の使用量記録に対して請求されます。
たとえば、1 カ月の無料期間を設けてファイルストレージを提供する場合、その後顧客がサービスを使用してファイルの保存を継続すると、最初の月に対して顧客に請求します。
一時停止されたサブスクリプションの従量課金
従量制料金のサブスクリプションアイテムがあるサブスクリプションは、請求金額の決定に総使用量が必要であるため、後払いで請求されます。一時停止されたサブスクリプションでは、関連付けられたサブスクリプションアイテムの使用量イベントを作成できません。請求サイクルの起点を変更しないままで請求期間の途中でサブスクリプションを再開できるため、サブスクリプションの再開後のタイムスタンプで使用量イベントのインボイスを作成できます。
トライアルを add_invoice_items と組み合わせる
サブスクリプションのトライアル期間は、1 回限りの価格および add_invoice_items
と組み合わせることができます。これは、1 回限りの手数料またはアドオンを、トライアルの開始と同時に請求する場合に使用することが考えられます。この設定により、トライアルの開始時に、1 回限りのアイテムの金額でインボイスが即時発行されます。
トライアルとプロモーションのコンプライアンス要件
トライアルを提供する場合は、無料であるかどうかにかかわらず、カードネットワークの要件に準拠する必要があります。これには、無料トライアルを提供する場合や、最初の数カ月間は割引料金で顧客に請求し、その後自動的に通常レートを請求する場合などが含まれます。Stripe のトライアル機能を使用する際は、 次のように Stripe ダッシュボードでメッセージの設定を有効にして、要件を満たすようにすることができます。
ユーザーに支払いの成功を通知する場合、 Stripe はトライアルとキャンセルの URL に関する情報を自動的に通知に表示します。
これらの設定を使用しない場合でも、要件に準拠する義務があります。
顧客のメールアドレスが有効であれば、トライアルの終了 7 日前にリマインダーが送信されます。トライアル期間が 7 日より短い場合は、トライアルを開始するとすぐにリマインドメールが送信されます。トライアルが更新された場合は、リマインドメールが再送されます。
トライアル中に、トライアルのリマインダーとサブスクリプションの更新リマインダーの両方が有効な場合、顧客はトライアルの終了リマインダーのみを受信します。更新メールは、以降の請求期間に送信されます。
キャンセルに関するポリシーのリンクは、他のトライアル情報とともに顧客の領収書に表示される URL です。この情報は、すべてのカード支払いに含められます。トライアルの終了 7 日前に顧客に送信されるリマインドメールには、キャンセルの URL も含まれます。
明細書表記について、インボイスに手動で statement descriptor (明細書表記) を設定する場合は、トライアルの文字が付加されないため、追加する必要があります。product statement descriptor (商品の明細書表記) を使用する場合は、トライアルの文字が自動的に付加されます。明細書表記が 10 文字より長い場合は、トライアルの文字が付加されても顧客に意味が通じることを確認してください。22 文字の制限があるため、10 文字目以降は * TRIAL OVER
で上書きされます。
明細書表記を手動で設定していない場合、または商品の明細書表記を使用している場合は、アカウントの明細書表記にトライアルの文字が追加されます。必要に応じて短い表記を設定して、トライアルの文字が正しく表示されるようにすることができます。
Stripe の機能を使用せずに要件を満たす方法
Stripe のトライアル機能を使用せずにトライアルやプロモーションを提供する場合にも、要件に準拠する必要があります。invoice.upcoming イベントをリッスンして、メール通知を送信する時期を決定できます。プロモーションが終了したことを示すテキストを明細書表記に追加するには、以下を実行します。
customer.subscription.updated
イベントをリッスンします- トライアルまたはプロモーションが終了したかどうかを確認します
- サブスクリプションの
latest_invoice
の明細書表記を更新します
最新のインボイスは、作成後 1 時間以内の、下書きステータスである間に更新する必要があります。
決済手段を収集せずに無料トライアルを作成する
ダッシュボード、API、Checkout で決済情報を収集せずに、サブスクリプションの無料トライアルに顧客を登録することができます。サブスクリプションを作成する際、トライアル期間中に顧客が決済手段を指定しなかった場合にサブスクリプションをキャンセルまたは一時停止するように指定できます。サブスクリプションをキャンセルまたは一時停止するには、サブスクリプションを作成または更新するときに trial_settings.end_behavior.missing_payment_method
パラメーターを設定します。
- サブスクリプションをキャンセル: 決済手段が指定されずに無料トライアルのサブスクリプションが終了する場合、サブスクリプションが即時にキャンセルされます。将来、顧客が有料プランに登録する場合は、別のサブスクリプションを作成できます。利用可能な決済手段がない状態でトライアルが終了した場合にサブスクリプションをキャンセルするには、
missing_payment_method=cancel
を設定します。 - サブスクリプションを一時停止: 決済手段が指定されずに無料トライアルのサブスクリプションが終了する場合、サブスクリプションは一時停止され、再開されるまでサイクルは動きません。サブスクリプションが一時停止される場合は、(サブスクリプションの支払いの回収が一時停止される場合とは異なり) インボイスは生成されません。サブスクリプションが一時停止された後で顧客が決済手段を追加した場合は、同じサブスクリプションを再開できます。サブスクリプションは無期限に一時停止したままにすることができます。利用可能な決済手段がない状態でトライアルが終了した場合にサブスクリプションを一時停止するには、
missing_payment_method=pause
を設定します。
また、決済手段が存在しない場合は、トライアルの終了時にインボイスに missing_payment_method=create_invoice
を設定します。インボイスの確定時に決済手段が指定されていない場合、サブスクリプションは past_due
になります。
無料トライアルに関するメッセージの設定で、顧客の決済情報を収集するためのリマインドメールを設定します。
決済手段が指定されない無料トライアルがキャンセルされるように設定する
顧客から決済情報を収集せずにサブスクリプションの無料トライアルを作成し、決済手段が指定されないままトライアルが終了した場合にサブスクリプションがキャンセルされるように設定するには、ダッシュボード、API、または Checkout を使用します。
決済手段が指定されない無料トライアルが一時停止されるように設定する
顧客から決済情報を収集せずにサブスクリプションの無料トライアルを作成し、決済手段が指定されないままトライアルが終了した場合にサブスクリプションが一時停止されるように設定するには、ダッシュボード、API、または Checkout を使用します。
トライアルの終了前に顧客から決済の詳細を収集する
顧客のトライアルが間もなく期限切れとなるときにリマインドメールを自動的に送信するようにサブスクリプションを設定します。トライアルを提供する際にはカードネットワークの要件に準拠する必要があります。詳細については、トライアルとプロモーションのコンプライアンス要件をご覧ください。
Webhook イベント
無料トライアルが変更されるたたびに、Events (イベント) がトリガーされます。実装でイベントが適切に処理されることを確認してください。たとえば、無料トライアルの終了前に顧客にメールを送信することをお勧めします。サブスクリプションの Webhook イベントで、詳細をご確認ください。
次の表では、無料トライアル終了前、トライアルサブスクリプションを一時停止またはキャンセルする場合、およびサブスクリプションを再開して有効になった場合にトリガーされるイベントについて説明しています。
イベント | 説明 | ユースケース |
---|---|---|
customer.subscription.deleted | サブスクリプションが終了すると送信されます。 | この Webhook への対応として商品へのアクセスの提供を停止します。決済手段の指定がなく、サブスクリプションの missing_payment_method の終了時の動作が cancel に設定されている場合は、無料トライアルが終了すると、サブスクリプションは canceled ステータスに移行し、この Webhook を送信します。 |
customer.subscription.resumed | サブスクリプションが一時停止されなくなったときに送信されます。このイベントを受け取ったら、サブスクリプションが一時停止されていたときに商品へのアクセスが取り消されていた場合には、商品へのアクセスを顧客に付与します。 | 一時停止されたサブスクリプションが再開されると、有効なサブスクリプションに変換されます。サブスクリプションを再開すると、インボイスと対応する支払いインテントが生成される場合があります。この支払いが行われないと、サブスクリプションが paused ステータスから移行できません。 |
customer.subscription.paused | サブスクリプションが完全に一時停止されると送信されます。サブスクリプションが再開されるまで請求は発生しません。このイベントを受け取ったら、顧客が決済手段を追加して、サブスクリプションが再開されるまで、商品への顧客のアクセスを取り消すことができます。 | この Webhook への対応として商品へのアクセスの提供を停止します。決済手段の指定がなく、サブスクリプションの missing_payment_method の終了時の動作が pause に設定されている場合は、無料トライアルが終了すると、サブスクリプションが paused ステータスに移行し、この Webhook を送信します。この場合サブスクリプションは、明示的に再開されるまで paused のままになります。 |
customer.subscription.trial_will_end | トライアル期間終了の 3 日前に送信されます。トライアル期間が 3 日未満になると、このイベントがトリガーされます。 | トライアル期間終了の 3 日前に、顧客にメールを自動送信するように、サブスクリプションを設定します。 |
カスタマーポータルを使用して支払いを回収する
決済手段を収集せずに顧客のサブスクリプションを作成した後、顧客を Billing カスタマーポータルにリダイレクトして、支払いの詳細を追加してもらうことができます。
まず、Billing カスタマーポータルを設定して、顧客がサブスクリプションを各自で管理できるようにします。
次に、顧客から請求先情報を収集します。
customer.subscription.trial_will_end
イベントをリッスンします。- サブスクリプションにデフォルトの決済手段がない場合、Customers API を使用して顧客のメールアドレスを取得し、お客様のサイトへのリンクを含むメッセージを送信します。メールアドレスに顧客 ID を埋め込むと便利です (例:
https://example.com?...&customer={{CUSTOMER_ID}}
)。 - 顧客がサイトにアクセスしたら、前のステップの顧客 ID を使用してカスタマーポータルセッションを作成します。
- 顧客をカスタマーポータルにリダイレクトします。顧客はここで支払いの詳細を使用してサブスクリプションを更新できます。
顧客がカスタマーポータルでサブスクリプションを再有効化できるようにする
カスタマーポータルを使用して、paused
でサブスクリプションのトライアルが終了した顧客のサブスクリプションを有効にするには、ダッシュボードで新しいサブスクリプションを作成するときに、決済手段の機能を使用せずに無料トライアルを有効にします。
トライアルの終了前にリマインドメールを送信する
トライアルの終了前にリマインドメールを送信するには、サブスクリプションおよびメールの設定で Stripe がオンラインで提供するページにリンクしますオプションを選択します。リマインドメールには、顧客に支払いの詳細の追加または更新をしてもらうためのリンクを含めます。テスト環境では無料トライアルのリマインドメールは送信されません。詳細については、無料トライアルのリマインドメールを設定する方法をご覧ください。
独自のメールを顧客に送信するには、customer.subscription.trial_will_end
イベントを使用します。ダッシュボードにイベントが表示された後に、メールが送信されたことが確認されます。
顧客がトライアルの終了前に支払い情報を提供した場合はトライアルを変換する
サブスクリプションと次回のインボイスは、トライアルの開始時に作成され、顧客が決済手段を指定しているときはトライアルの終了時に有効になります。
決済手段が指定されていない場合に一時停止を設定する
無料トライアルが終了した後、個別のサブスクリプションでデフォルトの決済手段を利用できない場合は、そのサブスクリプションを一時停止するように設定することができます。
一時停止中でもサブスクリプションを更新することができます。サブスクリプションの一時停止中は顧客は請求されないため、通常は比例配分を生成する更新 (アイテムの追加、価格やプランの変更、数量の変更など) によって比例配分のラインアイテムが生成されることはありません。サブスクリプションが paused
ステータスに移行した後でトライアルを延長する場合は、トライアルを設定する前に、サブスクリプションを再開する必要があります。
Stripe は、サブスクリプションと顧客の default_source
と default_payment_method
を調べて、トライアルの終了時にサブスクリプションの決済手段が指定されていないかどうかを判断します。
一時停止されているサブスクリプションを再開する
一時停止したサブスクリプションを再開するには、ダッシュボード、API、カスタマーポータル、またはオンライン請求書ページを使用します。
サブスクリプションのインボイス作成
一時停止されたサブスクリプションではインボイスは作成されません。インボイスを引き続き作成する場合は、pause_collection
を使用して支払いの回収を停止し、インボイスを作成して請求期間を先に進めます。
一時停止されていたサブスクリプションが再開されたときに生成されるインボイスをプレビューするには、subscription_resume_at を指定します。