# 従量課金の料金体系モデルを設定する 商品またはサービスの使用量に基づいて顧客に請求します。 [従量課金料金体系](https://docs.stripe.com/subscriptions/pricing-models/usage-based-pricing.md#pay-as-you-go)は、柔軟で拡張性の高いモデルであり、発生した使用状況に対して顧客に後払いでチャージを行うことができます。AI ビジネス、SaaS プラットフォーム、クラウドサービスでは、この料金体系モデルがよく使用されます。 ## 作成する内容 本ガイドでは、Hypernian という架空の会社に対して、Stripe で従量課金制の価格設定を実装する方法について説明します。Hypernian は、LLM モデルに対して次の料金を顧客に請求します。 | 使用状況 | 手数料 | | ---- | -------------------- | | トークン | 100 トークンあたり 0.04 USD | この料金体系モデルを実装するには、メーターを作成し、料金体系と請求を設定し、メーターイベントを送信して、[Products](https://docs.stripe.com/api/products.md) と [Prices](https://docs.stripe.com/api/prices.md) を使用して顧客使用状況を記録します。 ## メーターを作成する メーターは、請求期間中のメーターイベントを集計する方法を指定するものです。メーターイベントは、顧客がシステムで実行するすべてのアクション (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. **商品を追加** ページで、以下を実行します。 - **名前** に、製品の名前を入力します。Hypernian の例には、`Hypernian` と入力します。 - (オプション) **説明** には、[Checkout](https://docs.stripe.com/payments/checkout.md)、[カスタマーポータル](https://docs.stripe.com/customer-management.md)、[見積もり](https://docs.stripe.com/quotes.md) に表示する説明を追加します。 - **継続** を選択します。 - **請求期間** で、**その他の料金体系オプション** を選択します。 1. **価格を追加** ページで、以下を実行します。 - **料金体系モデルを選択** で、**従量制** を選択します。 - 料金体系を選択: - Hypernian の例では、 **パッケージごと** を選択します。**価格** で、 **金額** を `0.04 USD` につき `100` 単位。 - **ユニット単位** を選択して、ユーザー数、ユニット数、シート数で価格を設定します。 - **段階制** を選択して [段階制料金](https://docs.stripe.com/products-prices/pricing-models.md#tiered-pricing) を有効にし、数量または使用状況に応じて単価を変更します。 - **メーター** で、手順 1 で作成したメーターを選択します。Hypernian の例では、ドロップダウンから **Hypernian トークン** を選択します。 - 適切な **請求期間** を選択します。Hypernian の例では、 **月次** を選択します。 - **次へ** をクリックします。 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" ``` ## 顧客を作成する 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 製品のサブスクリプションを作成し、100 ユニットあたり 0.04 USDの従量制料金で、John Doe に毎月請求されます。 > 1 つの従量制料金を複数のサブスクリプションに関連付けることができます。 > > `billing_mode=flexible` サブスクリプションを作成すると、従量制の項目は最初の請求書から除外されます。これは、請求書に以前の使用状況がないためです。Stripe は、サブスクリプションが以前に発生した使用状況で遡及されている場合、または保留中の請求書項目が存在する場合にのみ請求書を作成します。`billing_mode=classic` サブスクリプションを作成すると、Stripe は従量制サブスクリプション項目ごとにゼロの金額の請求書の項目を生成します。 #### ダッシュボード 1. [サブスクリプション](https://dashboard.stripe.com/test/subscriptions) ページで、**テストサブスクリプションを作成** をクリックします。 1. **テスト用サブスクリプションを作成** ページで、以下を実行します。 - **顧客** で、顧客の名前を選択します。Hypernian の例では、 **John Doe** を選択します。 - **商品** で、価格を選択します。Hypernian の例では、 **Hypernian** で価格を選択します。 - (オプション) 必要に応じて、サブスクリプションの詳細と設定を変更します。 - **テスト用サブスクリプションを作成** をクリックします。 #### API 顧客の詳細ページで顧客 ID を確認できます。価格 ID を確認するには、商品の詳細ページに移動して、**料金体系** のオーバーフローメニュー (⋯) をクリックします。**価格 ID をコピー** を選択します。 ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "items[0][price]={{PRICE_ID}}" ``` ## テストのメーターイベントを送信 [メーターイベント](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]=25" ``` ## プレビュー請求書を作成する [プレビュー請求書を作成](https://docs.stripe.com/api/invoices/create_preview.md) して、メーター価格や使用量などの詳細を含む顧客の請求書のプレビューを表示します。 #### ダッシュボード 1. [サブスクリプション](https://dashboard.stripe.com/test/subscriptions)ページで、サブスクリプションを選択します。Hypernian の例では、 **John Doe** のサブスクリプションを選択します。 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 ``` ## 次のステップ - [Stripe Checkout で決済を受け付ける](https://docs.stripe.com/payments/checkout.md) - [アラートとしきい値を設定する](https://docs.stripe.com/billing/subscriptions/usage-based/monitor.md) - [請求クレジットの設定](https://docs.stripe.com/billing/subscriptions/usage-based/billing-credits/implementation-guide.md)