# サブスクリプションの仕組み

継続支払いとサブスクリプションのライフサイクルを管理します。

顧客はサブスクにより継続課金を行い、プロダクトやサービスにアクセスできます。サブスクを作成すると、Stripe により自動的に請求書が生成され、決済の回収が試行され、ライフサイクル全体にわたりサブスクのステータスが管理されます。サブスクは、作成からキャンセルまで、予測可能な一連の状態を経て移行します。

1 回限りの決済とは異なり、サブスクでは今後の請求サイクルのために顧客と決済手段の情報を保存する必要があります。Stripe は決済の再試行ロジック、督促、ステータスの移行を処理します。

## サブスクリプションのライフサイクル

以下のサブスクの各ライフサイクルフェーズは、[Subscription オブジェクト](https://docs.stripe.com/api/subscriptions/object.md)のステータス変更にマッピングされます。これらのステータスを理解することで、アクセスのプロビジョニング、顧客への通知、エラーの処理を行うタイミングを把握できます。ステータス間の移行の監視および処理には、[Webhook イベント](https://docs.stripe.com/billing/subscriptions/webhooks.md#state-changes)を使用できます。

### 定期支払いを作成する

[ダッシュボード](https://dashboard.stripe.com/subscriptions?status=active)または [Subscriptions API](https://docs.stripe.com/api/subscriptions/create.md) で新しいサブスクを作成します。生成される [Subscription オブジェクト](https://docs.stripe.com/api/subscriptions/object.md)には、登録された顧客、[プロダクト](https://docs.stripe.com/api/products.md)、[価格](https://docs.stripe.com/api/prices/object.md)、およびサブスクの現在のライフサイクル状態を反映する `status` が含まれます。

即時決済が必要なサブスクを作成すると、Stripe は [Invoice](https://docs.stripe.com/billing/invoices/subscription.md) および [PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) も作成します。サブスクの初期ステータスは `incomplete` であり、顧客が最初の請求書を支払った後に `active` になります。

> ACH デビットなど、決済確定のタイミングが*遅延する* (A payment method that can't immediately return payment status when a customer attempts a transaction (for example, ACH debits). Businesses commonly hold an order in a pending state until payment is successful with these payment methods)決済手段では、ステータスが異なる場合があります。詳細については、[遅延型の決済確定](https://docs.stripe.com/billing/subscriptions/overview.md#delayed-payment-confirmation)をご覧ください。

サブスクの決済の回収と失敗処理のデフォルトは、決済手段によって異なります。API では、サブスクの [payment_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) を設定して、デフォルトを上書きできます。

サブスクの初回の請求を遅らせるために[トライアル期間](https://docs.stripe.com/billing/subscriptions/trials.md)を作成した場合、初期ステータスは `trialing` となり、トライアルが終了して決済が成功すると、サブスクは自動的に `active` に移行します。

### 請求書を処理する

`collection_method` が `charge_automatically` に設定されているサブスクの場合、サブスクの作成時に Stripe はステータスが `open` の[請求書](https://docs.stripe.com/billing/invoices/subscription.md)を作成します。顧客の支払い期限は 23 時間です。この期間中、サブスクのステータスは `incomplete` となり、請求書のステータスは `open` のままです。この 23 時間の期間は、*オンセッション* (A payment is described as on-session if it occurs while the customer is actively in your checkout flow and able to authenticate the payment method) で支払いを行う顧客に対応するものです。23 時間経過後に顧客がアプリケーションに戻ってきた場合は、その顧客に新しいサブスクを作成してください。

`collection_method` が `send_invoice` に設定されているサブスクの場合、Stripe は、設定可能な期日が記載された請求書へのリンクを顧客にメールで送信します。トライアルのないサブスクの場合、初回の請求書が未払いであっても、サブスクの初期ステータスは `active` になります。

詳細については、[サブスクの請求書](https://docs.stripe.com/billing/invoices/subscription.md)をご覧ください。

### 決済を確認

`collection_method` が `charge_automatically` に設定されているサブスクの場合、顧客が請求書を支払うと、サブスクは `active` に更新され、請求書は `paid` に更新されます。[invoice.paid](https://docs.stripe.com/billing/subscriptions/webhooks.md#events) イベントをリッスンするか、サブスクのステータスが `active` であることを確認します。

Stripe では、初回の請求書を作成する際にサブスクの [current_period_start](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-items-data-current_period_start) を設定します。支払いを後から完了しても、初回の請求期間の開始日は変更されません。決済手段で顧客によるアクションが必要となり、その完了が遅れた場合、アクセス権を付与した時点で初回の請求期間の残り時間は少なくなります。

これらのサブスクの場合、顧客が 23 時間以内に支払わないと、サブスクは `incomplete_expired` に更新され、請求書は `void` になります。アクセスを再有効化するには、新しいサブスクを作成します。

詳細については、[サブスクリプションステータス](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-statuses)と[決済ステータス](https://docs.stripe.com/billing/subscriptions/overview.md#payment-status)をご覧ください。

### 商品へのアクセスを提供する

サブスクが `active` になると、Stripe は登録されたプロダクトに関連付けられている各機能の有効な[エンタイトルメント](https://docs.stripe.com/billing/entitlements.md)を作成します。顧客がサービスにアクセスした際に、その有効なエンタイトルメントを使用して、サブスクに含まれる機能へのアクセスを許可します。

あるいは、Webhook イベントで[有効なサブスクリプションを追跡](https://docs.stripe.com/billing/subscriptions/webhooks.md#active-subscriptions)し、そのアクティビティに基づいて顧客向けに商品をプロビジョニングします。

### サブスクリプションを更新する

[既存のサブスクリプション](https://docs.stripe.com/billing/subscriptions/change.md)は、キャンセルして再作成することなく、必要に応じて変更できます。最も重要な変更には、サブスクリプション価格の[アップグレードやダウングレード](https://docs.stripe.com/billing/subscriptions/change-price.md)、有効なサブスクリプションの[決済回収](https://docs.stripe.com/billing/subscriptions/pause-payment.md)の一時停止などがあります。

[Stripe Checkout](https://docs.stripe.com/payments/checkout.md) の組み込みでは、セッションのサブスクリプションが `incomplete` 場合、サブスクリプションまたはその請求書を更新できません。[checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) イベントをリッスンして、セッションの完了後に更新を行うことができます。セッションのサブスクリプションをキャンセルしたり、サブスクリプションの請求書を無効にしたり、請求書を回収不能としてマークしたりする場合は、代わりに[セッションを期限切れにする](https://docs.stripe.com/api/checkout/sessions/expire.md)こともできます。

### 未払いのサブスクリプションを処理する

顧客がサブスクの請求書を支払わない場合、Stripe では以降の回収試行が一時停止されます。サブスクでは請求期間ごとに請求書が生成され続けますが、これらは `draft` ステータスのままになります。サブスクのステータス (`past_due` または `unpaid`) は、ダッシュボードの[失敗した支払いの設定](https://dashboard.stripe.com/settings/billing/automatic#manage-failed-payments)によって異なります。

無効化された請求書はサブスクのステータスに影響しません。Stripe は、無効化されていない直近の請求書からステータスを決定します。詳細については、[失敗したサブスクの決済](https://docs.stripe.com/billing/collection-method.md#failed-subscription-payments)をご覧ください。

### サブスクリプションをキャンセルする

サブスクリプションは、[請求期間の終了時](https://docs.stripe.com/billing/subscriptions/cancel.md#cancel-at-the-end-of-the-current-billing-period)や[設定した請求期間回数](https://docs.stripe.com/billing/subscriptions/cancel.md#subscription-schedules)の経過後など、いつでも[キャンセル](https://docs.stripe.com/billing/subscriptions/cancel.md)できます。

デフォルトでは、サブスクリプションを解約すると、新しい請求書の作成が無効になり、サブスクリプションに関するすべての未払い請求書の[自動回収が停止](https://docs.stripe.com/billing/subscriptions/cancel.md#handle-invoice-items-when-canceling-subscriptions)されます。また、サブスクリプションが削除され、[metadata](https://docs.stripe.com/metadata.md) と `cancellation_details` を除いて更新できなくなります。顧客が再度サブスクリプションを申し込む場合は、新しい決済情報を収集し、新しいサブスクリプションを作成する必要があります。

## サブスクリプションステータス

サブスクリプションには次のステータスがあります。サブスクリプションに対して実行できるアクションは、ステータスによって異なります。

| ステータス | 説明 |
| --- | --- |
| `trialing` | サブスクリプションは現在トライアル期間中であり、顧客にプロダクトを支障なく提供できます。初回の支払いが行われると、サブスクリプションは自動的に `active` に移行します。 |
| `active` | サブスクの状態は良好です。`past_due` のサブスクの場合、関連する最新の請求書を支払うか回収不能としてマークすると、サブスクのステータスが `active` に移行します。

`active` のステータスは、サブスクに関連付けられたすべての未払いの請求書が支払われたことを意味するものではありません。必要に応じて、その他の未払いの請求書を支払いのために未処理のままにするか、回収不能としてマークするか、または無効にすることができます。 |
| `incomplete` | 顧客がサブスクを有効にするには、23 時間以内に支払いを正常に完了する必要があります。あるいは、顧客認証など、支払いに[アクションが必要](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action)となる場合もあります。保留中の支払いがあり、PaymentIntent のステータスが `processing` の場合も、サブスクは `incomplete` になることがあります。 |
| `incomplete_expired` | サブスクリプションの初回の支払いが失敗し、サブスクリプションの作成から 23 時間以内に支払いが成功しませんでした。これらのサブスクリプションは顧客に請求されません。このステータスは、サブスクリプションの有効化に失敗した顧客を追跡するために存在します。 |
| `past_due` | 確定された直近の請求書に対する決済が失敗したか、試行されませんでした。サブスクでは引き続き請求書が作成されます。サブスクが `past_due` の間、Stripe は決済を再試行することがありますが、このステータスによって必ず決済が再試行されるわけではありません。サブスクの次のステータスは、ダッシュボードの[サブスクの設定](https://dashboard.stripe.com/settings/billing/subscriptions#manage-failed-payments)によって決定されます。すべての[決済の再試行](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md)が終了した後も請求書が未払いのままである場合、サブスクを `canceled` または `unpaid` に移行させるか、`past_due` のまま維持するかを設定できます。

サブスクを再度有効にするには、最新の請求書の支払いを顧客に依頼します。支払いが最新の請求書の期日より前に行われたか後に行われたかに関係なく、サブスクのステータスは `active` になります。 |
| `canceled` | サブスクリプションがキャンセルされました。キャンセル時に未払いのすべての請求書の自動回収が無効化されます (`auto_advance=false`)。これは、更新できない最終的なステータスです。 |
| `unpaid` | Stripe は、ダッシュボードの[サブスク設定](https://dashboard.stripe.com/settings/billing/subscriptions#manage-failed-payments)でこの結果が選択されている場合にのみ、サブスクのステータスを `unpaid` に設定します。直近の請求書は支払われていませんが、サブスクは維持されます。直近の請求書は未払いのままになり、請求書は引き続き作成されますが、決済は試行されません。`past_due` のときに決済の試行および再試行がすでに実行されているため、サブスクが `unpaid` になった場合は商品へのアクセスを取り消します。サブスクを `active` に移行するには、期日前に直近の請求書の支払いを行ってください。 |
| `paused` | サブスクリプションはデフォルトの決済手段なしでトライアル期間が終了し、[trial_settings.end_behavior.missing_payment_method](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment) が `pause` に設定されています。サブスクリプションの請求書は作成されなくなりました。顧客にデフォルトの決済手段を関連付けた後で、[サブスクリプションを再開](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#resume-a-paused-subscription)できます。 |

## 決済ステータス

[PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) は、すべての決済のライフサイクルを追跡します。サブスクリプションの決済期日になると、Stripe は[請求書](https://docs.stripe.com/billing/invoices/subscription.md)と PaymentIntent を生成します。PaymentIntent ID は請求書に関連付けられ、請求書オブジェクトとサブスクリプションオブジェクトからアクセスできます。

PaymentIntent のステータスは、請求書とサブスクリプションのステータスに影響を与えます。決済のさまざまな結果が、さまざまなステータスにどのようにマッピングされるかを以下に示します。

| 支払い結果 | PaymentIntent ステータス | 請求書のステータス | サブスクリプションのステータス |
| --- | --- | --- | --- |
| 成功 | `succeeded` | `paid` | `active` |
| カードエラーによる失敗 | `requires_payment_method` | `open` | `incomplete` |
| 認証による失敗 | `requires_action` | `open` | `incomplete` |

### 決済確定が遅延する決済手段

顧客が取引を試みた際に決済ステータスをすぐに返せない決済手段 (ACH デビットなど) では、サブスクのステータス移行処理が異なります。これらのタイプの決済手段を使用する場合、サブスクは作成後に直接 `active` に移行し、`incomplete` をスキップできます。後で決済が失敗した場合、Stripe は請求書を無効にしますが、サブスクは `active` のままになります。アクセス制御や再試行のロジックを設計する際には、この動作を前提として組み込みます。

以下のセクションでは、即時支払いを必要とするサブスクを作成する際の初回支払いの結果について説明します。以降の請求での支払いの失敗については、[失敗した継続課金の処理](https://docs.stripe.com/billing/subscriptions/overview.md#failed-recurring-payments)を参照してください。

### 初回支払いの成功

顧客のサブスクの初回支払いが成功した場合:

- PaymentIntent の `status` は `succeeded` に移行します。
- 請求書の `status` は `paid` です。
- サブスクの `status` は `active` です。
- 設定済みの Webhook エンドポイントに Stripe が `invoice.paid` イベントを送信します。

処理期間が長い[決済手段](https://docs.stripe.com/payments/payment-methods/integration-options.md)では、サブスクリプションは直ちに有効になります。このような場合、決済が成功するまで、PaymentIntent のステータスは `processing` サブスクリプションに対して `active` である可能性があります。

サブスクが有効になると、商品への[アクセスを提供](https://docs.stripe.com/billing/subscriptions/overview.md#provision-access)します。

### 初回支払いで決済手段が必要

[支払い拒否](https://docs.stripe.com/declines.md#issuer-declines)などの[カードエラー](https://docs.stripe.com/api/errors.md#errors-card_error)が原因で初回支払いに失敗した場合:

- PaymentIntent の `status` は `requires_payment_method` です。
- サブスクリプションの `status` は `incomplete` です。
- 請求書の `status` は `open` です。

これらのシナリオを処理するには、以下のステップに従います。

- 顧客に通知します。
- 新しい決済情報を徴収し、[PaymentIntent を確定](https://docs.stripe.com/api/payment_intents/confirm.md)します。
- サブスクリプションの [default payment method (デフォルトの支払い方法)](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) を更新します。
- Stripe は [Smart Retries](https://docs.stripe.com/invoicing/automatic-collection.md#smart-retries) を使用するか、カスタム [リトライルール](https://dashboard.stripe.com/account/billing/automatic) に基づいて決済を再試行します。
- [invoice.payment_failed](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md#invoice-payment-failed-webhook) イベントを使用して、サブスクリプション決済失敗イベントを監視し、更新を再試行します。請求書の決済試行後、その [next_payment_attempt](https://docs.stripe.com/api.md#invoice_object-next_payment_attempt) 値はダッシュボードの現在のサブスクリプション設定を使用して設定されます。

[サブスクリプションの支払い失敗を処理](https://docs.stripe.com/billing/subscriptions/webhooks.md#payment-failures)する方法は以下のとおりです。

### 失敗した継続課金を処理します。

サブスクの継続課金が失敗した場合は、`invoice.payment_failed` をリッスンします。[サブスクのステータスの変化を監視](https://docs.stripe.com/billing/subscriptions/webhooks.md#state-changes)し、`past_due` や `unpaid` への移行を検出します。決済手段を更新したり、未決済の請求を支払ったりできるように、顧客に通知します。イベントを処理する前に、[Webhook の署名を確認](https://docs.stripe.com/webhooks.md#verify-events)します。

失敗した支払いを再試行するには、[Smart Retries またはカスタムリトライのルール](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md)を設定します。[失敗した支払いの設定](https://dashboard.stripe.com/settings/billing/automatic)で、最後の再試行後にサブスクをどのように処理するかを選択します。アクセス権を無効にするタイミングや、`past_due` および `unpaid` のサブスクを再有効化する方法を判断するには、[サブスクのステータス表](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-statuses)を使用します。詳細については、[失敗した継続支払い](https://docs.stripe.com/billing/collection-method.md#handle-recurring-charge-failures)を確認してください。

### アクションが必要

一部の決済手段では、[3D セキュア認証](https://docs.stripe.com/payments/3d-secure.md) (3DS) による顧客認証が必要です。認証が必要かどうかは、[Radar ルール](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#three-ds-radar)とカード発行会社によって異なります。

顧客が決済を認証する必要があるために決済が失敗した場合:

- PaymentIntent の `status` は `requires_action` です。
- サブスクリプションの `status` は `incomplete` です。
- 請求書の `status` は `open` です。

これらのシナリオを処理するには、以下のステップに従います。

- [Webhook エンドポイント](https://docs.stripe.com/billing/subscriptions/webhooks.md)を使用して `invoice.payment_action_required` イベントの通知を監視します。これには認証が必要です。
- 顧客に認証が必要であることを通知します。PaymentIntent の Client Secret を取得し、それを [stripe.handleNextAction](https://docs.stripe.com/js/payment_intents/handle_next_action) に渡します。これにより、必要なステップが顧客に案内され、結果がアプリケーションに返されます。
- イベントの送信先で `invoice.paid` イベントをモニターし、決済の成功を検証します。`handleNextAction()` が完了する前に、ユーザーがアプリケーションを離れる可能性があります。決済が成功したかどうかを検証することにより、商品を正しく提供できるようになります。

## See also

- [サブスクリプションの導入を設計](https://docs.stripe.com/billing/subscriptions/design-an-integration.md)
- [サブスクの実装を構築する](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md)
- [サブスクリプションクイックスタート](https://docs.stripe.com/billing/quickstart.md)
