既存のサブスクリプションの料金を変更する
価格を変更してサブスクリプションをアップグレードおよびダウングレードする方法をご紹介します。
顧客がサブスクリプションを変更すると、お客様は新しい選択を反映させるために、サブスクリプションアイテムを変更する必要があります。たとえば、顧客がプレミアム段階にアップグレードするか、またはベーシック段階にダウングレードする場合、サブスクリプションアイテムの基本価格を入れ替えるよう求められることがあります。これを実行するには、いくつかの方法があります。
Customers v1 と Accounts v2 のリファレンスを比較する
If your Connect platform uses customer-configured Accounts, use our guide to replace Customer and event references in your code with the equivalent Accounts v2 API references.
識別子を取得する
どの方法を選択した場合でも、更新するオブジェクトの ID を指定する必要があります。list subscriptions メソッドと該当するフィルター (顧客 ID など) を使用して、更新するサブスクリプションと項目を見つけます。
これにより、特定の顧客に関するサブスクリプションが返され、サブスクリプション ID (id) 、サブスクリプションアイテム ID (items.)、サブスクリプションアイテムの価格 ID (items.)を取得することができます。
{ "object": "list", "url": "/v1/subscriptions", "has_more": false, "data": [ { "id": "su_1NXPiE2eZvKYlo2COk9fohqA", "object": "subscription", "application": null, "application_fee_percent": null, "automatic_tax": { "enabled": false }, "items": { "object": "list", "data": [ { "id": "si_OK3pbS1dvdQYJP", "object": "subscription_item", "billing_thresholds": null, "created": 1690208774, "metadata": {}, "price": { "id": "price_1NOhvg2eZvKYlo2CqkpQDVRT", "object": "price" } } ] } } ] }
サブスクリプションを更新する
次のパラメーターを含むサブスクリプションを更新します。
item ID: 現在の料金を新しい料金に置き換えるには、サブスクリプションアイテムを指定する必要があります。指定せずに新しい料金でサブスクリプションを更新すると、新しいサブスクリプションアイテムが「追加」され、サブスクリプションで両方の料金が有効化されることになります。item price: 置き換える料金の ID を指定します。item quantity: サブスクリプションの料金を更新すると、数量がデフォルト値の1に自動的に戻されます。既存のサブスクリプションの数量が1以外で、その値を保持する場合は、その値を更新内容に含める必要があります。
よくある間違い
現在の価格を新しい価格に変えるには、サブスクリプションアイテムを指定する必要があります。これを行わないと、新しい価格が「追加」され、サブスクリプションの両方の価格が有効化されることになります。
別の方法として、現在のサブスクリプションアイテムを削除し、更新された価格で新しいサブスクリプションアイテムを作成することもできます。
サブスクリプションアイテムを更新する
次のパラメーターを使用してサブスクリプション項目を更新します。
- price:置き換える料金の ID を指定します。
- quantity:サブスクリプション価格を更新すると、数量は自動的にデフォルト値の
1に戻ります。既存のサブスクリプション数量が1以外であり、その値を保存する場合は、更新に含める必要があります。
サブスクリプション単位で他に変更を行う必要がない場合は、このオプションを使用します。
請求期間
どちらの価格にも、同じ請求期間が設定されている場合 (interval と interval_ の組み合わせ)、サブスクリプションでは同じ請求日が維持されます。価格ごとの請求期間が異なる場合、新しい価格には変更日に開始される新しい期間で請求されます。たとえば、顧客を 1 つの月次サブスクリプションから別の月次サブスクリプションに切り替えても、請求日は変わりません。それに対して、顧客を月次支払いから年次サブスクリプションに切り替えると、請求日はその切り替え日に移行します。顧客を 1 つの月次サブスクリプションから別の月次サブスクリプションに切り替え、それに伴ってトライアル期間を設ける場合にも、請求日は (トライアル期間の終わりに) 移行します。
サブスクリプションのスケジュール
請求期間の終了時にサブスクリプションを変更する場合は、サブスクリプションスケジュールを使用して移行を管理することを検討してください。サブスクリプションスケジュールを使用する場合は、ベストプラクティスに従って、予期しないサブスクリプションの上書きを防ぎます。
請求書ーターを使用した従量課金
請求メーターに関連付けられた料金をサイクル途中で更新する場合については、料金モデルセクションに詳しい説明があります。請求メーターで料金を更新する際に clear_ を渡しても効果はありません。
使用状況レコードを使用した従量課金 Legacy
レガシーの使用量記録を基盤とする従量制価格と、新しい使用量記録の価格への更新がある場合、使用量は新しい価格に移行されます。
比例配分 (日割り / 秒割り計算)
サブスクリプションを変更すると、多くの場合、比例配分が発生します。顧客が料金の変更に伴う追加費用を把握できるようにするには、比例配分をプレビューします。また、比例配分を無効にすることもできます。
即時の支払い
Stripe は、サブスクリプションの請求サイクルアンカーがリセットされると、即座に決済を試みます。サブスクリプションの請求サイクルアンカーのリセット についてはこちらをご覧ください。
すぐに請求が行われたものの、要求された支払いに失敗した場合、サブスクリプションの変更リクエストが成功し、サブスクリプションが past_ に変わります。
同じ請求期間でサブスクリプションの変更があった際に顧客にただちに請求するには、proration_ を always_ に設定します。これにより、比例配分が行われ、すぐに切り替え後請求書が生成されます。この設定を保留の更新と組み合わせると、新しい請求書で決済が成功した場合にのみ、サブスクリプションが更新されます。
クレジット比例配分
クレジット比例配分は、顧客が請求期間終了前にサブスクリプションをダウングレードするか、サブスクリプションアイテムをキャンセルしたときに発行されます。Stripe は、サブスクリプションのbilling_mode の設定に応じて、クレジット比例配分の計算に 2 つ異なる方式でクレジット比例配分を計算します。詳細については、クレジット比例配分 をご覧ください。
価格と数量がゼロを処理する
顧客を金額がゼロのサブスクリプション (トライアルなど) に登録した場合、ゼロ以外の金額に変更すると、請求期間は変更日にリセットされます。
顧客をゼロ以外の金額でゼロ数量のサブスクリプションに登録した場合、数量をゼロ以外に変更しても請求書は生成されず、請求期間もリセットされません。