サブスクリプションの注文修正
サブスクリプションの注文の修正を作成する方法をご紹介します。
Stripe Billing Connector for Salesforce CPQ は、サブスクリプションのタイプと同期するすべての Salesforce の注文のサブスクリプションのスケジュールを Stripe で作成します。既存の注文を変更するには、注文修正を作成します。Salesforce で注文修正を行うと、Stripe で既存のサブスクリプションのスケジュールに新しいサブスクリプションのスケジュールのフェーズが作成されます。
ユースケースに応じて、以下のいずれかの修正タイプを作成しなければならない場合があります。
挿入注文修正
サイクルの途中で、有効化された注文を調整または部分的にキャンセルする場合は、挿入注文修正を使用します。コネクターは、Salesforce の注文修正の新しい商品と数量を使用して、Stripe のサブスクリプションスケジュールを更新します。コネクターは、元の注文実装と同じマッピングを使用します。
開始日と終了日
注文修正では、開始日と終了日の間にギャップがあってはなりません。エラーが生じないようにするために、注文修正の開始日は以下のようにする必要があります。
- 前の注文または注文修正の終了日以前にする
- または、以前の初回の注文または注文修正と同じ開始日にする
注文修正はすべて、最初の注文と同時に終了する必要があります。Salesforce CPQ は、契約の開始日とサブスクリプション期間を組み合わせて終了日の計算に使用します。このため、すべての注文修正の終了日を同一にする必要があります (開始日 + サブスクリプション期間)。
注文の差分
注文修正には、前の注文からの差分のみが含まれます。コネクターは以前のすべての注文を取得し、以前のすべてのラインアイテムを集計して、新しいサブスクリプションのスケジュールフェーズに含めるサブスクリプションアイテムを決定します。 Stripe では、サブスクリプションのいずれかのフェーズのアイテムを再利用したり、前のフェーズのアイテムに関連付けたりすることはありません。
注文の契約
Stripe でサブスクリプションを変更するには、注文および注文修正を同じ契約に関連付ける必要があります。Salesforce CPQ は、契約された注文および注文修正ごとにこれを自動的に行います。
Salesforce CPQ の注文から契約することをお勧めします。 Stripe に Salesforce の Contract
オブジェクトを直接表す表記はありません。
アイテムの価格
注文アイテムの価格が変更されない限り、Stripe は同じ Price
オブジェクトをサブスクリプションスケジュールフェーズで使用します。
注文ラインを改訂および終了する
以前の注文ラインを部分的または全面的に終了すると、Salesforce ではマイナス数量の注文ラインが作成されます。Stripe ではマイナスのラインアイテムは使用できません。注文修正によって商品または商品の一部の数量がサブスクリプションから削除された場合、マイナス数量の注文ラインは、改訂された以前の注文ラインと合算されます。
たとえば、初回の注文に 1 つのラインアイテムが含まれていて、その数量が 2 であったとします。注文修正によって数量が 1 つ減らされたとします。この結果として、Stripe の新しいサブスクリプションスケジュールフェーズには、数量が 1 の単一のサブスクリプションアイテムが組み込まれます。
プラス数量の注文ラインの場合、コネクターは、Stripe で固有のサブスクリプションスケジュールフェーズを作成します。
以前の注文修正に含まれている注文ラインを変更する注文アイテムはすべて、以前のサブスクリプションフェーズに存在している必要があります。言い換えると、注文でラインアイテムをスキップした場合、そのラインアイテムを改訂したときに注文修正でそのラインアイテムをスキップする必要があります。
同じ商品および価格を使用した複数の注文ライン
Stripe では、同一の価格 ID で複数のサブスクリプションスケジュールフェーズアイテムを使用することはできません。Salesforce にはこの制限はありません。
複数の注文ラインで同じ価格を使用した場合、コネクターは以下のようにします。
- Stripe で価格を複製する
- 価格をサブスクリプションスケジュールフェーズに追加する
- 価格を使用後にアーカイブする (
active = false
)
Stripe の複製された価格には以下のメタデータが含まれます。
salesforce_
: 価格が別の価格の複製であることを示しますduplicate = true salesforce_
: 使用後の価格を自動的にアーカイブしますauto_ archive = true salesforce_
: 複製された価格に使用される価格の ID が含まれますoriginal_ stripe_ price_ id = price_ xyz
月の途中の修正
コネクターでは、すべての注文修正が当初の注文と同時に終了する必要があります。修正注文が当初の注文とは別の日付に開始する場合、以下を行う必要があります。
- 修正注文の終了日を設定します。
- 修正注文でサブスクリプションの期間を 1 カ月単位の数に設定します。
月の途中の注文修正の例:
初回の注文 | 注文修正 | |
---|---|---|
開始日 | 2022 年 1 月 1 日 | 2022 年 2 月 15 日 |
終了日 | 2022 年 12 月 31 日 | 2022 年 12 月 31 日 |
サブスクリプション期間 | 12 | 10 |
遡及修正
コネクターは、遡及修正を現在時刻で処理します。注文の遡及修正の開始は過去の時点になるため、サブスクリプションのスケジュールの最新フェーズは、注文修正の開始日と一致しません。
たとえば、顧客が既存のサブスクリプションを修正する必要があるとします。この場合、有効日以降の日付でコネクターを使用して修正注文をプッシュします。
同日の修正
コネクターは、以下のシナリオのような同日の修正を処理できます。
- サブスクリプションが今日開始し、顧客が開始日と同日に契約を修正したいと考えている。
- サブスクリプションが将来の日付に開始し、顧客が元の注文と同じ開始日と終了日を使用して注文を修正したいと考えている。
既存のサブスクリプションでの同日の修正
この場合、コネクターは修正を比例配分注文修正として扱いますが、以下のように少し違いがあります。
- 前のフェーズの終了日では、現在の日付の午前 0 時 (この例ではすでに過ぎている) ではなく、特殊な
now
値が使用されます。 - 次のフェーズ (たとえば、注文修正) の開始日でも、
now
値が使用されます。 - 比例配分ラインアイテムの金額は、契約の存続期間の全請求額と等しくなります。
同日の将来の修正
サブスクリプションが開始されていない場合、サブスクリプションの開始時に同日の修正で特殊な now
値を使用することはできません。この場合、コネクターは以下を行います。
- 同じ注文期間 (たとえば、開始日と終了日) を共有している、注文 (初回または修正) の 1 回限りのラインアイテムをすべて収集する
- 該当するアイテムを新しいフェーズに追加する
- 以前の注文に相当するフェーズを削除する
Stripe では、以前の注文に関連付けられているサブスクリプションスケジュールフェーズのメタデータを完全に削除します。
挿入注文修正の例
次は、注文修正の例と Stripe Billing へのマッピング方法です。
最初の注文: 最初の注文は、顧客とサブスクリプションのスケジュールを Stripe の単一のサブスクリプションフェーズに統合します。
注文修正: 2022 年 1 月 15 日に、Salesforce で最初の注文に対する注文修正を作成します。
初回の注文と注文修正の値は以下のとおりです。
初回の注文 | 注文修正 | |
---|---|---|
開始日 | 2022 年 1 月 1 日 | 2022 年 2 月 1 日 |
サブスクリプション期間 | 12 | 11 |
ラインアイテム | 1 商品 A
| 2 つ 商品 A
商品 B
|
Salesforce CPQ の注文修正で、数量 -4 (数量を 4 減らす) の注文ラインとして商品 A を表します。単価が同じであるため、Stripe ではサブスクリプションスケジュールフェーズアイテムで同じ Price
オブジェクトを使用します。
注文修正が有効化されると、サブスクリプションスケジュールが更新され、次のフェーズが組み込まれます。
フェーズ 1 | フェーズ 2 | |
---|---|---|
開始日 | 2022 年 1 月 1 日 | 2022 年 2 月 1 日 |
終了日 | 2022 年 2 月 1 日 | 2023 年 2 月 1 日 |
アイテム | 商品 A、数量: 10 |
|
終了注文修正
契約を完全にキャンセルするには、終了注文修正を使用します。この注文修正によって、注文のすべてのラインアイテムの数量が 0 に設定されます。
この修正が発生すると、コネクターは最後のサブスクリプションスケジュールフェーズの終了日を終了注文修正の開始日に更新します。
注文を開始日と同日に完全終了する場合は、前のフェーズを変更するのではなく、サブスクリプションスケジュールをキャンセルします。
比例配分注文修正
比例配分注文修正の開始日は、請求サイクル範囲外であり、終了日は請求サイクルと等しくなりません。
たとえば、毎年請求される 2 年契約を修正する注文により、開始が 6 カ月目になり、期間が 1.5 年になるとします。この注文は比例配分注文修正です。顧客には、標準請求サイクルに該当しない注文部分に相当する比例配分額が修正の開始日に請求されます。
Salesforce で比例配分注文修正を作成すると、コネクターは、比例配分する注文ラインごとに Stripe で以下を行います。
- 新しい Price オブジェクトを作成して、比例配分金額を表します
- 新しく作成された Price の請求書アイテムを新しく作成されたフェーズに追加して、比例配分金額を表します
- サブスクリプションアイテムの数量を更新して、比例配分金額以外は請求せずに、適用されるタイミングで修正を取り込みます
Stripe Billing は、請求サイクルの最後に商品の全額と数量に対する請求書を送信します。上記の例では、請求サイクルは 12 カ月目に終了し、請求書の金額は 120 USD x 2 = 240 USD となります。
以下の価格は比例配分できません。
- 従量課金用に設定された価格: 請求金額は、請求サイクルの終了後に計算されます。
- 1 回限りの、非継続的な価格: このタイプの価格は即座に請求され、請求サイクルは関連付けられません。
- 消費スケジュールから作成された段階制の価格。
比例配分注文修正の例
ここでは、注文修正の例を紹介し、注文修正が Stripe でどのように表されるのかを示します。
フェーズ 0 | フェーズ 1 (6 カ月目) | フェーズ 1 (12 カ月目) |
---|---|---|
|
| 3 番目のフェーズは作成されない。フェーズ 1 の 12 カ月目に、フェーズ 1 (6 カ月目) に追加されたサブスクリプションアイテムに対する新しい請求書が作成される。 |
Stripe の単一の比例配分アイテムは、注文アイテムの比例配分金額を表します。これは、請求サイクルの残りの比例配分期間の引き落とし額を意味します。
Stripe Billing の比例配分計算では、次の 2 つの比例配分アイテムが作成されます。
- 以前のプランの未使用の期間に相当するクレジット
- 請求期間の残りの比例配分使用期間に対応する引き落とし額
Salesforce CPQ で計算された比例配分データを使用している場合、Stripe でクレジットラインアイテムは表示されません。
CPQ で計算された比例配分を使用する
請求情報が CPQ に存在する場合、コネクターはそれを信頼できる情報源として扱います。これにより、他の金融システム (Stripe など) や財務レポートツール (NetSuite や QuickBooks など) で比例配分とその他の財務データを照合できるようになります。デフォルトでは、コネクターは Month
に相当する CPQ Subscription Prorate Precision
を使用して比例配分を計算します。コネクターは Monthly and Daily
に相当する CPQ Subscription Prorate Precision
にも対応しています。
Stripe と Salesforce で金額が一致しないことがあります。これは、 一部の計算が Stripe のみで行われ、それらの計算に相当するものが CPQ に存在しないためです。たとえば、税金と従量課金のデータは Stripe にしか存在しません 。
比例配分価格を計算する
Salesforce では、比例配分ラインアイテムには次の情報が含まれます。
- サブスクリプション期間
- 単価 (Stripe の
unit_
にマッピング)decimal_ amount - 数量
- 請求サイクル (Stripe の
recurring.
およびinterval recurring.
にマッピング)interval_ count - 開始日
Salesforce CPQ の Month の比例配分の精度
CPQ Subscription Prorate Precision
に Month
が設定されている場合に、注文アイテムのうち、比例配分の対象となる部分を決定するには以下のようにします。
- 請求サイクルに含まれないサブスクリプションの月数 (期間) を計算します。ラインアイテムの開始日、サブスクリプション期間、および請求サイクルを使用して、この値を求めます。
- ラインアイテムの月あたりのコストを計算します。
unit_
にマッピングされた値をサブスクリプション期間で割ります。amount_ decimal - 月あたりコスト (ステップ 2 の値) に、請求サイクルに含まれていない月の数 (ステップ 1 の値) を乗じます。
たとえば、請求サイクルに含まれていない 6 カ月がサブスクリプションに含まれているものとします。ラインアイテムの月あたりのコストは 10 USD です。これは、180 USD の単価を 18 カ月のサブスクリプション期間で割ることで求められます。月ごとのコストの 10 USD に 6 カ月を掛けて 60 USD になります。
Salesforce CPQ の Monthly and Daily の比例配分の精度
CPQ Subscription Prorate Precision
に Monthly and Daily
が設定されている場合に、注文アイテムのうち、比例配分の対象となる部分を決定するには以下のようにします。
- 請求サイクルに含まれないサブスクリプションの (期間の終了時の) 部分的な月を計算します。部分的な月とは、請求サイクルに含まれない日数と同じです。
- ラインアイテムの 1 日あたりのコストを計算します。
unit_
にマッピングされている値を月の日数で割ります。CPQ は、1 年の日数を 1 年の月数で割る (365 を 12 で割る) ことで月の日数を計算します。amount_ decimal - 1 日あたりのコスト (ステップ 2 の値) に、請求サイクルに含まれていない日数 (ステップ 1 の値) を乗じます。
コネクターは、CPQ Subscription Prorate Precision
の設定に基づいて比例配分を計算します。
カスタマイズした価格フィールドを使用して比例配分価格を計算する
通常、UnitPrice
は Stripe の unit_
にマッピングされます。価格のカスタムフィールドを使用することもできます。コネクターは、指定したカスタムフィールドを請求サイクル全体の商品の価格と見なします。
たとえば、UnitPrice
の 180 USD ではなく、カスタム価格フィールドで 120 USD を指定したとします。四半期ごとの請求サイクルでは、四半期ごとのコストは 30 USD になります。これは、120 USD を 4 つの四半期で割ることで求められます。
比例配分注文ラインでは、コネクターのカスタム価格フィールドに請求サイクルの全額が指定されている必要があります。コネクターは、この値から比例配分金額を計算します。
一意の価格を使用して比例配分を表す
このアプローチは、Stripe の Price
オブジェクトを生成して比例配分金額を表す点に特色があります。各比例配分金額では、元の全請求価格と同じ商品に関連付けられた Price
オブジェクトが Stripe で作成されます。すなわち、比例配分ラインアイテムと比例配分されないサブスクリプションラインアイテムに相当する 2 つの Price
オブジェクトが個別に作成されます。
Price
オブジェクトのメタデータ salesforce_
は、オブジェクトがこの目的で作成されたことを示します。
これらの Price は、サブスクリプションで使用された後に自動的にアーカイブされます (active=false
)。
比例配分請求書アイテムの請求方法
比例配分注文修正に相当するフェーズが開始すると、保留中の請求書アイテムが顧客のサブスクリプションに追加されます。
コネクターは新しく作成された請求書アイテムがないかをリッスンして、比例配分された金額を示しているかどうかを判別します。比例配分金額の場合、コネクターはサブスクリプションの請求書を作成して確定します。この請求書により、サブスクリプションの比例配分金額が顧客に請求されます。
サブスクリプションで請求対象にするアイテムは指定できません。サブスクリプションは、関連付けられている保留中の請求書アイテムをすべて請求します。