# クーポンとプロモーションコード クーポンとプロモーションコードを使用して、サブスクリプションとサブスクリプションアイテムに割引を追加します。 導入で [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、コード例内の `Customer` とイベント参照を、対応する Accounts v2 API リファレンスに置き換えてください。詳細については、[Account オブジェクトで顧客を表す](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご覧ください。 クーポンを引き換えて、提供しているサブスクリプションに割引を適用します。また、クーポンを使用してプロモーションコードを作成して顧客に提供することもできます。顧客はこれらのプロモーションコードを引き換え.ることで、サブスクリプションに割引を適用できます。 - [クーポン](https://docs.stripe.com/billing/subscriptions/coupons.md#coupons):クーポンを作成・管理し、割引 (サブスクリプション料金から差し引く割引率や割引額など) を定義します。 - [プロモーションコード](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes):クーポンの対象となる顧客向けのコードを作成します。たとえば、FALLPROMO と SPRINGPROMO は両方とも 1 つの 25% オフクーポンに割り当てることができます。プロモーションコードは顧客に直接知らせることが可能で、決済時にコードを入力すると引き換えが完了します。 クーポンとプロモーションコードは以下に使用できます。 - 請求書、サブスクリプション、サブスクリプション項目に 1 つ以上の割引を適用する - 特定の期間に 1 つ以上の割引を適用する - 請求書金額を率または定額で減額する 顧客が特定の日付までに引き換える必要があるクーポンや、顧客全体の引き換え回数に制限があるクーポンを定義することもできます。 1 回限りの支払いで割引を適用する場合は、[1 回限りの支払いに割引を追加する](https://docs.stripe.com/payments/checkout/discounts.md)をご覧ください。 ## クーポン 顧客または顧客の支払いに割引を適用するには、クーポンを引き換えることで割り引きます。クーポンの作成と管理については、後続のセクションをご覧ください。 ### クーポンを作成する クーポンは、ダッシュボードまたは [API](https://docs.stripe.com/api/coupons/create.md) で作成します。 #### ダッシュボード 1. ダッシュボードで、[商品](https://dashboard.stripe.com/test/products?active=true)ページを開きます。 1. **クーポン**をクリックします。 1. **+新規**をクリックします。 1. **クーポンを作成**ダイアログで、クーポンのパラメーターを入力します。 1. **クーポンを作成**をクリックします。 クーポンの設定方法は以下の通りです。クーポンの作成後に編集できるのは名前だけです。 | 設定 | 詳細 | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **名前** | 領収書や請求書に表示されるクーポン名。 | | **ID** (オプション) | API でのクーポンの一意の ID。このフィールドを空白にすると、Stripe によって ID が生成されます。 | | **タイプ** | クーポンがサブスクリプションを、一定額またはパーセントのいずれで割り引くのかを決定します。 | | **割引率**または**割引額** | クーポンの実際の割引額を示します。 複数の通貨で販売している場合、1 つのクーポンで異なる通貨に異なる割引額を定義できます。多通貨のクーポンは、[多通貨の価格](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#multiple-currencies)と同じルールに従います。 | | **特定の商品に適用** (オプション) | クーポンを適用できるアイテムのタイプを制限します。 | | **期間** | クーポンの有効期限を示します。 | | **引き換え回数制限** (オプション) | 顧客がクーポンを引き換えできる期間と回数を制限できます。 | | **コード** (オプション) | クーポンの[プロモーションコード](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes--promotion-codes)を作成できます。 | #### API ```curl curl https://api.stripe.com/v1/coupons \ -u "<>:" \ -d duration=once \ -d id=free-period \ -d percent_off=100 ``` 次の表には、クーポンのパラメーターが含まれています。 | 設定 | 詳細 | | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | クーポンの一意の ID。 | | `percent_off` または `amount_off` | クーポンの期間中に小計から割り引かれる金額。 | | `currency` (`amount_off` が設定されている場合) | 差し引かれる金額の通貨の 3 文字の ISO コード。 | | `currency_options` (`amount_off` が設定されている場合) (オプション) | 複数の通貨で販売している場合、異なる通貨の小計を差し引く金額。多通貨のクーポンは、[多通貨の価格](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#multiple-currencies)と同じルールに従います。 | | `duration` | クーポンの有効期間を示します。値には、**once**、**forever**、または **repeating** があります。 | | `max_redemptions` (オプション) | 顧客全体での、クーポンの引き換えが可能な最大回数。 | | `redeem_by` (オプション) | このクーポンを顧客に適用できる最終日。 | | `applies_to` (オプション) | クーポンを適用できる請求書のアイテムを限定します。 | ### 対象の商品を設定する #### ダッシュボード 割引対象の商品を設定するには、**特定の商品に適用**フィールドに対象の商品を追加します。そのクーポンに関連付けられたプロモーションコードも、この対象商品のリストに制限されます。 特定の商品に適用されるクーポンを設定し、サブスクリプションに該当する商品が含まれない場合には、そのサブスクリプションにクーポン追加しても割引は適用されません。 #### API 割引対象の商品を設定するには、クーポンの `applies_to` ハッシュに対象の商品 ID を追加します。対象商品のリストは、そのクーポンに関連付けられたプロモーションコードにも適用されます。 特定の商品に適用されるクーポンを設定し、サブスクリプションに該当する商品が含まれない場合には、そのサブスクリプションにクーポン追加しても割引は適用されません。 サブスクリプションに [変更を加えた](https://docs.stripe.com/billing/subscriptions/change.md) 場合、Stripe は日割額を計算し既存の割引がある場合はそれを適用します。作成された請求書上でこの日割項目にさらに割引を適用することはできません。 ### サブスクリプションにクーポンを適用する クーポンを作成したら、サブスクリプションにクーポンを適用して割引を作成します。サブスクリプションを作成する際、または[顧客の既存のサブスクリプションを更新](https://docs.stripe.com/api.md#update_subscription)する際にクーポンを適用できます。 #### ダッシュボード 1. ダッシュボードで、[サブスクリプション](https://dashboard.stripe.com/test/subscriptions?status=active) ページを開きます。 1. 該当するサブスクリプションをクリックします。 1. **アクション**をクリックします。 1. **サブスクリプションを更新**をクリックします。 1. **クーポンを追加**をクリックします。 1. ドロップダウンメニューから 1 つ以上のクーポンを選択し、**送信**をクリックします。 #### API ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{PRICE_ID}}" \ -d "discounts[0][coupon]=free-period" ``` クーポンの適用後に [即時決済が不要](https://docs.stripe.com/billing/subscriptions/deferred-payment.md) であれば、顧客が支払い方法を保存していない場合でも引き続きサブスクリプションを作成できます。 ### Checkout にクーポンを適用する Checkout セッションでサブスクリプションにクーポンを適用する場合、[API](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts) の `discounts` パラメーターを設定します。適用された割引でセッションを作成するには、`discounts` 配列の `coupon` パラメーターにクーポン ID を渡します。 #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=card \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d mode=subscription \-d "discounts[][coupon]"="{{COUPON_ID}}" \ -d success_url="https://example.com/success" ``` ### クーポンを削除する クーポンは、ダッシュボードまたは [API](https://docs.stripe.com/api/coupons/delete.md) で削除できます。 クーポンを削除すると、その後のサブスクリプションや請求書に適用できなくなりますが、そのクーポンがすでに設定されているサブスクリプションや請求書から割引が削除されることはありません。 #### ダッシュボード 1. ダッシュボードで、[商品](https://dashboard.stripe.com/test/products?active=true)ページを開きます。 1. **クーポン**をクリックします。 1. 該当するクーポンをクリックします。 1. オーバーフローメニュー (⋯) をクリックします。 1. **クーポンを削除**をクリックします。 #### API ```curl curl -X DELETE https://api.stripe.com/v1/coupons/free-period \ -u "<>:" ``` ### クーポンの期間 クーポンの期間は、引き換え済みの[割引](https://docs.stripe.com/api/.md#discounts)の有効期間を示します。たとえば、期間が 4 カ月間の 50% オフのクーポンは、クーポンが初めて適用された日から 4 カ月の期間、すべての請求書に適用されます。クーポンの有効期限の 4 カ月間内に顧客がこのクーポンを年次サブスクリプションに適用すると、50% の割引は年次サブスクリプション全体に適用されます。月次のサブスクリプションの場合には、クーポンは最初の 4 カ月に適用されます。週次のサブスクリプションでは、4 カ月のクーポンは最初の 4 カ月の各請求書に適用されます。 API でクーポンの期間を設定する場合には、`repeating` 値を使用する際に、クーポンを繰り返し適用できる月数として `duration_in_months` を指定する必要があります。期間を `once` に設定した場合は、そのクーポンは最初の請求書にのみ適用されます。期間を `forever` に設定した場合は、そのクーポンはすべての請求書に無期限に適用されます。 > サブスクリプションで `duration=once` のクーポンを使用する場合、クーポンは次の請求書にのみ適用され、請求書の確定後に使用されたものと見なされます。クーポンが適用されると、サブスクリプションの`割引`配列にその割引は含まれなくなります。具体的には、次のようになります。 > > - クーポンが請求書に適用される前は、サブスクリプションの`discounts` に割引オブジェクトが含まれます。 - クーポンを使用した請求書が確定または支払われると、サブスクリプションの `discounts` にはその割引が表示されなくなります。 - クーポンを使用した請求書には、請求書リソースと項目に適用された割引が引き続き表示されます。 > > この動作により、一般的に観察される 2 つの状態が発生する可能性があります。1 つは割引が表示されないサブスクリプション応答 (`duration=once` のクーポンがすでに消費されているため)、もう 1 つはクーポンが適用されていない場合にのみ `discounts` に割引が表示されるサブスクリプション応答です。 > [遡及サブスクリプション](https://docs.stripe.com/billing/subscriptions/backdating.md)にクーポンを適用する場合、クーポンの期間は、API コールの実行日ではなく、遡及開始日からカウントされます。クーポンを`繰り返す`場合、遡及期間はクーポンの期間の一部を使用します。遡及期間の後に請求書に割引を適用するには、クーポンの `duration_in_months` を遡及期間より長くする必要があります。詳細については、[遡及期間と割引](https://docs.stripe.com/billing/subscriptions/backdating.md#backdating-discounts)をご覧ください。 ### 引き換え回数制限 引き換え回数制限は、顧客全体についてクーポンに適用されます。たとえば、クーポンの引き換え回数を 50 回に制限した場合、そのクーポンは顧客に 50 回のみ適用できます。これは、50 人の異なる顧客に適用することも、1 人の顧客に 50 回適用することも、または最大回数の 50 回に達するまで複数の顧客に複数回ずつ適用することもできます。 顧客がクーポンを使用した場合に永続的に継続するように設定し、しかしそのクーポンに有効期限がある場合には、そのクーポンを受け取った顧客は永続的にその割引を受けることができます。新しい顧客は、有効期限後にクーポンを適用することはできません。 ## プロモーションコード プロモーションコードは、クーポンに作成される顧客表示用のコードです。たとえば、FALLPROMO や SPRINGPROMO は両方とも 1 つの 25% オフクーポンに関連付けることができます。プロモーションコードは顧客に直接知らせることができ、顧客は決済時に使用できます。 *カスタマーポータル* (The customer portal is a secure, Stripe-hosted page that lets your customers manage their subscriptions and billing details)を実装して、プロモーションコードを有効にした場合、顧客はポータル内で既存のサブスクリプションのアップグレード時またはダウングレード時に割引を適用できます。 > サブスクリプションでは、プロモーションコードと価格の更新が別々に適用されるため、予期しない更新が発生する場合があります。たとえば、支払いの失敗によって料金のアップグレードが失敗しても、料金のアップグレードに含まれたプロモーションコードが成功することがあります。 > カスタマーポータルには、サブスクリプションに適用されたプロモーションコードが表示されます。顧客がプロモーションコードを自身で適用したり、他の人と共有したりしないようにする場合は、[プロモーションコードに制限を設定](https://docs.stripe.com/billing/subscriptions/coupons.md#promo-code-config) するか、直接 [クーポンを適用](https://docs.stripe.com/billing/subscriptions/coupons.md#discount-subscriptions) する必要があります。 対象となる顧客、初回注文、最小注文値、有効期限、および引き換え回数制限を指定して、プロモーションコードの管理と制限をカスタマイズします。 ### 制限 プロモーションコードには以下のような制限があります。 - 以下の件数に制限があるプロモーションコードは適用できません。 - [Subscription Item オブジェクト](https://docs.stripe.com/api/subscription_items/object.md) - [インボイスアイテムオブジェクト](https://docs.stripe.com/api/invoiceitems/object.md) - 更新を行う際の [Subscription オブジェクト](https://docs.stripe.com/api/subscriptions/object.md) - [Subscription Schedule オブジェクト](https://docs.stripe.com/api/subscription_schedules/object.md)の将来のフェーズ ### プロモーションコードを作成する #### ダッシュボード プロモーションコードは、[クーポンを作成](https://docs.stripe.com/billing/subscriptions/coupons.md#create-coupons--create-coupons)する際にダッシュボードで作成できます。 この**コード**では大文字小文字が区別され、すべての顧客向けの有効なプロモーションコード内で一意です。以下に例を挙げます。 - 同じ**コード**を使用して対象の顧客が制限された複数のプロモーションコードを作成できますが、その**コード**を再利用して、あらゆる顧客が引き換えできるプロモーションコードを作成することはできません。 - あらゆる顧客が利用できるプロモーションコードを作成した場合、同じ**コード**で別の有効なプロモーションコードを作成することはできません。 - ある**コード** でプロモーションコードを作成し、それを[無効化](https://docs.stripe.com/billing/subscriptions/coupons.md#inactive-promotions--inactivate)すると、その後にその同じ**コード**で新しいプロモーションコードを作成することができます。 1. ダッシュボードの[クーポンを作成](https://dashboard.stripe.com/test/coupons/create)ページで、**顧客に表示されるクーポンコード**ボタンをクリックします。 1. コードを入力します。これは、割引を受けるために顧客が決済フローで入力するコードです。コードを設定しない場合は、Stripe によって生成されます。 1. プロモーションコードの要件を選択します。たとえば、初回注文のみで有効になるようにクーポンを制限できます。 #### API この `code` では大文字小文字が区別され、すべての顧客向けの有効なプロモーションコード内で一意です。以下に例を挙げます。 - 同じ `code` を使用して対象の顧客が制限された複数のプロモーションコードを作成できますが、その `code` を再利用して、あらゆる顧客が引き換えできるプロモーションコードを作成することはできません。 - あらゆる顧客が利用できるプロモーションコードを作成した場合、同じ `code` で別の有効なプロモーションコードを作成することはできません。 - `code: NEWUSER` でプロモーションコードを作成し、`active: false` を渡してそれを無効化すると `code: NEWUSER` で新しいプロモーションコードを作成できます。 [プロモーションコード](https://docs.stripe.com/api/promotion_codes.md)を作成するには、既存の `coupon` と制限 (特定の `customer` への制限など) を指定します。顧客に提供したい特定のコード (`FALL25OFF` など) がある場合には、`code` を設定します。このフィールドを空白にすると、Stripe によってランダムな `code` が生成されます。 ```curl curl https://api.stripe.com/v1/promotion_codes \ -u "<>:" \ -d coupon=ZQO00CcH \ -d code=ALICE20 \ -d "customer={{CUSTOMER_ID}}" ``` プロモーションコードを作成する際は、関連付けられたクーポンの設定が継承されます。 ### プロモーションコードの設定 プロモーションコードを設定することで、以下をカスタマイズできます。 - プロモーションコードを使用できる顧客 - 顧客がそのプロモーションコードを引き換えに使用できる回数 - プロモーションコードの有効期限 - プロモーションコードを適用できる最小金額を設定する ### 特定の顧客に限定する #### ダッシュボード プロモーションコードの配布を特定の顧客に限定するには、次の手順を実行します。 1. [クーポンを作成](https://dashboard.stripe.com/test/coupons/create)ページで、**特定の顧客に限定**を選択します。 1. 関連する顧客を選択します。顧客を指定しない場合、すべての顧客がそのプロモーションコードを引き換えることができます。 #### API プロモーションコードを特定の顧客に限定するには、プロモーションコードを作成する際に `customer` を指定します。顧客を指定しない場合、すべての顧客がそのプロモーションコードを引き換えることができます。 ### 初回注文に限定する プラットフォームで取引履歴のない顧客にクーポンを制限します。この設定により、顧客は以下の場合にクーポンを使用することができません。 - 決済が完了しなかった場合でも、PaymentIntent を開始しました。 - 試用期間に加入した場合、その後にキャンセルされた場合でも。 #### ダッシュボード プロモーションコードを初めての顧客に限定するには、[クーポンの作成](https://dashboard.stripe.com/test/coupons/create) ページで、**初めての注文にのみ適用** を選択します。 #### API `restrictions` 属性の `first_time_transaction` パラメーターを設定することで、プロモーションコードを初めての顧客に限定します。 ### 最小金額を設定する #### ダッシュボード プロモーションコードの対象となる最小金額を設定するには、[クーポンを作成](https://dashboard.stripe.com/test/coupons/create)ページで、**最少注文額が必要です**を選択し、最小金額を入力します。 プロモーションコードの制限は引き換え時に確認されるため、最低取引額はサブスクリプションの初回の支払いにのみ適用されます。 クーポンが複数の通貨をサポートしている場合、最小金額は通貨ごとに異なることがあります。 #### API プロモーションコードでは、`minimum_amount` プロパティーおよび `minimum_amount_currency` プロパティーを設定して、割引対象の最低取引額を設定できます。プロモーションコードの制限は引き換え時に確認されるため、最低取引額はサブスクリプションの初回の支払いにのみ適用されます。複数の通貨で販売している場合は、`currency_options` プロパティーを設定して各通貨の最低取引額を設定します。 ### 有効期限をカスタマイズする #### ダッシュボード プロモーションコードの有効期限日を設定するには、[クーポンを作成](https://dashboard.stripe.com/test/coupons/create)ページで、**有効期限を追加**を選択して、さらにプロモーションコードの有効期限の日時を選択します。 ベースとなるクーポンにすでに有効期限日が設定されている場合には、プロモーションコードの有効期限日を、そのクーポンの有効期限日より後にすることはできません。 たとえば、クーポンを 1 年間サポートするプランがあるとします。ただし、引き換え期間を顧客がクーポンを受け取ってから 1 週間以内にする場合は、クーポンの有効期限日を現在から 1 年後にし、各プロモーションコードの有効期限日を作成後 1 週間に設定します。 #### API `expires_at` を使用してプロモーションコードの有効期限日を設定します。そのベースとなるクーポンにすでに `redeem_by` が設定されている場合は、プロモーションコードの有効期限をその期日よりも後にすることはできません。`promotion_code[expires_at]` が指定されていない場合は、クーポンの `redeem_by` の値が自動的に `expires_at` となります。 - たとえば、クーポンを 1 年間サポートするプランがあるとします。ただし、引き換え期間を顧客がクーポンを受け取ってから 1 週間以内にする場合は、`coupon[redeem_by]` を現在から 1 年後にし、各 `promotion_code[expires_at]` を作成後 1 週間に設定します。 ### 引き換え回数を制限する #### ダッシュボード 顧客がプロモーションコードを引き換えることができる合計回数を設定するには、[クーポンの作成](https://dashboard.stripe.com/test/coupons/create)ページで **このコードを引き換えることができる回数を制限する** を選択し、回数を入力します。詳細については[引き換え回数制限](https://docs.stripe.com/billing/subscriptions/coupons.md#redemption-limits)をご覧ください。 ベースとなるクーポンにすでに最大回数が設定されている場合には、プロモーションコードの最大引き換え回数は、そのクーポンの引き換え回数の上限を超えることはできません。 #### API `max_redemptions` を使用して、顧客がプロモーションコードを引き換えることができる合計回数を制限します。基礎となるクーポンに `max_redemptions` が設定されている場合、プロモーションコードの `max_redemptions` はクーポンよりも大きく設定することはできません。詳細については[引き換え制限](https://docs.stripe.com/billing/subscriptions/coupons.md#redemption-limits)をご覧ください。 ### プロモーションコードを無効にする #### ダッシュボード プロモーションコードを無効化するには、次の手順を実行します。 1. ダッシュボードで、[商品](https://dashboard.stripe.com/test/products?active=true)ページを開きます。 1. **クーポン**をクリックします。 1. プロモーションコードを無効にするクーポンをクリックします。 1. 関連するプロモーションコードの行で、オーバーフローメニュー (⋯) をクリックします。 1. **プロモーションコードをアーカイブ**をクリックします。 ただし、プロモーションコードのべ―スとなるクーポンが無効になると、そのプロモーションコードはすべて永続的に無効になります。同様に、プロモーションコードが、その最大引き換え上限や有効期限日に達した場合も、永続的に無効になります。こうしたプロモーションコードを再度有効にすることはできません。 #### API `active` パラメータを使用してプロモーションコードが現在引き換え可能かどうかを設定します。ただし、プロモーションのべ―スとなるクーポンが無効になると、そのプロモーションコードはすべて永続的に無効になります。同様に、プロモーションコードが、`max_redemptions` や `expires_at` に達した場合も、永続的に無効になります。それらのプロモーションコードを再度有効にすることはできません。 ### サブスクリプションにプロモーションコードを適用する プロモーションコードを作成したら、そのプロモーションコードをサブスクリプションに適用して割引を引き換えます。プロモーションコードは次の 2 つの方法で適用できます。 - [サブスクリプションを作成](https://docs.stripe.com/api.md#create_subscription)する場合 - [顧客の既存のサブスクリプションを更新](https://docs.stripe.com/api.md#update_subscription)する場合 #### ダッシュボード 1. ダッシュボードで、**Billing** > **サブスクリプション**に移動します。 1. 該当するサブスクリプションをクリックします。 1. **アクション** > **サブスクリプションを更新** > **クーポンを追加**をクリックします。 1. ドロップダウンメニューからプロモーションコードをクリックし、**送信**をクリックします。 #### API 1. プロモーションコードを[リスト](https://docs.stripe.com/api/promotion_codes/list.md)し、顧客からの[コード](https://docs.stripe.com/api/promotion_codes/list.md#list_promotion_code-code)をフィルターとして[プロモーションコード ID](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-id) の[取得](https://docs.stripe.com/api/promotion_codes/retrieve.md) に使用します。 1. プロモーションコードを適用するには、次の API コールでプロモーションコード ID を使用します。 ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{PRICE_ID}}" \ -d "discounts[0][promotion_code]={{PROMOTIONCODE_ID}}" ``` ### Checkout にプロモーションコードを追加する Checkout セッションで [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) パラメーターを設定することにより、API でプロモーションコードを有効にします。Checkout セッションで `allow_promotion_codes` が有効になっていると、顧客が利用するプロモーションコードの入力ボックスが Checkout に表示されます。 ![決済フロー時のプロモーションコードフィールド](https://b.stripecdn.com/docs-statics-srv/assets/promo_code_checkout.c07ef6d4f0b1b3f9a8a7e4bbba83d56f.png) 決済フロー時のプロモーションコードフィールド ## 併用可能なクーポンとプロモーションコード 顧客の支払いのリストには、複数のクーポン、プロモーションコード、または引き換え済みの[割引](https://docs.stripe.com/api/.md#discounts)を追加できます。これは、[サブスクリプションを作成](https://docs.stripe.com/api.md#create_subscription)する場合、または[顧客の既存のサブスクリプションを更新](https://docs.stripe.com/api.md#update_subscription)する場合に実行できます。 Stripe はサブスクリプションとサブスクリプションアイテムの両方で、複数の割引をサポートしています。 併用可能な割引を含むサブスクリプションを作成すると、各割引がサブスクリプションのすべてのアイテムに適用されます。割引の順序は、`amount_off` と `percent_off` の両方を使用する場合に重要になります。たとえば、次の累積割引は異なる方法で適用されます。 - 20% 割引 *さらに* 5 USD 引き - 5 USD 引き *さらに* 20% 割引 #### ダッシュボード 1. ダッシュボードで、**Billing** > **サブスクリプション**に移動します。 1. 該当するサブスクリプションをクリックします。 1. **アクション** > **サブスクリプションを更新** > **クーポンを追加**をクリックします。 1. ドロップダウンメニューからクーポンをクリックし、**送信**をクリックします。 1. 該当する商品をクリックします。 1. **クーポンを追加**をクリックします。 1. ドロップダウンメニューからクーポンをクリックし、**送信**をクリックします。 #### API ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{PRICE_ID}}" \ -d "items[0][discounts][0][coupon]=item-coupon" \ -d "items[0][discounts][1][promotion_code]=item-promo" \ -d "discounts[0][coupon]=sub-coupon" \ -d "discounts[1][promotion_code]=sub-promo" ``` ### 制限 複数の割引の利用には、いくつかの制限があります。 - `discounts` パラメーターには最大 20 件の項目を設定できます。 - `discounts` の各エントリーは一意である必要があります。 - 同じクーポンから作成されたクーポンとプロモーションコードを渡すことはできません。 - 同じクーポンから生成されたクーポンと割引を渡すことはできません。 - 引き換え済みの割引は、更新する顧客またはサブスクリプションにすでに関連付けられている必要があります。 ### サブスクリプションを更新する 既存の割引を変更しない場合、`discounts` を設定する必要はありません。 `discounts` を更新する際は、サブスクリプションで保持する、以前に設定した `coupon`、`promotion_code`、または `discount` を渡す必要があります。 `discounts = ""` を渡して、サブスクリプションからすべての割引をクリアします。サブスクリプションに割引がない場合、顧客レベルの割引があれば、その割引が請求書に適用されます。 新しい `discounts` パラメーターを使用して、すでにサブスクリプションに複数の割引を設定している場合、非推奨の `coupon` または `promotion_code` パラメーターを使用してサブスクリプションを更新することはできません。同様に、前のフェーズで複数の割引を設定した場合、非推奨の `coupon` または `promotion_code` パラメーターでスケジュールのフェーズを更新することはできません。 `discounts` の更新によって、比例配分が発生することや、請求書が生成されることはありません。新しい割引は、サブスクリプションで次回請求書が作成されたときに適用されます。 > サブスクリプションレベルのプロモーションコード、クーポン、割引をそれ自体で更新しても、比例配分の請求書の項目は作成されません。比例配分は、現在の請求サイクルの請求可能額に影響する変更によってのみ作成されます。たとえば、サブスクリプション項目の`価格`や`数量`の変更、サブスクリプション項目の追加または削除、請求サイクルアンカーの変更などです。 > > ただし、割引の変更と比例配分を発生させる更新 (項目数量の変更と、同じ API コールでの割引の変更など) を組み合わせると、Stripe はサブスクリプションの更新された料金体系と割引の状態を使用して比例配分額を計算します。比例配分に関するデビットまたはクレジットには、変更された割引が反映されます。 ## 別の割引方法 クーポンはサブスクリプションに割引を適用する一般的な方法ですが、以下のようにすることもできます。 - 顧客にマイナスの[顧客残高](https://docs.stripe.com/api.md#customer_object-balance)を追加します。 - マイナスの[請求書アイテム](https://docs.stripe.com/billing/invoices/subscription.md#adding-draft-invoice-items)を追加します。 - 商品の通常価格よりも安価な、[予備価格](https://docs.stripe.com/products-prices/manage-prices.md#create-price)を追加します。 上記の方法のマイナスの請求書アイテムは、作成された割引、その時点と理由についてより詳細な情報を提供します。 ## See also - [サブスクリプションの変更](https://docs.stripe.com/billing/subscriptions/change.md) - [請求書の処理](https://docs.stripe.com/billing/invoices/subscription.md) - [Coupon API](https://docs.stripe.com/api.md#coupons) - [Promotion Code API](https://docs.stripe.com/api.md#promotion_codes)