# 定額料金と超過料金の料金モデルの設定 顧客に定額料金を請求し、追加使用分を後払いするオプションも提示します。 超過料金付き定額制は、予測可能な請求と柔軟な成長性を兼ね備えています。顧客は基本パッケージに対して一定の継続料金を支払い、その上限を超える使用量については別途請求されます。このモデルは、顧客に成長の余地を与えつつ、安定した確実な収入を得たい場合に有効です。基本料金はコアバリューをカバーし、超過料金はヘビーユーザーが消費量に比例して支払うことを保証します。例えば、動画ホスティングプラットフォームを運営する場合、月 1,000 ストリームを 200 USD の定額料金に含めることができます。顧客がそれ以上のストリームをストリーミングした場合、各追加ストリームは超過料金として請求されます。月末になると、Stripe は定額料金に含まれる上限を超える使用量を合算した請求書を送信し、顧客が登録した決済手段に自動的に請求するか、追加するよう促します。 ## 作成する内容 この例では、Hypernian が [定額と超過料金](https://docs.stripe.com/subscriptions/pricing-models/usage-based-pricing.md#fixed-fee-overage) を組み合わせた料金モデルを用いて、顧客に LLM サービスの利用料を以下のように請求しています。 | ライセンス | 手数料 | | ------ | ------- | | ユーザーごと | 100 USD | | 使用状況 | 手数料 | | ------ | -------- | | 0-1000 | 0 USD | | 1000+ | 0.04 USD | このモデルを実装するには、利用状況を記録するためのメーター、貴社サービスを表すための商品と価格、顧客情報、顧客のサブスクリプションを作成します。 ## メーターを作成する メーターは、請求期間中のメーターイベントを集計する方法を指定するものです。メーターイベントは、顧客がシステムで実行するすべてのアクション (API リクエストなど) を表します。メーターは料金に関連付けられており、請求内容の基礎になります。 Hypernian の例では、メーターイベントは、顧客がクエリで使用するトークンの数です。メーターは、1 か月間のトークンの合計です。 Stripe ダッシュボードまたは API を使用してメーターを設定できます。Stripe CLI で API を使用してメーターを作成するには、[Stripe CLI を始める](https://docs.stripe.com/stripe-cli.md) を参照してください。 #### ダッシュボード 1. [メーター](https://dashboard.stripe.com/test/meters) ページで、**メーターを作成** をクリックします。 1. メーターエディターで以下を実行します。 - **メーター名** に、表示するメーターの名前と整理目的で入力します。Hypernian の例には、「Hypernian トークン」と入力します。 - **イベント名** に、Stripe に使用状況を報告するときにメーターイベントに表示する名前を入力します。Hypernian の例には、「hypernian_tokens」と入力します。 - ドロップダウンで **集計方法** を設定します。 - Hypernian の例では、 **合計** を選択します。これにより、報告れた *値が合計* され (この例では、顧客が使用するトークンの数)、請求する使用量が決定されます。 - 報告されたイベントの_数_に基づいて **カウント** を選択し、請求します。 - **最終** を選択して、報告された_最終値_に基づいて請求します。 - プレビューペインを使用して、使用状況例イベントを設定し、集計方法を確認します。 - **メーターを作成** をクリックします。 - (オプション) **詳細設定** で、使用状況データにタグ付けする **ディメンション** を指定します。セグメント固有のアラートをきめ細かく生成したり、属性の組み合わせに基づいて使用状況を細かく価格設定したりするには、分析とレポート作成用に入力されたディメンションを使用して使用状況データを送信します。ディメンションの例としては、LLM モデル、トークンタイプ、地域、イベントタイプなどがあります。 #### API ```curl curl https://api.stripe.com/v1/billing/meters \ -u "<>:" \ -d display_name="Hypernian tokens" \ -d event_name=hypernian_tokens \ -d "default_aggregation[formula]"=sum \ -d "customer_mapping[event_payload_key]"=stripe_customer_id \ -d "customer_mapping[type]"=by_id \ -d "value_settings[event_payload_key]"=value ``` ## 料金体系モデルを作成する Stripe ダッシュボードまたは API を使用して、[商品](https://docs.stripe.com/api/products.md) とその料金オプションを含む [料金体系モデル](https://docs.stripe.com/products-prices/pricing-models.md) を作成します。[価格](https://docs.stripe.com/api/prices.md) は、単価、通貨、請求期間を定義します。 Hypernian の例では、100 ユニットあたり 0.04 USDの従量制価格で、月単位で請求される製品を作成します。前の手順で作成したメーターを使用します。 #### ダッシュボード 1. [商品カタログ](https://dashboard.stripe.com/products?active=true) ページで、**商品を作成** をクリックします。 1. **商品を追加** ページで、以下を実行します。 1. **名前** に、製品の名前を入力します。Hypernian の例には、`Hypernian usage` と入力します。 1. (オプション) **説明** には、[Checkout](https://docs.stripe.com/payments/checkout.md)、[カスタマーポータル](https://docs.stripe.com/customer-management.md)、[見積もり](https://docs.stripe.com/quotes.md) に表示する説明を追加します。 1. **継続** を選択します。 1. **請求期間** で、**その他の料金体系オプション** を選択します。 1. **価格を追加** ページで、以下を実行します。 1. **料金体系モデルを選択** で、**従量制** を選択します。 1. 料金体系を選択: - Hypernian の例では、 **層ごとと段階的** を選択します。 - グリッドの最初の行で、**最初のユニット** を 0、**最後のユニット** を 1,000、**ユニットごと** を 0 USD、**定額手数料** を 0 USD に設定します。 - グリッドの 2 行目で、**最初のユニット** を 1,001、**最後のユニット** を ∞、**ユニットごと** を 0.04 USD、**定額手数料** を 0 USD に設定します。 - 最初の商品を作成したら、別の商品を作成して 100 USD の料金を月初に顧客に請求します。顧客が 2 回目に受け取る請求書には、前月の利用料と翌月のライセンス料が含まれます。 - (任意) 月末に初期ライセンス料を顧客に請求するには、グリッドの1行目の **Flat fee** を 100 USD に変更してください。 1. **メーター** で、前に作成したメーターを選択します。Hypernian の例では、ドロップダウンから **Hypernian トークン** を選択します。 1. **請求期間** を選択します。Hypernian の例では、 **月次** を選択します。 1. **次へ** をクリックします。 1. **商品を追加** をクリックします。 #### API メーターの詳細ページでメーター ID を確認します。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d currency=usd \ -d unit_amount=4 \ -d billing_scheme=per_unit \ -d "transform_quantity[divide_by]"=100 \ -d "transform_quantity[round]"=up \ -d "recurring[usage_type]"=metered \ -d "recurring[interval]"=month \ -d "recurring[meter]"={{METER_ID}} \ -d "product_data[name]"="Hypernian tokens" ``` 次に、100 USD 月額料金を作成します。 #### ダッシュボード 1. [商品カタログ](https://dashboard.stripe.com/products?active=true) ページで、**商品を作成** をクリックします。 1. **商品を追加** ページで、以下を実行します。 - **名前** に、製品名を入力します。Hypernian の例には、`Hypernian license fee` と入力します。 - (オプション) **説明** には、[Checkout](https://docs.stripe.com/payments/checkout.md)、[カスタマーポータル](https://docs.stripe.com/customer-management.md)、[見積もり](https://docs.stripe.com/quotes.md) に表示する説明を追加します。 - **継続** を選択します。 - **請求期間** で、**その他の料金体系オプション** を選択します。 1. **価格を追加** ページで、以下を実行します。 - *継続* を選択します*。 - **金額** には、*100 USD* と入力します。 - **通貨** には、**USD** を選択します。 - **請求期間** で、**月次** を選択します。 - **次へ** をクリックします。 - **商品を追加** をクリックします。 #### API 段階制料金の商品と価格を作成します。 ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d description="Usage fees for Hypernian" \ -d name="Hypernian Usage" ``` ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d product="{{PRODUCT_ID}}" \ -d currency=usd \ -d billing_scheme=tiered \ -d "recurring[interval]"=month \ -d "recurring[interval_count]"=1 \ -d "recurring[usage_type]"=metered \ -d "recurring[meter]"="{{METER_ID}}" \ -d "tiers[0][flat_amount_decimal]"=0 \ -d "tiers[0][unit_amount_decimal]"=0 \ -d "tiers[0][up_to]"=1000 \ -d "tiers[1][flat_amount_decimal]"=0 \ -d "tiers[1][unit_amount_decimal]"=4 \ -d "tiers[1][up_to]"=inf \ -d tiers_mode=graduated ``` 次に、ライセンス手数料の対象となる商品と価格を作成します。 ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d description="License fee for Hypernian" \ -d name="Hypernian License fee" ``` ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d billing_scheme=per_unit \ -d currency=usd \ -d product="{{PRODUCT_ID}}" \ -d "recurring[interval]"=month \ -d "recurring[interval_count]"=1 \ -d "recurring[usage_type]"=licensed \ -d unit_amount_decimal=10000 ``` ## 顧客を作成する Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 次に、*顧客* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) を作成します。 #### ダッシュボード 1. [顧客](https://dashboard.stripe.com/test/customers) ページで、**顧客を追加** をクリックします。 1. **顧客を作成** ページで、以下を実行します。 - **名前** に、顧客の名前を入力します。Hypernian の例には、`John Doe` と入力します。 - (オプション) 顧客のメールアドレスと説明を追加します。 - **顧客を追加** をクリックします。 #### API ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d name="John Doe" ``` ## サブスクリプションを作成する [サブスクリプション](https://docs.stripe.com/api/subscriptions.md) を使用すると、顧客を特定の価格に関連付けて、継続的な金額を請求することができます。 Stripe ダッシュボードまたは API を使用して、顧客、商品、従量制価格を含むサブスクリプションを作成します。 Hypernian の例では、Hypernian 使用量製品と Hypernian ライセンス手数料製品のサブスクリプションを作成します。 > 1 つの従量制料金を複数のサブスクリプションに関連付けることができます。 > > `billing_mode=flexible` サブスクリプションを作成すると、従量制の項目は最初の請求書から除外されます。これは、請求書に以前の使用状況がないためです。Stripe は、サブスクリプションが以前に発生した使用状況で遡及されている場合、または保留中の請求書項目が存在する場合にのみ請求書を作成します。`billing_mode=classic` サブスクリプションを作成すると、Stripe は従量制サブスクリプション項目ごとにゼロの金額の請求書の項目を生成します。 #### ダッシュボード 1. [サブスクリプション](https://dashboard.stripe.com/test/subscriptions) ページで、**テストサブスクリプションを作成** をクリックします。 1. **テスト用サブスクリプションを作成** ページで、以下を実行します。 - **顧客** で、顧客の名前を選択します。Hypernian の例では、 **John Doe** を選択します。 - **商品** で、価格を選択します。Hypernian の例では、 **Hypernian の使用量** と **Hypernian ライセンス手数料** で価格を選択します。 - (オプション) 必要に応じて、サブスクリプションの詳細と設定を変更します。 - **テスト用サブスクリプションを作成** をクリックします。 #### API 顧客の詳細ページで顧客 ID を確認します。 価格 ID は、製品の詳細ページで確認できます。**価格** で、オーバーフローメニュー(⋯)をクリックし、 **Hypernian ライセンス** と **Hypernianの使用状況** の **価格IDのコピー** を選択します。 ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "items[0][price]"={{PRICE_ID_for_hypernian_license}} \ -d "items[1][price]"={{PRICE_ID_for_hypernian_usage}} ``` ## テストのメーターイベントを送信 [メーターイベント](https://docs.stripe.com/api/billing/meter-event.md) を使用して、メーターの [顧客使用状況](https://docs.stripe.com/billing/subscriptions/usage-based/recording-usage.md) を記録します。請求期間の終了時に、Stripe は報告された使用状況を請求します。 Stripe ダッシュボードまたは API を使用して、メーターイベントを送信し、従量課金をテストできます。API を使用する場合は、顧客 ID と `payload` の値を指定します。 メーターイベントを送信した後、ダッシュボードの [メーター](https://dashboard.stripe.com/test/meters) ページでメーターに関する使用状況の詳細を確認できます。 #### ダッシュボード 1. [メーター](https://dashboard.stripe.com/test/meters) ページで、メーター名を選択します。Hypernian の例では、 **Hypernian トークン** を選択します。 1. メーターページで、**使用量を追加** > **使用量を手動で入力** をクリックします。 1. **使用量を追加** ページで、以下を実行します。 - **Customer** ドロップダウンから、対象の顧客を選択します。 - **値** に、サンプル値を入力します。Hypernian の例には、`3000` と入力します。 - **送信** をクリックします。 #### API ```curl curl https://api.stripe.com/v1/billing/meter_events \ -u "<>:" \ -d event_name=hypernian_tokens \ -d "payload[stripe_customer_id]"={{CUSTOMER_ID}} \ -d "payload[value]"=3000 ``` ## プレビュー請求書を作成する [プレビュー請求書を作成](https://docs.stripe.com/api/invoices/create_preview.md) して、メーター価格や使用量などの詳細を含む顧客の請求書のプレビューを表示します。 #### ダッシュボード 1. [サブスクリプション](https://dashboard.stripe.com/test/subscriptions) ページで、サブスクリプションを選択します。Hypernian の例では、 **Jenny Rosen** のサブスクリプションを選択します。 1. サブスクリプションの詳細ページで、**次回の請求書** セクションまで下にスクロールします。プレビューの請求書には、指定した日付に顧客に請求するサブスクリプションの金額が表示されます。 1. **すべての請求書を表示** をクリックすると、次のような請求書の詳細を確認できます。 - 顧客 - 請求方法 - 作成日 - 関連付けられたサブスクリプション - サブスクリプションの詳細 (使用量とメーター価格) - 請求金額 Stripe はメーターイベントを非同期に処理するため、以降の請求書には、最近受信したメーターイベントが即時に反映されない可能性があります。 #### API ```curl curl https://api.stripe.com/v1/invoices/create_preview \ -u "<>:" \ -d subscription="{{SUBSCRIPTION_ID}}" ``` ## Optional: カスタム期間の使用量を取得 [メーターイベントサマリー](https://docs.stripe.com/api/billing/meter-event-summary.md) を使用して、カスタム期間の合計使用状況を取得します。メーターイベントのサマリーは、メーターによって定義される集計式を基に、期間中の顧客の使用状況を集計して返します。 Hypernian の例では、メーターイベントの概要は、特定の顧客、メーター、および時間枠のトークンの合計を返します。 Stripe はメーターイベントを非同期に処理するため、メーターイベントサマリーには、最近受信したメーターイベントが即時に反映されない可能性があります。 ```curl curl -G https://api.stripe.com/v1/billing/meters/{{METER_ID}}/event_summaries \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d start_time=1717249380 \ -d end_time=1717249440 ```