従量課金をモデル化する
Stripe で使用される各種従量課金モデルについてご紹介します。
注
従量課金プロセスを更新しました。以前のプロセスについては、レガシーの従量課金についてをご覧ください。
従量課金には、使った分だけの支払い、定額手数料と超過料金 (ほとんどのユーザーに推奨される)、クレジットバーンダウンといったさまざまな料金モデルが用意されています。
従量課金
一般に「後払い請求」または「従量課金」と呼ばれます。決められた期間内に発生した使用量を記録し、期間終了時に顧客に請求します。4 つの異なる価格戦略をデプロイできます。
- ユニットあたり: ユニット 1 つごとに同額を請求します。
- パッケージ単位: ユニットまたは使用量のパッケージまたはバンドルに対して請求します。これは架空の Alpaca AI 会社のモデルで示されています。
- 階層型従量ベースの料金: サブスクリプションアイテムは、期間終了時の使用総量に対応する階層で請求されます。従量ベースの料金で詳細をご覧ください。
- 階層型段階的な料金: 従量ベースの料金と似ていますが、段階的な料金では、すべての使用量に単一の料金を適用するのではなく、各段階の使用量に応じて請求します。
顧客が大量の使用量を累計して、月末に支払い方法が失敗する可能性があるため、ビジネスが信頼性の低い顧客にかかわる場合はこのモデルをお勧めしません。
定額手数料と超過料金モデル
このモデルでは、期間開始時にサービスに対する毎月の定額料金を請求します。定額料金には部分的な使用量の割り当てが含まれ、追加の使用量 (超過分) が期間終了時に請求されます。
同じ商品に 2 つの料金を指定してこれをモデル化できます。たとえば、Alpaca AI は Llama AI と呼ばれる高度なモデルを新たにリリースするとします。このモデルの料金は月額 200 USD で、10 万トークンが含まれています。料金に含まれるトークンを超える使用量には、トークンあたり 0.001 USD の追加料金が請求されます。
クレジットバーンダウンモデル
このモデルでは、従量課金のプロダクトとサービスの料金の前払いを受けることができます。請求クレジットを使用すると、ユーザーは初回料金を支払い、プロダクトの利用時に請求クレジットを「消費」することが可能です。
たとえば、Alpaca AI は、既存のセルフサービスの顧客に新しい LLama AI モデルの大企業向け契約を販売したいと考えています。顧客は LLama AI の契約料金 10 万ドルを前払いすることを確約しているため、1 年間に 12 万ドルの請求クレジット利用額を取得できます。
請求クレジットで詳細をご覧ください。
無料トライアル
従量課金を使用したサブスクリプションのトライアル期間を使用できます。トライアル期間中に発生した使用量は、請求サイクルの終了時に顧客に対して請求される総額に含められません。トライアル期間の終了後に使用量が発生し、それが次回の請求サイクルの終了時に請求されます。
トライアル期間とサブスクリプションの詳細をご覧ください。
Webhook とトライアル
システムでトライアルステータスの変更に関連するウェブイベントの監視と処理が適切に行われていることを確認します。
トライアルが終了し、サブスクリプションが trialing
から active
に移行する数日前に、customer.
イベントを受信します。このイベントを受信したら、顧客のアカウントに支払い方法の指定があり、請求の進行が可能な状態あることを確認します。必要に応じて、次回の支払いについて事前に顧客に通知します。
ステータス | 説明 |
---|---|
trialing | サブスクリプションは現在トライアル期間中であり、顧客に商品を提供しても安全です。 最初の支払いが行われると、サブスクリプションは自動的に active に移行します。 |
active | サブスクリプションは良好な状態であり、直近の支払いは正常に行われました。 顧客に商品を提供しても安全です。 |
incomplete | サブスクリプションを有効にするには、23 時間以内に支払いを成功させる必要があります。あるいは、支払いで顧客の認証などのアクションが必要です。保留中の支払いがあるときも、サブスクリプションは incomplete になる場合があります。その場合、PaymentIntent のステータスは processing です。 |
incomplete_ | サブスクリプションの初回の支払いが失敗し、サブスクリプションの作成から 23 時間以内に成功した支払いがありませんでした。これらのサブスクリプションは顧客に請求しません。このステータスは、サブスクリプションの有効化に失敗した顧客を追跡するために存在します。 |
past_ | 「確定済み」の最新の請求書に対する支払いは、失敗したか、実行されていないかのいずれかとなります。サブスクリプションは請求書の作成を継続します。サブスクリプションの設定によって、サブスクリプションの次のステータスが決まります。すべての Smart Retries が試行された後でも請求書が未払いとなっている場合、サブスクリプションを canceled 、unpaid または leave に移行するか、past_ のままにしておくことができます。サブスクリプションを active に移行するには、期日前に最新の請求書を支払う必要があります。 |
canceled | サブスクリプションはキャンセルされています。キャンセルの際に未払いのすべての請求書の自動回収が無効化されます (auto_ )。これは、それ以上更新ができない最終的なステータスです。 |
unpaid | 最新の請求書は支払われていませんが、サブスクリプションはそのままで保持されます。最新の請求書は未払いステータスのままになり、請求書の生成は続行されますが、支払いの試行は行われません。支払いはすでに試行され past_ であったときに再試行されたため、サブスクリプションが unpaid の場合、商品へのアクセスを取り消す必要があります。サブスクリプションを active に移行するには、その期日前に最新の請求書への支払いを行います。 |
paused | The subscription has ended its trial period without a default payment method and the trial_settings.end_behavior.missing_payment_method is set to pause . Invoices will no longer be created for the subscription. After a default payment method has been attached to the customer, you can resume the subscription. |
サブスクリプションと Webhook の詳細をご覧ください。
キャンセル
従量課金の場合、顧客が支払う請求書は、請求サイクル中の使用量に基づいて異なります。請求サイクルを変えると、サブスクリプション期間の終了が早まり、短縮された請求サイクル中に発生した使用量に対して顧客に請求することになります。従量課金では比例配分はサポートされていません。
キャンセルされたサブスクリプションを、再びアクティブにすることはできません。代わりに、顧客から更新された請求先情報を収集し、顧客のデフォルトの支払い方法を更新して、既存の顧客レコードから新しいサブスクリプションを作成できます。
cancel_at_period_end を使用してサブスクリプションのキャンセルをスケジュール設定した場合、cancel_
を false
に更新することで、期間の終了時まではサブスクリプションをいつでも再有効化できます。最終請求書には、請求期間の終了時にサブスクリプションをキャンセルしてから計測された使用量が含まれます。
数量を変換する
単価を適用する前に使用量を変換するには、transform_quantity オプションを使用します。これにより、報告された使用量を特定の数で割って、結果を切り上げまたは切り捨てできます。これは、個々の単価ではなく、商品のパッケージに対して価格を設定する場合に一般的に使用されます。数量の変換は、段階制料金とは互換性がありません。
たとえば、レンタカーサービスを運営しているとします。あなたは使用量を分単位の時間で報告して、レンタカーを貸し出した 1 時間ごとに顧客に請求したいと考えています。
次に、レンタカーサービス商品の料金を作成します。1 時間単位で 10 USD を請求し、使用時間が 1 時間に満たない場合も切り上げて 1 時間分を請求します。
車が 150 分間レンタルされた場合、その顧客は 3 時間のレンタル (2 時間 30 分の切り上げ) に対する 30 USD を請求されます。
小数を使用する金額
小数を使用する料金は、整数ではない料金の金額を作成する必要がある場合に利用できます。たとえば、クラウドストレージの SaaS ビジネスを運営している場合、1 カ月につき、1 MB あたり 0.05 セントを請求する料金を作成できます。使用量を基準にして MB の数量に 0.05 セントを乗じて、最も近い整数のセントに丸めます。
小数を使用する価格を作成するには、unit_
ではなく、unit_
を指定します。unit_
を使用すると、請求通貨の補助単位で金額を設定できます。たとえば、USD で unit_
と設定して 105.5 セント、(1.055 USD) を示すことができます。unit_
では、小数点以下最大 12 桁までを使用できます。
段階制料金の使用を計画している場合は、unit_
ではなく unit_
を使用できます。また、unit_
の代わりに unit_
を使用して請求書アイテムを作成することもできます。
API レスポンスでは、オブジェクトを小数点付きの値で作成すると、整数 unit_
フィールドには入力されません。たとえば、unit_
で価格を作成すると、レスポンスには unit_
と unit_
が含まれます。unit_
には整数値を渡すこともでき、その場合はレスポンスの unit_
に入力されます。たとえば、unit_
で価格を作成すると、レスポンスには unit_
と unit_
が含まれます。
注
システムに unit_
値を使用するイベント処理が存在し、小数を使用する価格の使用を開始する場合は、代わりに unit_
を使用する必要があります。これは非常に重要です。unit_
では小数を整数に変換できない場合に null
が返されることになり、システムでエラーが発生する可能性があるためです。
猶予期間
デフォルトでは、Stripe はサブスクリプションが生成されてから 1 時間後にその請求書を確定します。この 1 時間の猶予期間中は、以前の期間の使用量を引き続き報告できます。請求書が確定すると、その請求期間の最新の数量を反映するように更新されます。
請求書の確定後に報告された使用量は、今後の請求書にはキャプチャーされません。
サイクル途中の更新
請求サイクル中にサブスクリプションアイテムの価格を更新できます。ただし、請求メーター価格を別の価格に切り替える場合は、以下の制限が適用されます。
- 更新後の使用分は、次回からの請求書に反映されます。変更前の使用分は請求書に反映されません。たとえば、1 月 16 日に月額のサブスクリプションを料金 A から料金 B に変更した場合、月末に生成される請求書には、1 月 16 日から 1 月 31 日までの料金 B での使用分が計上されます。
- このルールの例外として、請求しきい値を使用している場合に、しきい値のある請求書が古い料金ですでに生成されている場合があります。たとえば、上記のシナリオで、1 月 10 日に料金 A でしきい値のある請求書を生成した場合、そのしきい値のある請求書は顧客に請求されます。月末に生成される請求書では、1 月 16 日から 1 月 31 日までの使用分が料金 B で計上されます。以前に生成されたしきい値のある請求書は、この月末の請求書の使用分を埋め合わせません。
- サブスクリプションサイクルの途中で新しい請求メーター価格のサブスクリプションアイテムを追加する場合にも、同様の制限が適用されます。たとえば、1 月 16 日に料金 C の新しいサブスクリプションアイテムを追加した場合、月末に生成される請求書には、1 月 16 日から 1 月 31 日までのそのサブスクリプションアイテムの料金 C での使用分が計上されます。
サブスクリプションアイテムの価格を更新する方法を以下でご覧いただけます。
サブスクリプションアイテムを削除するには、以下のようにします。
削除後は、そのアイテムの使用分は請求書に反映されません。
過去の日付でのサブスクリプションの作成
顧客のサブスクリプションを作成する前の段階で顧客の使用量を報告できます。顧客の使用量を報告した後で、backdate_start_date を使用して、最初の報告の前のサブスクリプションを作成し、使用量が次のサブスクリプション請求書に含まれるようにします。