📌

Stripeサブスク支払い失敗と再開について

2023/04/08に公開

この記事で分かること

  • サブスクリプションの支払い失敗時の挙動について
  • 支払い失敗後のサブスクリプションの再開方法について

サブスクリプションとインボイスのステータス一覧

必要があれば参考にしてください。
太字は本記事で出てくるステータス

サブスクリプション

ステータス 内容
incomplete サブスクリプションが作成され、支払いがまだ完了していない状態。
incomplete_expired サブスクリプションが作成されてから7日以内に支払いが完了しなかったため、無効化された状態。
trialing トライアル期間中の状態。
active 支払いが完了し、サブスクリプションが有効な状態。
past_due 次の請求が支払われなかったため、サブスクリプションが停止した状態。
canceled サブスクリプションがユーザーまたは管理者によってキャンセルされた状態。
unpaid 支払いが失敗し、サブスクリプションが停止した状態。
void サブスクリプションが無効になった状態。
incomplete_payment サブスクリプションの支払いが失敗したため、まだ有効ではない状態。

インボイス

ステータス 内容
draft インボイスが作成され、まだ送信されていない状態。
open インボイスが送信され、支払いが未完了の状態。
paid 支払いが完了した状態。
uncollectible 請求金額が回収不能となり、追加の請求が不可能な状態。
void インボイスが無効になった状態。
marked_uncollectible 請求金額が回収不能となり、請求が不可能な状態にマークされた状態。
deleted インボイスが削除された状態。

サブスクリプションの支払い失敗時の挙動について

支払い失敗時の挙動はStripe管理画面より設定できる。

  1. 右上の歯車マークをクリック
  2. 「サブスクリプションおよびメール」をクリック

    設定画面へ

    ここから設定

設定で選べる内容

サブスクリプション

選択肢 支払い失敗後のステータス
サブスクリプションをキャンセル canceled
サブスクリプションを未払いとしてマーク unpaid
サブスクリプションを現状のままにする 変化なし

ユースケースに応じて設定を変える(後述)

インボイス

選択肢 支払い失敗後のステータス
インボイスを現状のままにする 変化なし(open)
インボイスを回収不可とマーク marked_uncollectible

支払いに失敗したインボイスを回収する場合は"現状のまま"を、回収しない場合は"回収不可"を選択する。

サブスクリプションの再開方法について

"サブスクリプションをキャンセル"の場合

  • 一度サブスクリプションをキャンセルさせると、そのサブスクリプション自体を再開させる手段はない。
  • 再度支払いを行いたい場合は、新規でのサブスクリプションの登録となる。
  • サブスクリプションの期限が設定されていたり、クーポン(割引)が適用されているサブスクリプションの場合はその状態もリセットされてしまうので再開時の実装に工夫が必要。

"サブスクリプションを未払いとしてマーク"の場合

  • サブスクリプションのステータスが未払いとなり、支払いストップ状態でサブスクリプションが保持される。
  • 未払い状態で次のサブスクリプションの支払日が来るとインボイスは作成されるが確定せず、下書きの状態(draft)で保持される。
  • 最新の請求書の支払いを行うとサブスクリプションのステータスが有効(active)となり、その後の支払いも再開する。
    (最新のインボイスのIDはサブスクリプションオブジェクトのlatest_invoiceに格納されているのでそれを元に決済可能。)
  • 支払いサイクルや支払い期限、クーポン(割引)などもそのままの状態で再開できる。


支払い失敗後、次の支払日が3回分経過した後に最新のインボイスを再決済してもらった場合

残った未払い、下書きのインボイスを決済させたい場合

方法1)手動で対応

Stripe設定画面より未払いのインボイスのページに行き、手動でその場で決済もしくはユーザーに請求書を再送して決済してもらう。

方法2)APIで対応

List all invoices APIを使用し、対象のインボイスIDを取得。
そのIDを元に決済を行う。
https://stripe.com/docs/api/invoices/list

まとめ

サブスクリプションの支払い失敗時の挙動は3種類から、インボイスは2種類から選択できる。
その挙動の選択により、サブスクリプションの復帰可否が変わる。

それに対して、

  • 支払い失敗から再決済までの期間にWebサービスの利用をストップさせるのかさせないのか。
  • サブスクリプションに対しての期限やクーポンの適用があるか
  • サブスクリプションの支払いサイクルをリセットしたいか

など、Webサービスの仕様や実装の方針によって適切な設定を選ぶ必要がある。

Discussion