サブスクリプションのアップグレードとダウングレード
価格を変更してサブスクリプションをアップグレードおよびダウングレードする方法をご紹介します。
顧客がサブスクリプションを変更すると、お客様は新しい選択を反映させるために、サブスクリプションアイテムを変更する必要があります。たとえば、顧客がプレミアム段階にアップグレードするか、またはベーシック段階にダウングレードする場合、サブスクリプションアイテムの基本価格を入れ替えるよう求められることがあります。これを実行するには、いくつかの方法があります。
識別子を取得する
どの方法を選択する場合でも、更新対象となるオブジェクトの識別子を提供する必要があります。更新するサブスクリプションとアイテムを見つけるには、サブスクリプションをリスト化して、関連するフィルター (顧客 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
以外で、その値を保持する場合は、その値を更新内容に含める必要があります。
よくある間違い
現在の価格を新しい価格に変えるには、サブスクリプションアイテムを指定する必要があります。これを行わないと、新しい価格が「追加」され、サブスクリプションの両方の価格が有効化されることになります。
別の方法として、現在のサブスクリプションアイテムを削除し、更新された価格で新しいサブスクリプションアイテムを作成することもできます。
サブスクリプションアイテムを更新する
次のパラメーターを使用してサブスクリプションを更新します。
item price
: 置き換える料金の ID を指定します。item quantity
: サブスクリプションの料金を更新すると、数量がデフォルト値の1
に自動的に戻されます。既存のサブスクリプションの数量が1
以外で、その値を保持する場合は、その値を更新内容に含める必要があります。
サブスクリプション単位で他に変更を行う必要がない場合は、このオプションを使用します。
請求期間
どちらの価格にも、同じ請求期間が設定されている場合 (interval
と interval_
の組み合わせ)、サブスクリプションでは同じ請求日が維持されます。価格ごとの請求期間が異なる場合、新しい価格には変更日に開始される新しい期間で請求されます。たとえば、顧客を 1 つの月次サブスクリプションから別の月次サブスクリプションに切り替えても、請求日は変わりません。それに対して、顧客を月次支払いから年次サブスクリプションに切り替えると、請求日はその切り替え日に移行します。顧客を 1 つの月次サブスクリプションから別の月次サブスクリプションに切り替え、それに伴ってトライアル期間を設ける場合にも、請求日は (トライアル期間の終わりに) 移行します。
サブスクリプションのスケジュール
請求サイクルの終了時にサブスクリプションを変更する場合は、サブスクリプションのスケジュールを使用して移行を管理することを検討してください。サブスクリプションスケジュールを使用する際は、予期せぬサブスクリプションの上書きを防ぐために、必ずベストプラクティスに従ってください。
従量課金
従量課金のサブスクリプションがある場合、サブスクリプションアイテムの使用量は、料金を更新しても維持されます。既存の使用量を維持せずに料金を更新する場合は、 subscription.items.clear_usage をtrue
に設定します。
比例配分 (日割り / 秒割り計算)
サブスクリプションを変更すると、多くの場合、比例配分が発生します。顧客が料金の変更に伴う追加費用を把握できるようにするには、比例配分をプレビューします。また、比例配分を無効にすることもできます。
即時の支払い
Stripe は次に該当するサブスクリプションの変更に関して、即時の支払い処理を実行します。
- 支払いが不要なサブスクリプション (トライアルまたは無料のサブスクリプションなど) から、有料のサブスクリプションに切り替える場合
- 請求期間が変わる場合
すぐに請求が行われたものの、要求された支払いに失敗した場合、サブスクリプションの変更リクエストが成功し、サブスクリプションが past_
に変わります。
サブスクリプションの変更があった際に、同じ請求サイクルで顧客にただちに請求するには、proration_
を always_
に設定します。これにより、比例配分が行われ、切り替え後すぐに請求書が生成されます。この設定を更新の保留と組み合わせると、新しい請求書での支払いが成功した場合にのみサブスクリプションが更新されます。
ダウングレードのクレジット
ダウングレードの請求書をただちに発行する場合、顧客にクレジットが発生する可能性がありますが、これは顧客のクレジット残高に追加され、今後の請求書に適用されます。顧客に返金するには、返金を発行し、次にアカウント残高を調整してゼロに戻します。顧客の返金についての詳細は専用のサポートページをご覧ください。
価格と数量がゼロのサブスクリプションを処理する
顧客を金額がゼロのサブスクリプション (トライアルなど) に登録した場合、ゼロ以外の金額に変更すると、請求期間は変更日にリセットされます。
顧客をゼロ以外の金額でゼロ以外の数量のサブスクリプションに登録した場合、数量をゼロ以外に変更しても請求書は生成されず、請求期間もリセットされません。