# Stripe Billing でサブスクリプションを作成する

Connect では、顧客や連結アカウントのサブスクリプションを作成できます。

*Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients) の詳細については、[概要](https://docs.stripe.com/connect.md)をご覧ください。*サブスクリプション* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis)の取引は、[Stripe Billing の料金体系](https://stripe.com/billing/pricing)に従います。

サービスとしてのソフトウェア (SaaS) とマーケットプレイスのビジネスは、Stripe Connect を使用して、自社、顧客、連結アカウントの間で支払いを振り分けます。Connect を使用して支払いや*入金* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit)を振り分け、Stripe Billing を使用して経常収益モデルをサポートすることができます。

## ユースケース

連結アカウントに対して、[サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md)を作成して、支払い回収で複数の方法に対応できます。ダイレクト支払いまたはディスティネーション支払いを使用して連結アカウントの顧客のサブスクリプションを作成して、顧客がプラットフォームと直接取引するようにして、プラットフォームの使用手数料を連結アカウントに請求できます。
 (See full diagram at https://docs.stripe.com/connect/subscriptions)
以下のユースケースでは、Stripe Billing を使用して、最終顧客から連結アカウントへのサブスクリプションを作成し、プラットフォームの最終顧客に請求し、さらに連結アカウントに請求する方法を説明しています。

| ユースケース                                                                                                       | 説明                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| [最終顧客から連結アカウントへのサブスクリプションを作成する](https://docs.stripe.com/connect/subscriptions.md#customer-connected-account) | 連結アカウントに最終顧客のサブスクリプションを作成します。このサブスクリプションは複数の支払い回収方法に対応しています。この例では、[Prices](https://docs.stripe.com/api/prices.md) が連結アカウントにあります。 |
| [サブスクリプションを作成してプラットフォームの顧客に請求する](https://docs.stripe.com/connect/subscriptions.md#customer-platform)         | マーケットプレイスでは、連結アカウントが関与することなく、メンバーシップのサブスクリプションを直接提供できます。この例では、[Prices](https://docs.stripe.com/api/prices.md) がプラットフォームにあります。    |
| [サブスクリプションを作成して連結アカウントに請求する](https://docs.stripe.com/connect/subscriptions.md#connected-account-platform)    | プラットフォームは連結アカウントのサブスクリプションを作成できます。この例では、[Prices](https://docs.stripe.com/api/prices.md) がプラットフォームにあります。                          |

### 制限

Connect でサブスクリプションを使用する際には、以下の制限があります。

- お客様のプラットフォームで作成していないサブスクリプションは、更新もキャンセルもできません。
- お客様のプラットフォームで作成していない請求書、またはお客様のプラットフォームで作成していない請求書アイテムが含まれる請求書に対して `application_fee_amount` を追加することはできません。
- 顧客のサブスクリプションを管理できるのは、Stripe ダッシュボードの全機能にアクセスできる連結アカウントのみです。その他の連結アカウントの場合、プラットフォームが顧客のサブスクリプションを管理する必要があります。
- プラットフォームから切断してもサブスクリプションは自動的にキャンセルされません。切断後にサブスクリプションをキャンセルする必要があります。[連結アカウントのアクティビティを監視するには、Webhook](https://docs.stripe.com/connect/webhooks.md)を使用できます。

## 最終顧客から連結アカウントへのサブスクリプションを作成する

プラットフォームを構築する場合、連結アカウントの顧客に対するサブスクリプションを作成し、オプションで支払いごとにプラットフォームに対する手数料を回収することができます。
 (See full diagram at https://docs.stripe.com/connect/subscriptions)
この例では、顧客がお気に入りの著者に登録し、月額手数料を支払って各著者のプレミアムブログ投稿を受信できるオンライン出版プラットフォームを構築します。

## Before you begin

顧客または連結アカウントのサブスクリプションを作成する前に、以下を実行する必要があります。

1. プラットフォームで資金を受け取る個人ごとに[連結アカウント](https://docs.stripe.com/connect/accounts.md)を作成します。オンライン出版の例の連結アカウントは著者を表しています。
1. 料金体系モデルを作成します。この例では、定額料金の[料金体系モデル](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate)を作成して顧客に定期的に手数料を請求しますが、ユーザー数ベースと使用量ベースの料金体系もサポートされています。
1. 連結アカウントに登録する個人ごとに[指定の支払い方法を持つ顧客](https://docs.stripe.com/billing/customer.md#manage-customers)を作成します。オンライン出版の例では、著者に登録する読者ごとに顧客を作成します。

### ダイレクト支払いとディスティネーション支払いのどちらかに決定する

ダイレクト支払いまたはディスティネーション支払いを使用して、顧客の支払いを連結アカウントとプラットフォームで分割できます。

ダイレクト支払いでは、プラットフォームの名前ではなく作成者の名前が明細書表記に表示されるため、顧客がプラットフォームの存在に気付くことはありません。オンライン出版の例では、読者は著者と直接やり取りします。

ダイレクト支払いは、Stripe ダッシュボードの全機能へのアクセスが可能な連結アカウント (Standard アカウントを含む) に推奨されます。

プラットフォームが Stripe の手数料、返金、チャージバックを負担するように設定する場合は、ディスティネーション支払いを使用します。オンライン出版の例の場合、顧客は特定の著者に直接登録するのではなく、出版プラットフォームに登録します。

デスティネーション支払いは、Express ダッシュボードにアクセスできる連結アカウント、または Stripe がホストするダッシュボードにアクセスできない連結アカウント (Express アカウントと Custom アカウントを含む) にお勧めします。

Connect の各種の支払いの詳細については、[支払いタイプ](https://docs.stripe.com/connect/charges.md#types)をご覧ください。

### ダイレクト支払いを使用してサブスクリプションを作成する

[Charges (支払い)](https://docs.stripe.com/api/charges/object.md)で連結アカウントに関連付けられたサブスクリプションを作成するには、[連結アカウントとして認証](https://docs.stripe.com/connect/authentication.md#stripe-account-header)された状態で[サブスクリプションを作成](https://docs.stripe.com/api.md#create_subscription)します。連結アカウントで、デフォルトの支払い方法と[Price (価格)](https://docs.stripe.com/api/prices.md)を持つ顧客を定義するようにしてください。デフォルトの支払い方法を持たない顧客を指定するには、`payment_behavior: "default_incomplete"` を設定します。[payment behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) の詳細をご確認ください。

`latest_invoice.confirmation_secret` を展開し、決済を確定するために必要な Payment Element を含めます。[Payment Elements](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements&api-integration=paymentintents#add-the-payment-element-to-your-page) の詳細をご覧ください。

アプリケーションにサブスクリプションの登録と決済フローを実装する方法の詳細な例については、[サブスクリプションの組み込み](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md)ガイドをご覧ください。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d "expand[0]=latest_invoice.confirmation_secret"
```

### デスティネーション支払いを使用してサブスクリプションを作成する

[Charge](https://docs.stripe.com/api/charges/object.md) がプラットフォームに関連付けられ、連結アカウントへの送金を自動的に作成するサブスクリプションを作成するには、`transfer_data[destination]` [値](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-transfer_data)として連結アカウント ID を指定して、[Create subscription (サブスクリプションの作成)](https://docs.stripe.com/api.md#create_subscription) コールを実行します。

`latest_invoice.confirmation_secret` を展開し、決済を確定するために必要な Payment Element を含めます。[Payment Elements](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements&api-integration=paymentintents#add-the-payment-element-to-your-page) の詳細をご覧ください。

必要に応じて [application_fee_percent](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-application_fee_percent) を指定できます。詳細については、[手数料を回収する](https://docs.stripe.com/connect/subscriptions.md#collect-fees)をご覧ください。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d "expand[0]=latest_invoice.confirmation_secret" \
  -d "transfer_data[destination]={{CONNECTEDACCOUNT_ID}}"
```

### サブスクリプションを作成する前のその他のステップ

デスティネーション支払いを作成するには、プラットフォームアカウントで顧客と価格の両方を定義します。プラットフォームで連結アカウントを作成しておく必要があります。顧客はプラットフォームアカウント内に存在する必要があります。デスティネーション支払いを使用する場合、プラットフォームが*マーチャントオブレコード* (The legal entity responsible for facilitating the sale of products to a customer that handles any applicable regulations and liabilities, including sales taxes. In a Connect integration, it can be the platform or a connected account)になります。

## サブスクリプションを作成してプラットフォームの最終顧客に請求する

Stripe Billing を使用すると、連結アカウントが関与することなく、顧客がプラットフォームと直接取引するサブスクリプションを作成できます。
 (See full diagram at https://docs.stripe.com/connect/subscriptions)
この例では、顧客がレストランのオンデマンドデリバリーを注文できるマーケットプレイスを構築します。このマーケットプレイスは、デリバリー手数料が無料のプレミアム月次サブスクリプションを顧客に提供します。プレミアムオファリングに登録する顧客は、マーケットプレイスに直接支払い、特定のデリバリーサービスやレストランには登録しません。

## Before you begin

顧客のサブスクリプションを作成する前に、以下を実行する必要があります。

1. 料金体系モデルを作成します。この例では、定額料金の[料金体系モデル](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate)を作成して顧客に定期的に手数料を請求しますが、ユーザー数ベースと使用量ベースの料金体系もサポートされています。
1. 請求先にするすべての顧客の[顧客](https://docs.stripe.com/billing/customer.md#manage-customers)レコードを作成します。

マーケットプレイスから売上を受け取るユーザーごとに[連結アカウント](https://docs.stripe.com/connect/accounts.md)を作成することもできます。オンデマンドレストランのデリバリーの例の場合、連結アカウントはレストランまたはデリバリーサービスです。ただし、顧客がマーケットプレイスに直接登録する場合、このステップは必要ありません。

### サブスクリプションを作成する

連結アカウントに売上を移動することなく、プラットフォームが売上を受け取るサブスクリプションを作成するには、[サブスクリプションのガイド](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md)に従い、Stripe Billing でサブスクリプションを作成します。

### 支払いと送金別方式を作成する

プラットフォームが受け取る売上の一部を後で連結アカウントに手動で送金する場合は、[支払いと送金別方式](https://docs.stripe.com/connect/separate-charges-and-transfers.md)を使用して、1 つ以上の連結アカウントに売上を入金します。レストランのオンデマンデリバリーの例では、支払いと送金別方式を使用して、プレミアムデリバリーサービスに登録するように顧客を紹介した配達ドライバーやレストランにアフィリエイト手数料を入金することができます。

## サブスクリプションを作成して連結アカウントに請求する

Stripe Billing を使用してサブスクリプションを作成し、プラットフォームの使用手数料を連結アカウントに請求することができます。
 (See full diagram at https://docs.stripe.com/connect/subscriptions)
この例では、ジム管理ソフトウェアプラットフォームを構築して、ジムビジネスが月額手数料を支払ってクラスのスケジュール設定と予約を管理できるようにします。サブスクリプション手数料は、ジム利用者ではなく、ジムビジネスが支払います。

ジム管理ソフトウェアでは、ジム利用者が登録する各クラスのジム利用者とジムビジネスの間の 1 回限りの支払いも簡単にできます。月次サブスクリプションは、連結アカウントとプラットフォームの間で行われ、取引にジム利用者は関与しません。

上の図では、ジムビジネスが連結アカウントで、ジムの利用者が顧客です。

## Before you begin

連結アカウントのサブスクリプションを作成する前に、以下を実行する必要があります。

1. 料金体系モデルを作成します。この例では、定額料金の[料金体系モデル](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate)を作成して顧客に定期的に手数料を請求しますが、ユーザー数ベースと使用量ベースの料金体系もサポートされています。
1. 請求先の連結アカウントそれぞれのすべてに利用予定の支払い方法を指定して、プラットフォームで顧客を作成します。ジム管理ソフトウェアの例では、ジムビジネスごとに顧客を作成します。

### 連結アカウントに相当する Customer オブジェクトを作成する

連結アカウントがプラットフォームに継続手数料を支払うためのサブスクリプションを作成するには、連結アカウントを表す [Customer](https://docs.stripe.com/api/customers/create.md) オブジェクトを作成する必要があります。アカウントオブジェクトを使用すると、連結アカウントは顧客から支払いを徴収することができますが、プラットフォームは連結アカウントから継続支払いを徴収するためにこのオブジェクトを使用することはできません。ビジネスの所有者、マネージャー、または運営者のそれぞれを表す顧客を作成するのではなく、各法人を表す顧客を 1 つだけ作成します。

### 連結アカウントのサブスクリプションを作成する

プラットフォームが連結アカウントから資金を受け取るサブスクリプションを作成するには、[サブスクリプションガイド](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md)に従って、Stripe Billing でサブスクリプションを作成します。`customer` パラメーターで連結アカウントを表す Customer オブジェクトを渡します。

## 構築したシステムを有効にしてイベント通知を受信できるようにする

Stripe 継続支払いが成功したときや失敗したときなど、アカウントで変更が発生したときにイベント通知を作成します。これらの通知を受信し、それを使用して導入を自動化するには、*Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) エンドポイントを設定します。たとえば、`invoice.paid` イベントを受信したときにサービスへのアクセスをプロビジョニングできます。

### Connect とサブスクリプションの導入に関するイベント通知

Connect の導入で通常使用されるイベント通知は次のとおりです。

| イベント                               | data.object 型                   | 説明                                                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `account.application.deauthorized` | `application`                   | 連結アカウントがプラットフォームへの連結を解除すると発生します。これを使用して、サーバーでクリーンアップをトリガーできます。Stripe ダッシュボードにアクセスできる連結アカウント ([Standard アカウント](https://docs.stripe.com/connect/standard-accounts.md)を含む) で利用できます。                                                                                                                                                                                                   |
| `account.external_account.updated` | `card` や `bank_account` などの外部口座 | [連結アカウントに関連付けられた銀行口座またはデビットカードが更新された](https://docs.stripe.com/connect/payouts-bank-accounts.md)場合に発生し、入金に影響することがあります。プラットフォームが管理する連結アカウントに適用されます。これには、Custom アカウントと Express アカウント、および[プラットフォーム管理](https://docs.stripe.com/connect/platform-controls-for-stripe-dashboard-accounts.md)が有効な Standard アカウントが含まれます。                                                                    |
| `account.updated`                  | `account`                       | 連結アカウントの要件の変化やステータスの変化を監視できます。すべての連結アカウントで利用可能です。                                                                                                                                                                                                                                                                                                                                  |
| `balance.available`                | `balance`                       | お客様の Stripe 残高が更新されたときに発生します。例えば、[銀行口座から追加した資金](https://docs.stripe.com/connect/top-ups.md)が連結アカウントに送金できるようになったときなどです。                                                                                                                                                                                                                                                             |
| `payment_intent.succeeded`         | `payment_intent`                | 支払いインテントで支払いが成功した場合に発生します。[デスティネーション支払い](https://docs.stripe.com/connect/destination-charges.md)と[ダイレクト支払い](https://docs.stripe.com/connect/direct-charges.md)を含むすべての支払いで利用可能です。                                                                                                                                                                                                   |
| `payout.failed`                    | `payout`                        | [入金が失敗した](https://docs.stripe.com/connect/payouts-connected-accounts.md#webhooks)場合に発生します。入金が失敗すると、関連する外部口座は無効になり、外部口座が更新されるまで自動でも手動でも入金を行うことはできません。                                                                                                                                                                                                                               |
| `person.updated`                   | `person`                        | `Account` に関連付けられている `Person` が更新されたときに発生します。[Persons API を利用して確認要件に対処する](https://docs.stripe.com/connect/handling-api-verification.md#verification-process)場合は、個人の要件の変化やステータスの変化を監視します。プラットフォームが管理する連結アカウントに適用されます。これには、Custom アカウントと Express アカウント、および[プラットフォーム管理](https://docs.stripe.com/connect/platform-controls-for-stripe-dashboard-accounts.md)が有効な Standard アカウントが含まれます。 |

サブスクリプションの導入で通常使用されるイベント通知は次のとおりです。

> Accounts v2 API は、Connect ユーザー向けに GA になり、その他の Stripe ユーザー向けには公開プレビューになります。
> 
> 顧客を表すのに [Accounts v2](https://docs.stripe.com/connect/use-accounts-as-customers.md) オブジェクトまたは [Customer](https://docs.stripe.com/api/customers.md) オブジェクトのいずれを使用する場合でも、`customer.subscription` イベントを使用してサブスクリプションイベントを追跡します。

| イベント                                              | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `v2.core.account.created`                         | [v2 Account](https://docs.stripe.com/api/v2/core/accounts/object.md) が正常に作成されたときに送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `customer.created`                                | [Customer (顧客)](https://docs.stripe.com/api/customers/object.md)の作成に成功すると送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `customer.subscription.created`                   | サブスクリプションが作成されると送信されます。決済を完了するために顧客の認証が必要な場合、または `payment_behavior` を [default_incomplete](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) に設定した場合、サブスクリプションの `status` が `incomplete` になる場合があります。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `customer.subscription.deleted`                   | 顧客のサブスクリプションが終了すると送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `customer.subscription.paused`                    | サブスクリプションの`ステータス` が `paused` に変化したときに送信されます。たとえば、[無料トライアルが決済手段なしで終了](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment)したときにサブスクリプションを一時停止するように[設定](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_settings-end_behavior-missing_payment_method)した場合に送信されます。請求は、サブスクリプションが[再開(/api/subscriptions/resume)されるまで行われません。この期間中も請求書は作成され続けるため、[決済の回収](https://docs.stripe.com/billing/subscriptions/pause-payment.md)を一時停止してもこのイベントは送信されません。                                                                                                                                                                                                                                                  |
| `customer.subscription.resumed`                   | 以前に `paused` ステータスだったサブスクリプションを再開すると送信されます。これは、[決済の回収](https://docs.stripe.com/billing/subscriptions/pause-payment.md#unpausing)の一時停止を解除した場合には適用されません。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `customer.subscription.trial_will_end`            | [トライアル期間終了](https://docs.stripe.com/billing/subscriptions/trials.md)の 3 日前に送信されます。トライアル期間が 3 日未満の場合、このイベントがトリガーされます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `customer.subscription.updated`                   | サブスクリプションが開始または[変更](https://docs.stripe.com/billing/subscriptions/change.md)された場合に送信されます。たとえば、サブスクリプションの更新、クーポンの追加、割引の適用、請求書アイテムの追加、プランの変更はすべて、このイベントのトリガーとなります。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `entitlements.active_entitlement_summary.updated` | 顧客の有効なエンタイトルメントが更新されると送信されます。このイベントを受け取ると、商品の機能へのアクセスをプロビジョニングまたはデプロビジョニングすることができます。[エンタイトルメントの導入](https://docs.stripe.com/billing/entitlements.md)の詳細をご覧ください。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `invoice.created`                                 | 新規または更新済みのサブスクリプションに対して請求書が作成されると送信されます。Stripe で `invoice.created` に対する成功レスポンスを受信できない場合、[自動請求](https://docs.stripe.com/invoicing/integration/automatic-advancement-collection.md)で指定されたすべての請求書の確定が最大 72 時間遅延します。詳しくは、[請求書の確定](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized)をご覧ください。
  - [Finalize an Invoice (請求書の確定)](https://docs.stripe.com/api/invoices/finalize.md) API にリクエストを送信することで通知に応答します。                                                                                                                                                                                                                                                                                                                                     |
| `invoice.finalized`                               | 請求書の確定に成功し、支払いの準備が整うと送信されます。
  - 顧客に請求書を送信できます。詳しくは、[請求書の確定](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized)をご覧ください。
  - 設定に応じて、Stripe は自動的にデフォルトの支払い方法に請求するか、回収を試みます。詳しくは、[確定後のメール](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#emails)をご覧ください。                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `invoice.finalization_failed`                     | 請求書の確定に失敗しました。[請求書の確定の失敗を処理する方法](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures)と[請求書の確定](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized)の詳細を見る。
  - 請求書の [last_finalization_error](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) を調べて、エラーの原因を特定します。
  - Stripe Tax を使用している場合は、`Invoice` オブジェクトの[automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) フィールドを確認してください。
  - `automatic_tax[status]=requires_location_inputs` の場合、請求書を確定させることはできず、決済を回収できません。顧客に通知し、必要な[顧客の住所情報](https://docs.stripe.com/tax/customer-locations.md)を回収します。
  - `automatic_tax[status]=failed` の場合、後でリクエストを再試行します。 |
| `invoice.paid`                                    | 請求書の支払いに成功すると送信されます。このイベントを受け取り、サブスクリプションの `status` が `active` になると、商品へのアクセスを提供できます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `invoice.payment_action_required`                 | 請求書に顧客の認証を必要とする場合に送信されます。請求書で[アクションが必要](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action)な場合にサブスクリプションを処理する方法をご紹介します。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `invoice.payment_failed`                          | 請求書に対する決済が失敗しました。PaymentIntent のステータスは`requires_action` に変わります。サブスクリプションのステータスは、サブスクリプションの最初の請求書に対して_のみ_ `incomplete` のままになります。決済が失敗した場合、以下のような処理を行います。

  - 顧客に通知します。
  - ダッシュボードで[サブスクリプション設定](https://dashboard.stripe.com/settings/billing/automatic)を行い、[Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md) およびその他の売上の回収機能を有効にします。
  - PaymentIntent を使用している場合、新しい支払情報を収集し、[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) を更新します。                                                                                                                |
| `invoice.upcoming`                                | サブスクリプションの更新の数日前に送信されます。何日前に送信されるかについては、[ダッシュボード](https://dashboard.stripe.com/settings/billing/automatic)の**次回の更新イベント**に設定された数値を参照します。既存のサブスクリプションについては、日数の変更は次の請求期間から有効になります。必要に応じて、[追加の請求書アイテム](https://docs.stripe.com/billing/invoices/subscription.md#adding-upcoming-invoice-items)を加えることもできます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `invoice.updated`                                 | 支払いが成功または失敗したときに送信されます。支払いが成功の場合には、`paid` 属性が `true` に、`status` が `paid` に設定されます。支払いが失敗の場合には、`paid` が `false` に、`status` は `open` のままになります。また、支払いの失敗は、`invoice.payment_failed` イベントもトリガーします。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `payment_intent.created`                          | [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) が作成されると送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `payment_intent.succeeded`                        | PaymentIntent が正常に支払いを完了すると送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `subscription_schedule.aborted`                   | サブスクリプションスケジュールが、支払いの滞納により関連するサブスクリプションが終了となったことが原因でキャンセルされた場合に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `subscription_schedule.canceled`                  | サブスクリプションスケジュールがキャンセルされ、それに関連するアクティブなサブスクリプションもキャンセルされた場合に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `subscription_schedule.completed`                 | サブスクリプションスケジュールのすべての[フェーズ](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#subscription-schedule-phases)が完了した場合に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `subscription_schedule.created`                   | 新しいサブスクリプションスケジュールが作成された場合に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `subscription_schedule.expiring`                  | サブスクリプションスケジュールが無効になる 7 日前に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `subscription_schedule.released`                  | サブスクリプションスケジュールがサブスクリプションから[リリース](https://docs.stripe.com/api/subscription_schedules/release.md)されたとき、または停止され関連付けが解除されたときに送信されます。サブスクリプションはその後も残ります。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `subscription_schedule.updated`                   | サブスクリプションスケジュールが更新された場合に送信されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

- [Webhook エンドポイントを作成](https://docs.stripe.com/webhooks.md#webhook-endpoint-def)
- [Stripe CLI でイベントをリッスンする](https://docs.stripe.com/webhooks.md#local-listener)
- [Connect webhooks](https://docs.stripe.com/connect/webhooks.md)
- [サブスクリプション webhooks](https://docs.stripe.com/billing/subscriptions/webhooks.md)

## 構築したシステムをテストする

サブスクリプションを作成した後、顧客への表示や、本番環境のアクティビティーでの使用の前に、組み込みを十分にテストしてください。詳細については、[Stripe Billing のテスト](https://docs.stripe.com/billing/testing.md)をご覧ください。

## その他のオプション

サブスクリプションを作成した後、他のオプションに加えて、[application_fee_percent](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-application_fee_percent) を指定し、*カスタマーポータル* (The customer portal is a secure, Stripe-hosted page that lets your customers manage their subscriptions and billing details)を設定し、`on_behalf_of` パラメーターを使用して顧客に請求し、Webhook でサブスクリプションを監視することができます。

### サブスクリプションの手数料を回収する

請求期間ごとに 1 回、Stripe は請求書の最終金額 (セット売りの請求書アイテム、割引、アカウント残高の調整を含む) からこの率をプラットフォームの手数料として回収します。これは、Stripe 手数料を請求する前に差し引かれます。

サブスクリプションを作成または更新する際には、必要に応じて [application_fee_percent](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-application_fee_percent) を指定できます。これは、小数点以下が最大 2 桁の 0 から 100 の間の負ではない 10 進数にする必要があります。

次の例は、連結アカウントでダイレクト支払いを使用するサブスクリプションに対する `application_fee_percent` を示しています。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d "expand[0]=latest_invoice.confirmation_secret" \
  -d application_fee_percent=10
```

次の例は、デスティネーション支払いを使用するサブスクリプションの `application_fee_percent` を示しています。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d "expand[0]=latest_invoice.confirmation_secret" \
  -d application_fee_percent=10 \
  -d "transfer_data[destination]={{CONNECTEDACCOUNT_ID}}"
```

### プラットフォーム手数料の率を計算する

`application_fee_percent` の計算方法については、このシナリオを考察してください。

- 請求サイクルごとのサブスクリプションコストが 30 USD
- 次の請求書に 10 USD の請求書がある
- 50% のクーポンを適用
- `application_fee_percent` は 10

このケースでは、プラットフォーム手数料の合計は 2 USD: (30 USD + 10 USD) * 50% * 10% です。

### 率による手数料と固定手数料

サブスクリプションの請求額はさまざまであるため、通常、サブスクリプションのプラットフォーム手数料は率にする必要があります。サブスクリプションの継続的プラットフォーム手数料を定額として設定することはできません。

ただし、[次のセクション](https://docs.stripe.com/connect/subscriptions.md#subscription-invoices)で説明するように、請求書で固定の `application_fee_amount` を請求することはできます。

`application_fee_percent` パラメーターは、サブスクリプションの請求期間外に作成された請求書には適用されません。 たとえば、ただちに請求される比例配分 (日割り / 秒割り計算) の請求書には適用されません。このような場合は、請求する金額の `application_fee_amount` を請求書に直接設定する必要があります。

### サブスクリプションで作成された請求書を処理する

サイクルごとに、サブスクリプションは請求書を作成し、請求書は支払いを作成します。サブスクリプションのサイクルの詳細は、[サブスクリプションのライフサイクル](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle)をご覧ください。`application_fee_percent` で自動計算できない定額または動的な手数料を請求するには、サブスクリプションによって作成された各請求書に `application_fee_amount` を直接追加してください。

次の例は、連結アカウントへのダイレクト支払いの請求書での `application_fee_amount` を示しています。

#### curl

```bash
curl https://api.stripe.com/v1/invoices/{INVOICE_ID} \
  -u <<YOUR_SECRET_KEY>>: \
  -d application_fee_amount=100 \
  -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}"
```

次の例は、デスティネーション支払いを使用する請求書の `application_fee_amount` を示しています。

#### curl

```bash
curl https://api.stripe.com/v1/invoices/{INVOICE_ID} \
  -u <<YOUR_SECRET_KEY>>: \
  -d application_fee_amount=100 \
  -d "transfer_data[destination]"="{{CONNECTED_STRIPE_ACCOUNT_ID}}"
```

`application_fee_amount` を自動的に請求するには、`invoice.created` イベントをリッスンする *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) を作成します。これは、保留中の請求書アイテムで請求書を作成し、そこにプラットフォーム手数料を設定することで手動で行うこともできます。

請求書に直接設定された `application_fee_amount` は、`application_fee_percent` を使用して計算されたプラットフォーム手数料額のすべてを上書きし、請求書の最終請求額を上限とします。

### クーポンを使用する

サブスクリプションの作成後は、サブスクリプションにクーポンを追加できます。[Coupon (クーポン)](https://docs.stripe.com/api/coupons.md) は、[サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md)または[請求書](https://docs.stripe.com/api/invoices.md)の割引の管理に使用される加盟店向けのオブジェクトです。[プロモーションコード](https://docs.stripe.com/api/promotion_codes.md)は、クーポンに加えて作成され、顧客に直接提供できる顧客向けのコードです。[顧客向けのコードを作成](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes)する方法をご確認ください。

### トライアル期間の使用

[サブスクリプションの作成](https://docs.stripe.com/api.md#create_subscription)時に `trial_end` 引数を指定することで、無料のトライアル期間を設けて顧客の[サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md)を開始できます。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d trial_end=1610403705
```

`trial_end` パラメーターは、トライアルが終了する厳密な時点を示すタイムスタンプを取得します。サブスクリプションの作成時に、現時点からトライアルの継続期間の日数を表す整数である [trial_period_days](https://docs.stripe.com/api.md#create_subscription-trial_period_days) 引数を代わりに使用することもできます。

トライアル期間を指定してサブスクリプションを作成するときに、顧客の支払い方法は必要ありません。即時[請求書](https://docs.stripe.com/api/invoices.md)は作成されますが、請求金額は 0 USD になります。

トライアル期間終了の 3 日前に、[Webhook エンドポイント](https://docs.stripe.com/billing/subscriptions/webhooks.md)に `customer.subscription.trial_will_end` イベントが送信されます。その通知を確認した後、請求がまもなく開始することを顧客に通知するなどの必要なアクションを実行します。

トライアルの終了時に、顧客の新しい請求サイクルが開始されます。トライアル期間が終了すると、Stripe は請求書を生成し、`invoice.created` イベント通知を送信します。約 1 時間後に、Stripe はその請求書の請求を試行します。

トライアルを早期終了するには、[サブスクリプションの更新](https://docs.stripe.com/api.md#update_subscription) API コールを実行して、`trial_end` の値に新しいタイムスタンプを設定します。即時終了する場合は、次のように **now** を設定します。

```curl
curl https://api.stripe.com/v1/subscriptions/{{SUBSCRIPTION_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d trial_end=now
```

詳細については、[トライアル期間を使用して、有効なサブスクリプションに対する支払いを延期](https://docs.stripe.com/billing/subscriptions/trials.md)する方法をご覧ください。

### カスタマーポータルを設定する

カスタマーポータルでは、顧客が[サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md)と[請求書](https://docs.stripe.com/api/invoices.md)を管理できます。Billing ユーザーの場合、顧客はポータルでサブスクリプションを管理できます (更新、キャンセル、一時停止など)。Invoicing のみのユーザーは、ポータルを使用して、請求書の支払いや支払い方法の追加などを実行できます。詳細については、[カスタマーポータルの実装](https://docs.stripe.com/customer-management.md)方法をご覧ください。

### Webhook でサブスクリプションを監視する

Stripe は [Webhook](https://docs.stripe.com/webhooks.md) を使用して、お客様のアプリに通知を送信します。Webhook は、ほとんどのアクティビティーが非同期で発生する[サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md)で特に重要です。Webhook をサブスクリプションで使用するには、以下のようにします。

1. アプリで Webhook エンドポイントを作成します。
1. Stripe イベントを処理するロジックを追加します。サブスクリプションの場合、支払いの失敗やサブスクリプションのステータスの変化などが含まれます (trial から active ステータスへの移行など)。
1. Webhook エンドポイントをテストして、予期したとおりに機能していることを確認します。

Webhook を使用して、[サブスクリプションのアクティビティーの通知を受信](https://docs.stripe.com/billing/subscriptions/webhooks.md)する方法をご紹介します。

### on_behalf_of を使用して連結アカウントを売上処理加盟店にする

サブスクリプションを作成または更新する際は、`on_behalf_of` パラメーターをいくつかの目的で使用することができます。

- 連結アカウントを売上処理加盟店にする
- 連結アカウントのブランディングをオンラインリソース (メールの領収書、請求書、カスタマーポータル) で使用する

`on_behalf_of` の使用要件とサブスクリプションの支払いに対する影響の詳細については、以下のドキュメントをご覧ください。

- 連結アカウントへの自動送金については、[連結アカウントに代わって請求](https://docs.stripe.com/connect/charges.md#on_behalf_of)の `on_behalf_of` パラメーターの詳細をご覧ください。
- 支払いを手動で送金する方法については、[支払いと送金別方式の作成](https://docs.stripe.com/connect/separate-charges-and-transfers.md#settlement-merchant)の送金可能な金額に関するセクションをご覧ください。
- 支払い方法の処理に必要なアカウントのケイパビリティのリストについては、[支払い方法のケイパビリティ](https://docs.stripe.com/connect/account-capabilities.md#payment-methods)をご覧ください。
- 連結アカウントで有効にするブランディングオプションのリストについては、[API リファレンスのドキュメント](https://docs.stripe.com/api/accounts/object.md#account_object-settings-branding)で `settings.branding` パラメーターの詳細をご覧ください。

この例は、支払いと送金別方式を使用した、新しいサブスクリプションの `on_behalf_of` を示したものです。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "on_behalf_of={{CONNECTEDACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}"
```

この例は、デスティネーション支払いとプラットフォーム手数料を指定して `on_behalf_of` を使用する方法を示しています。

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "on_behalf_of={{CONNECTEDACCOUNT_ID}}" \
  -d application_fee_percent=10 \
  -d "transfer_data[destination]={{CONNECTEDACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}"
```

### 連結解除の動作を理解する

連結アカウントがプラットフォームから連結解除されても、サブスクリプションが自動的にはキャンセルされるわけではありません。ただし、使用されている決済方式に応じて、決済の回収の一部機能は続行されるか、停止されるかが決まります。

### ダイレクト支払い

連結を解除した後も、サブスクリプションは引き続きその連結アカウントで実行されます。サブスクリプションが `application_fee_percent` を指定して作成された場合、プラットフォーム手数料は、連結が解除された後も引き続きプラットフォームによって徴収されます。プラットフォームから連結アカウントを解除する際、`application_fee_percent` はサブスクリプションから削除するようにしてください。連結を解除した後、連結アカウントは API を通じて既存のサブスクリプションから `application_fee_percent` パラメーターを消去します。

### デスティネーション支払いまたは支払いと送金別方式

連結解除後、デスティネーション支払いまたは支払いと送金別方式として作成された既存のサブスクリプションは、請求書が引き続き生成されますが、連結アカウントに売上を送金することはできません。連結を解除する前に、連結アカウントがサブスクリプションを移行できるようにするか、関連するサブスクリプションをキャンセルするかについて支援を提供する必要があります。

### on_behalf_of を指定したデスティネーション支払い

連結アカウントがプラットフォームから連結解除されると、`on_behalf_of` のサブスクリプションでは、`charge_automatically` に設定されたサブスクリプションの請求書が顧客に請求されません。Stripe では引き続き各サイクルのサブスクリプションの請求書を生成しますが、`auto_advance` が `false` に設定され、下書きのままになります。

支払いの回収を続行するには、接続が解除されたアカウントと再接続するか、またはサブスクリプションの請求書からこれらのフィールドを明示的に削除し、その請求書で支払いを再試行する必要があります。

### 税金の計算と徴収を導入する

まず、どの法人に納税義務があるかを判断する必要があります。ビジネスモデルによって、連結アカウントまたはプラットフォームが納税義務を負う法人となります。詳細については、[Connect で Stripe Tax を使用する](https://docs.stripe.com/tax/connect.md)をご覧ください。

## See also

- [請求書を作成する](https://docs.stripe.com/invoicing/connect.md)
- [支払いを作成する](https://docs.stripe.com/connect/charges.md)
- [アカウント間で顧客を共有する](https://docs.stripe.com/connect/cloning-customers-across-accounts.md)
- [複数の通貨](https://docs.stripe.com/connect/currencies.md)
