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