# 商品および価格を管理する 商品と価格を管理する方法をご紹介します。 ダッシュボードまたは API を使用して、商品と価格の作成と更新を行うことができます。 [変動価格の作成](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#variable-pricing)などの高度なユースケースでは、API を使用する必要があります。商品と価格が多数ある場合や、Elements で[カスタム連携](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements)を構築している場合は、API を使用してください。 - コードの記述を避けたい場合や、商品と価格が少ない場合は、[ダッシュボード](https://dashboard.stripe.com/test/products)を使用して商品と価格を作成・管理します。サンドボックスで*料金体系モデル* (The pricing model consists of the products or services you sell, how much they cost, what currency you accept for payments, and the service period to charge (for subscriptions). To build the pricing model, you use Products—what you sell—and Prices—how much and how often to charge for your products)を設定し、商品詳細ページの**本番環境にコピー**ボタンをクリックします。 - 商品および価格を作成・管理するには、[API](https://docs.stripe.com/api.md) または [Stripe CLI](https://docs.stripe.com/stripe-cli.md) を使用します。API は本番環境向けの直接的な方法です。一方、Stripe CLI は、端末から直接 Stripe の導入を作成、テスト、管理する開発者向けツールです。 次の API ステップは、1 回限りのセットアップ料金とともに月額サブスクリプション料金を請求するサービスとしてのソフトウェアプラットフォームの例を示しています。 ## 商品を作成する #### ダッシュボード ### 商品と価格を作成する #### 商品を作成する ダッシュボードで商品を作成するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. **+商品を追加**をクリックします。 1. 商品の**名前**を入力します。 1. (オプション) **説明**を追加します。説明は、決済時の[カスタマーポータル](https://docs.stripe.com/customer-management.md)、および[見積もり](https://docs.stripe.com/quotes.md)に表示されます。 1. (オプション) 商品の**画像**を追加します。2MB 未満の JPEG、PNG、WEBP 形式のファイルを使用してください。この画像は決済フローに表示されます。 1. (オプション) [Stripe Tax](https://docs.stripe.com/tax.md) を使用している場合は、商品の**税コード**を選択します。適切な商品カテゴリーについて、詳細は[税コード](https://docs.stripe.com/tax/tax-codes.md)をご覧ください。 1. (オプション) **明細書表記**を入力します。この表記は継続支払いのアカウント表記を上書きします。銀行明細書に記載された場合に顧客が内容を把握できるような表記を選んでください。 1. (オプション) **ユニットラベル**を入力します。ここでは、商品をどのように販売するかを説明できます。たとえば、ユーザー数で請求する場合には、「ユーザー」と入力して、項目に「ユーザーごと」の価格が含まれるようにします。ユニットラベルは購入時や、請求書、領収書、*カスタマーポータル* (The customer portal is a secure, Stripe-hosted page that lets your customers manage their subscriptions and billing details)に表示されます。 #### 商品の価格を作成する To save a product in the Dashboard, you must also add at least one price. The product editor shows the flat-rate pricing model by default. You can create multiple prices or use a different pricing model with the **Advanced pricing options**. 1. **料金体系モデル**を選択します。継続的な料金体系モデルの詳細は、[料金体系モデルのガイド](https://docs.stripe.com/products-prices/pricing-models.md)をご覧ください。 - **定額の料金体系:** 各ユニットに対して一律の価格を請求します。このオプションを使用する場合は、**1 回限り**または**継続**を選択します。 - **パッケージ料金体系:** 5 ユニットごとに 25 USD を請求するなど、パッケージやグループを単位にして請求します。購入数はデフォルトで切り上げられるので、8 ユニット購入する顧客は 50 USD を支払うことになります。 - **段階的な料金体系:** 注文内の一部のユニットに異なる価格が適用される場合がある、段階制料金を使用します。たとえば、最初の 100 ユニットに対してはユニット当たり 10 USD、以降の 50 ユニットについてはユニット当たり 5 USD を請求することができます。このオプションを使用する場合は、価格の通貨を選択して、段階の表に入力してください。 - **数量ベースの料金体系**: 販売する合計ユニット数に対して設定された単価で請求します。たとえば、50 ユニットの場合はユニット当たり 10 USD、100 ユニットの場合はユニット当たり 7 USD を請求します。このオプションを使用する場合は、価格の通貨を選択して、段階の表に入力してください。 - **顧客の選択による価格**: 商品、サービス、活動に対して支払う金額を支払人が決定できるようにします。**顧客の選択による価格**は、Checkout および Payment Links でのみ使用できます。 - **使用量ベースの料金体系**: 請求期間中のサービス利用量に応じて顧客に請求します。 1. (オプション) 複数の通貨で販売している場合は、**別の通貨を追加**をクリックして、通貨ごとの請求額を設定します。 1. 継続価格の**請求期間**を選択します。ドロップダウンのオプションに目的のものがない場合は、カスタムの期間を追加できます。 1. **税込み価格** か否かを選択してください。税とサブスクリプションについて、詳しくは[こちら](https://docs.stripe.com/billing/taxes/collect-taxes.md)をご覧ください。 1. (オプション) **価格の説明**を入力します。この説明は顧客には表示されません。 1. (オプション) 商品に複数の価格を作成する場合は、**高度な料金体系オプション**をクリックします。 1. **商品を追加**をクリックして、商品と価格を保存します。[どちらも後から編集](https://docs.stripe.com/products-prices/manage-prices.md#edit-product)できます。 #### API 単一の商品と価格を作成するには、次のようにします。 ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d "name=Basic Dashboard" \ -d "default_price_data[unit_amount]=1000" \ -d "default_price_data[currency]=usd" \ -d "default_price_data[recurring][interval]=month" \ -d "expand[]=default_price" ``` 顧客が初めてこのサービスに登録する際には、セットアップ料金も請求されます。 手数料を商品と価格として作成するには、異なる商品名と価格データを使用して同じリクエストを行います。 ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d "name=Starter Setup" \ -d "default_price_data[unit_amount]=2000" \ -d "default_price_data[currency]=usd" \ -d "expand[]=default_price" ``` ## 商品を編集する #### ダッシュボード ダッシュボードで商品を変更するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を見つけて、オーバーフローメニュー (⋯) をクリックし、**商品を編集**をクリックします。 1. その商品に変更を加えます。 1. **商品を保存**をクリックします。 商品情報ページ内からオーバーフローメニュー (⋯) または**編集**をクリックすることでも、商品を編集できます。 #### API API で商品を変更するには、以下のようにします。 ```curl curl https://api.stripe.com/v1/products/id \ -u "<>:" \ -d "name=Updated Product" ``` ## 商品をアーカイブする 商品を無効にして新しい請求書やサブスクリプションに追加できないようにする場合は、その商品をアーカイブできます。商品をアーカイブしても、その商品を使用する既存のサブスクリプションはキャンセルされるまで有効なままですが、その商品を使用する既存の決済用リンクは無効化されます。価格が関連付けられている商品は削除できませんが、アーカイブは可能です。 #### ダッシュボード 商品をアーカイブするには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックし、**商品をアーカイブ**をクリックします。 商品のアーカイブを解除するには、以下のようにします。 1. **商品カタログ** > **概要** ページで**アーカイブ済み** タブに移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックし、**商品のアーカイブを解除**をクリックします。 商品情報ページから商品のアーカイブを解除することもできます。 #### API API を使用して、商品をアーカイブ (商品が購入不可であることを表示) するには、[active](https://docs.stripe.com/api/products/update.md#update_product-active) パラメーターを `false` に変更します。 ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d active=false \ -d "name=My product" ``` API を使用して、商品のアーカイブを解除 (商品が購入可能であることを表示) するには、[active](https://docs.stripe.com/api/products/update.md#update_product-active) パラメーターを `true` に変更します。 ```curl curl https://api.stripe.com/v1/products/id \ -u "<>:" \ -d active=true ``` ## 商品を削除する 価格が関連付けられていない商品のみを削除できます。あるいは、[商品をアーカイブ](https://docs.stripe.com/products-prices/manage-prices.md#archive-product)することができます。 #### ダッシュボード 商品に価格が関連付けられている場合は、商品を削除する前に価格を[削除](https://docs.stripe.com/products-prices/manage-prices.md#delete-price)または[アーカイブ](https://docs.stripe.com/products-prices/manage-prices.md#archive-price)する必要があります。Stripe は、過去の取引の価格と商品の記録を保持します。 商品を完全に削除するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックし、**商品を削除**をクリックします。 #### API API を使用して商品を完全に削除するには、[商品の削除](https://docs.stripe.com/api/products/delete.md)を使用します。 ```curl curl -X DELETE https://api.stripe.com/v1/products/{{PRODUCT_ID}} \ -u "<>:" ``` ## 料金を作成する 1 つの商品に対して 1 つまたは複数の価格を作成できます。例えば、「スターター」レベルを月額 10 USD、年額 100 USD、または 1 回限りの購入額 9 EUR で提供することができます。 > 価格の作成後は、その `metadata`、`nickname`、`active` フィールドのみを更新できます。 #### ダッシュボード ダッシュボードで価格を作成するには、まず[商品を作成](https://docs.stripe.com/products-prices/manage-prices.md#create-product)する必要があります。その後、価格を作成できます。 1. **料金体系モデル**を選択します。継続的な料金体系モデルの詳細は、[料金体系モデルのガイド](https://docs.stripe.com/products-prices/pricing-models.md)をご覧ください。 - **定額の料金体系:** 各ユニットに対して一律の価格を請求します。このオプションを使用する場合は、**1 回限り**または**継続**を選択します。 - **パッケージ料金体系:** 5 ユニットごとに 25 USD を請求するなど、パッケージやグループを単位にして請求します。購入数はデフォルトで切り上げられるので、8 ユニット購入する顧客は 50 USD を支払うことになります。 - **段階的な料金体系:** 注文内の一部のユニットに異なる価格が適用される場合がある、段階制料金を使用します。たとえば、最初の 100 ユニットに対してはユニット当たり 10 USD、以降の 50 ユニットについてはユニット当たり 5 USD を請求することができます。このオプションを使用する場合は、価格の通貨を選択して、段階の表に入力してください。 - **数量ベースの料金体系**: 販売する合計ユニット数に対して設定された単価で請求します。たとえば、50 ユニットの場合はユニット当たり 10 USD、100 ユニットの場合はユニット当たり 7 USD を請求します。このオプションを使用する場合は、価格の通貨を選択して、段階の表に入力してください。 - **顧客の選択による価格**: 商品、サービス、活動に対して支払う金額を支払人が決定できるようにします。**顧客の選択による価格**は、Checkout および Payment Links でのみ使用できます。 - **使用量ベースの料金体系**: 請求期間中のサービス利用量に応じて顧客に請求します。 1. (オプション) 複数の通貨で販売している場合は、**別の通貨を追加**をクリックして、通貨ごとの請求額を設定します。 1. 継続価格の**請求期間**を選択します。ドロップダウンのオプションに目的のものがない場合は、カスタムの期間を追加できます。 1. **税込み価格** か否かを選択してください。税とサブスクリプションについて、詳しくは[こちら](https://docs.stripe.com/billing/taxes/collect-taxes.md)をご覧ください。 1. (オプション) **価格の説明**を入力します。この説明は顧客には表示されません。 1. **価格を作成する**をクリックして、価格を保存します。[価格は後から編集](https://docs.stripe.com/products-prices/manage-prices.md#edit-price)できます。 #### API API で価格を作成するには、[価格の作成](https://docs.stripe.com/api/prices/create.md)を使用します。 この例では、サービスは「スターター」サービスレベルに対して月額 10 USD を請求します。 `unit_amount` パラメーターは、価格に指定された通貨の最小単位を使用します。このケースでは、最小単位はセントです。10 USD は 1,000 セントなので、価格の `unit_amount` は `1000` になります。 価格を作成してそれを商品に割り当てるには、商品 ID、単価、通貨、および期間を渡します。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=1000 \ -d currency=usd \ -d "recurring[interval]=month" ``` 新規顧客に対する設定手数料は 20 USD です。この請求はサブスクリプションとは別に 1 回のみ請求されるため、`interval` を渡す必要はありません。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=2000 \ -d currency=usd ``` ### デフォルトの価格を設定する プロダクトのデフォルトの価格として適しているのは、顧客に提示したい最も一般的な価格です。例えば、季節ごとのセール向けにあるプロダクトに複数の価格が設定されている場合、デフォルト価格は定価 (セール価格ではない) にします。[ダッシュボード](https://dashboard.stripe.com/products)でプロダクトを作成したときの価格がデフォルト価格になります。このデフォルト価格は[有効な](https://docs.stripe.com/api/prices/object.md#price_object-active)価格でなければなりません。 #### ダッシュボード ダッシュボードで商品のデフォルトの価格を変更するには、次のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を見つけて、オーバーフローメニュー (⋯) をクリックし、**商品を編集**をクリックします。 1. **料金情報**セクションで、新しいデフォルト価格として設定する価格を見つけ、**デフォルト価格として設定**をクリックします。 1. **商品を保存**をクリックします。 ダッシュボードで新しい価格を作成して新しいデフォルト価格にするには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を見つけてクリックし、商品情報ページを開きます。 1. **料金体系**セクションの**新しい料金を追加**ボタンをクリックします。 1. 料金体系の詳細を入力して、**デフォルト価格として設定**を選択します。[価格を作成](https://docs.stripe.com/products-prices/manage-prices.md#create-price)するときに使用できるフィールドの詳細をご覧ください。 1. **価格を追加**をクリックします。 #### API ```curl curl https://api.stripe.com/v1/products/{{PRODUCT_ID}} \ -u "<>:" \ -d "default_price={{PRICE_ID}}" ``` ### インライン価格を作成する [インライン価格](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#inline-pricing)を作成するには、1 回限りの支払いまたはサブスクリプションを作成するときに `price.id` ではなく `price_data` を渡します。たとえば、顧客をインライン価格の月次サブスクリプションに登録するには、次の手順に従います。 ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price_data][unit_amount]=5000" \ -d "items[0][price_data][currency]=usd" \ -d "items[0][price_data][product]={{PRODUCT_ID}}" \ -d "items[0][price_data][recurring][interval]=month" ``` これにより、基本サービスに対する 50 USD の月次の継続価格が作成されます。インライン価格は作成後の更新・再利用ができません。`price_data` で作成された価格は標準で非活性化されます (`active=false`)。`price_data` は、[Checkout Sessions](https://docs.stripe.com/api/checkout/sessions.md)、[Payment Links](https://docs.stripe.com/api/payment-link.md)、[インボイスアイテム](https://docs.stripe.com/api/invoiceitems.md)、および [サブスクリプションスケジュール](https://docs.stripe.com/api/subscription_schedules.md) でも使用できます。 ### 多通貨価格を作成する [多通貨の価格](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#multiple-currencies)は、[API](https://docs.stripe.com/api/prices/create.md) またはダッシュボードで作成できます。 #### ダッシュボード ダッシュボードから多通貨の Price を作成するには、次のようにします。 1. [商品カタログ](https://dashboard.stripe.com/test/products)に移動し、商品を選択します。 1. **商品を編集** をクリックします。 1. **+ 別の価格を追加** をクリックして、新しい価格を作成します。デフォルト通貨は、Price の最初の通貨です。すべての Price に同じデフォルト通貨が設定されている必要があります。 1. 価格に新しい通貨オプションを追加するには、**+ 通貨別の価格を追加する** をクリックします。サポートされている通貨の一覧から探して選択してください。 - は、12:00 PM (東部標準時) の通貨価値に基づいて為替レートを提案しますが、独自のレートを選択することができます。変動が大きい通貨の場合は、余裕を持たせることをお勧めします。 1. 新しい Price を保存するには、**次へ** > **商品を更新** をクリックします。 #### API [currency](https://docs.stripe.com/api/prices/create.md#create_price-currency) パラメーターは、Price のデフォルトの通貨を設定します。すべての価格に同じデフォルト通貨が設定されている必要があります。[currency_options](https://docs.stripe.com/api/prices/create.md#create_price-currency_options) パラメーターは、Price がサポートする他の通貨を設定します。 このコードスニペットは、デフォルト通貨として `usd` (米ドル)、`eur` (ユーロ)、`jpy` (日本円) をサポートする Price を作成する方法を示しています。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d unit_amount=1000 \ -d currency=usd \ -d product={{PRODUCT_ID}} \ -d "currency_options[eur][unit_amount]=9000" \ -d "currency_options[jpy][unit_amount]=12000" ``` [クーポン](https://docs.stripe.com/billing/subscriptions/coupons.md#coupons)、[プロモーションコード](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes)、[配送料](https://docs.stripe.com/payments/during-payment/charge-shipping.md)も価格と同様に多通貨に対応しています。 #### 多通貨価格を表示する 顧客に現地通貨で価格を表示するには、多通貨の Price を取得して、その [currency_options..unit_amount](https://docs.stripe.com/api/prices/object.md#price_object-currency_options-unit_amount) フィールドを確認します。デフォルトでは、API の応答に `currency_options` は含まれません。レスポンスにこのフィールドを含めるには、`currency_options` フィールドを[拡張](https://docs.stripe.com/api/expanding_objects.md)します。 ```curl curl -G https://api.stripe.com/v1/prices/{{PRICE_ID}} \ -u "<>:" \ -d "expand[]=currency_options" ``` > 遅延を改善してレート制限に伴う問題を避けるには、顧客がサイトを訪れるたびに価格を再取得するのではなく、キャッシュするようにします。 #### 多通貨価格を使用する 各購入では、システムでの価格の適用方法に応じて、他通貨価格がサポートする通貨のいずれかが使用されます。 #### Stripe Checkout 価格が対応している通貨であれば、Checkout が顧客の IP アドレスから顧客の現地通貨を判断します。顧客の現地通貨に対応していない場合、Checkout は価格にデフォルトの通貨を使用します。 Checkout セッションで複数の価格、クーポン、プロモーションコード、または配送料金が使用されている場合、そのすべてが顧客の現地通貨に対応している必要があります。対応していない場合、Checkout はデフォルトの通貨を使用します。すべてに同じデフォルト通貨が設定されている必要があります。異なっていると、Checkout Session を作成するときに Stripe がエラーを返します。 また、[currency](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-currency) パラメーターを使用して、Checkout で使用する通貨を明示的に指定することもできます。 Checkout での [手動通貨価格](https://docs.stripe.com/payments/checkout/localize-prices/manual-currency-prices.md) の定義の詳細をご確認ください。 #### Payment Links 価格が対応している通貨であれば、Payment Links が顧客の IP アドレスから顧客の現地通貨を判断します。顧客の現地通貨に対応していない場合、決済用リンクは価格にデフォルトの通貨を使用します。 決済用リンクに複数の価格がある場合、そのすべてが顧客の現地通貨に対応している必要があります。対応していない場合、その決済用リンクはデフォルトの通貨を使用します。すべての価格に同じデフォルト通貨が設定されている必要があります。異なっていると、決済フォームへのリンクを作成するときに Stripe がエラーを返します。 あるいは、[currency](https://docs.stripe.com/api/payment-link/create.md#create_payment_link-currency) パラメーターを使用して、決済用リンクにどの通貨を使うか明示的に指定することもできます。 #### サブスクリプション サブスクリプションは、いくつかの方法で作成できます。多通貨の価格の使用方法は、サブスクリプションの作成方法によって異なります。 - Stripe Checkout を使用してサブスクリプションを作成する場合、Price が対応している通貨であれば、Checkout が顧客の IP アドレスから顧客の現地通貨を判断します。顧客の現地通貨に対応していない場合、Checkout は価格にデフォルトの通貨を使用します。単一の Checkout Session で複数の価格、クーポン、プロモーションコード、または配送料金が使用されている場合、そのすべてが顧客の現地通貨に対応していて、そのデフォルト通貨がすべて同じである必要があります。 - Stripe Elements でサブスクリプションを作成する場合は、[currency](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-currency) パラメーターを使用して、サブスクリプションに価格に使用する通貨を指定します。(`currency` パラメーターを省略すると、サブスクリプションは価格にデフォルト通貨を使用します。) - [サブスクリプションのスケジュール](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md) は多通貨の価格にも対応しています。多通貨の価格でサブスクリプションスケジュールを作成するには、[phases.currency](https://docs.stripe.com/api/subscription_schedules/create.md#create_subscription_schedule-phases-currency) パラメーターを使用して、価格として使用する通貨をスケジュールに指示します。(`phases.currency` パラメーターを省略すると、スケジュールおよびそのスケジュールによって管理されるサブスクリプションは、価格にデフォルト通貨を使用します。) #### 見積もり Quotes は多通貨の Price をサポートしていません。多通貨の価格で見積もりを作成した場合、見積もりは常にデフォルトの通貨を価格に使用します。 #### 請求書 請求書アイテムを作成する場合、[currency](https://docs.stripe.com/api/invoiceitems/create.md#create_invoiceitem-currency) パラメーターを使用して、請求書アイテムに多通貨の価格に使用する通貨を指定します。 `currency` パラメーターは、顧客のデフォルトの通貨と同じであっても明示的に渡す必要があります。`currency` パラメーターを省略すると、多通貨の価格は機能しません。 #### 単一通貨価格から多通貨価格に移行する 単一通貨の価格が既存の場合、ダッシュボードで、後からその価格に複数の通貨を追加できます。 Checkout または Payment Links を使用している場合、多通貨の Price が自動的に有効になります。価格が顧客の現地通貨をサポートしていることを Stripe が検出すると、その通貨が自動的に使用されます。1 回の購入で複数の価格、クーポン、プロモーションコード、または配送料金が使用されている場合、そのすべてが顧客の現地通貨に対応していて、そのデフォルト通貨がすべて同じである必要があります。 サブスクリプションを直接作成した場合、多通貨の Price は `currency` パラメーターを渡すまで有効になりません。`currency` パラメーターを渡さない場合、サブスクリプションは常に価格にデフォルト通貨を使用します。 ### 検索キー 企業の多くは、ウェブサイトに価格情報を掲示しています。これらの価格がハードコード化されていて、価格の変更を必要とする場合、その変更プロセスはたいてい手作業であり、新しいコードのデプロイが必要になります。このようなシナリオを管理しやすくするために、[Price オブジェクト](https://docs.stripe.com/api/prices/object.md#price_object)で [lookup_key](https://docs.stripe.com/api/prices/create.md#create_price-lookup_key) 属性を使用します。このキーを使用することで以下の処理が可能になります。 - フロントエンドでさまざまな価格をレンダリングする。 - レンダリングされた価格を使用して顧客に請求する。 価格を作成する際に、`lookup_key` を渡すことができます。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=1000 \ -d currency=usd \ -d "recurring[interval]=month" \ -d lookup_key=standard_monthly ``` 料金体系ページで**月額 10 USD** などのテキストをハードコード化してバックエンドで価格 ID を使用するのではなく、`standard_monthly` キーを使用して料金をクエリし、その結果をフロントエンドに表示できます。 ```curl curl -G https://api.stripe.com/v1/prices \ -u "<>:" \ -d "lookup_keys[]=standard_monthly" ``` > パフォーマンスを改善するため、キャッシングレイヤーを追加して、価格の再読み込みは必要な場合のみ行うことをお勧めします。 顧客が登録や支払いのボタンをクリックしたら、上記の `GET` リクエストからの価格を Subscriptions API に渡します。 これにより、複数の料金を表示できるようになります。新規ユーザーに対する請求を毎月 10 USD ではなく 20 USD に変更した場合、新しい料金を作成し、[transfer_lookup_key=true](https://docs.stripe.com/api/prices/create.md#create_price-transfer_lookup_key) を使用して検索キーをその新しい料金に転送するだけで済みます。 #### 切り捨て/切り上げ 切り捨て/切り上げは、*請求書* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice)のラインアイテムレベルで行われます。たとえば、`unit_amount_decimal = 0.05` で料金を作成し、その[料金]で `quantity = 30` として月次サブスクリプションを作成した場合、数量に小数の金額を乗じた後に切り捨て/切り上げが適用されます。この例の場合、ラインアイテムで算出される金額は、`0.05 * 30 = 1.5` となり、2 セントに切り上げられます。複数のラインアイテムが存在する場合は、請求書の合計金額の計算前に、それぞれのラインアイテムで切り捨て/切り上げが行われます。これにより、小数は料金にのみ適用されることになり、顧客への請求は整数単位の金額で行われます。 外税は、税率に応じて各ラインアイテムの金額に加算されます。[税金の自動計算](https://docs.stripe.com/tax/invoicing.md)を有効にしている場合、外税は、請求書ごとの割引を含めた合計額に対して適用され、端数処理されます。ラインアイテムごとまたは請求書ごとのいずれかで税率を手入力する場合、端数処理の適用方法を選ぶことができます。ダッシュボード内の[請求書設定](https://dashboard.stripe.com/settings/billing/invoice)ページで、個々のラインアイテムまたは請求書の小計に対して、税金の適用と端数処理を設定します。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=2000 \ -d currency=usd \ -d "recurring[interval]=month" \ -d lookup_key=standard_monthly \ -d transfer_lookup_key=true ``` ## 料金を編集する ダッシュボードまたは API で、価格に関する複数のプロパティを更新できます。たとえば、価格を有効にしたり解除したり、価格のメタデータを変更することができます。 API では価格の金額を変更できないことに注意してください。代わりに、新たな金額で新しい価格を作成し、その新しい価格の ID に切り替えて、古い価格を更新して無効にすることをお勧めします。 #### ダッシュボード ダッシュボードで価格を変更するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する価格の商品を見つけてクリックします 1. 変更する価格を探して、オーバーフローメニュー (⋯) をクリックし、**価格を編集**をクリックします。 1. 価格を変更します。この時点で別の価格を追加することができます。 1. **保存**をクリックします。 #### API API を使用して価格を編集するには、[価格の更新](https://docs.stripe.com/api/prices/update.md)を使用して、変更するパラメーターを指定します。パラメーターを指定しない場合は変更されません。 ```curl curl https://api.stripe.com/v1/prices/id \ -u "<>:" \ -d lookup_key=MY_LOOKUP_KEY ``` ## 料金をアーカイブする 価格を無効にして、新しい請求書またはサブスクリプションに追加できないようにする場合は、その価格をアーカイブできます。価格をアーカイブする場合、その価格を使用する既存のサブスクリプションは、キャンセルされるまで有効なままになります。また、その商品を使用する既存の決済フォームへのリンクは無効化されます。 #### ダッシュボード ダッシュボードで価格をアーカイブするには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックします。 1. 商品情報ページで、変更する価格を探して、その価格の横にあるオーバーフローメニュー (⋯) をクリックし、**価格をアーカイブ**をクリックします。 価格のアーカイブを解除するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックします。 1. 商品情報ページで、変更する価格を探して、その価格の横にあるオーバーフローメニュー (⋯) をクリックし、**価格のアーカイブを解除**をクリックします。 #### API API を使用して、価格をアーカイブ (新たな購入に利用できないことを表示) するには、[active](https://docs.stripe.com/api/prices/update.md#update_price-active) パラメーターを `false` に変更します。 ```curl curl https://api.stripe.com/v1/prices/id \ -u "<>:" \ -d lookup_key=MY_LOOKUP_KEY \ -d active=false ``` API を使用して、価格のアーカイブを解除 (新たな購入に利用できることを表示) するには、[active](https://docs.stripe.com/api/prices/update.md#update_price-active) パラメーターを `true` に変更します。 ```curl curl https://api.stripe.com/v1/prices/id \ -u "<>:" \ -d lookup_key=MY_LOOKUP_KEY \ -d active=true ``` ## 料金を削除する 使用されたことがない価格のみを削除できます。あるいは、[価格をアーカイブ](https://docs.stripe.com/products-prices/manage-prices.md#archive-price)することができます。 #### ダッシュボード ダッシュボードで価格を完全に削除するには、以下のようにします。 1. **その他** > **商品カタログ** に移動します。 1. 変更する商品を探して、オーバーフローメニュー (⋯) をクリックします。 1. 商品情報ページで、変更する価格を探して、その価格の横にあるオーバーフローメニュー (⋯) をクリックし、**料金を削除**をクリックします。 #### API API を使用して価格を削除することはできません。価格を[アーカイブ](https://docs.stripe.com/products-prices/manage-prices.md#archive-price)して、`active=false` としてマークすることで、購入に使用できないことを示すことができます。 ## 料金体系情報を表示する 商品と料金を作成した後、ウェブサイトに[料金表](https://docs.stripe.com/payments/checkout/pricing-table.md)を埋め込み、料金体系の情報を顧客に表示することができます。顧客がサブスクリプションを選択すると、決済フローに直接移動します。コードを記述することなく、[ダッシュボード](https://dashboard.stripe.com/test/pricing-tables)で設定、カスタマイズ、更新を直接行うことが可能です。 ## 商品および価格をインポートする 商品カタログが非常に大きい場合は、[Products](https://docs.stripe.com/api/products.md) API を使用して、カタログをプログラムでインポートします。商品カタログを Stripe にインポートする場合、商品管理システムや CSV ファイルなど、任意の開始データソースを使用できます。 [Products](https://docs.stripe.com/api/products.md) API を使用して、システム内の各製品に対して Stripe で製品を作成します。システム内の商品を Stripe 内の商品にマッピングするには、インポートする各商品に一意の [id](https://docs.stripe.com/api/products/create.md#create_product-id) を割り当てます。商品ごとに、[Prices](https://docs.stripe.com/api/prices.md) API を使用して対応する価格を作成します。新しく作成した価格の `id` を必ず保存してください。この `id` は、実装で[商品と価格を使用する](https://docs.stripe.com/products-prices/manage-prices.md#use-products-and-prices)ときに渡す必要があります。 [ダッシュボード](https://dashboard.stripe.com/products)を確認するか、API を使用して [List all products (すべての商品をリスト)](https://docs.stripe.com/api/products/list.md) することで、インポートを確認します。 ### インポートした価格を削除する 開発中は、テストのためにこのスクリプトを複数回実行する必要がある場合があります。同じ製品 ID を使用すると、その ID の製品が既に存在することを示すエラーが表示されます。製品をまだ使用していない場合は、Stripe ダッシュボードを使用して削除できます。 1. 商品の[ダッシュボード](https://dashboard.stripe.com/products)に移動して、商品を見つけます。 1. **料金体系**セクションで、価格の隣にあるオーバーフローメニュー (⋯ オーバーフローメニュー) をクリックして、**料金を削除**を選択します。 1. ページの上部にあるオーバーフローメニュー (⋯ オーバーフローメニュー) をクリックして、**商品を削除**を選択します。 ### 商品と価格を同期する 場合によっては、インポートを複数回実行する必要があります。インポートをテストするスクリプトを作成し、必要に応じて元のデータ ソースを Stripe と同期できます。スクリプトをべき等にしてエラーに対する回復性を持たせるには、まず製品を作成してみるのが安全であり、製品が既に存在する場合は更新しても構いません。 商品カタログと Stripe との同期を維持するには、Webhook またはその他のメカニズムを使用して、Stripe で商品の更新をトリガーします。プログラムで[商品を更新](https://docs.stripe.com/api/products/update.md)するには、次のパターンを使用します。 最初に、[List all prices (すべての価格をリスト)](https://docs.stripe.com/api/prices/list.md) API を使用して、商品に関連付けられている既存の価格を見つけ、価格がデータソースと一致していることを確認します。各商品には有効な価格が 1 つだけ設定されている必要があります。 ```curl curl -G https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d active=true ``` 次に、価格の小数点以下の金額が変更されているかどうかを確認します。`unit_amount_decimal` [フィールド](https://docs.stripe.com/api/prices/object.md#price_object-unit_amount_decimal)には、単価がセント単位で表示されます。 金額が一致しない場合は、新しい価格を作成する必要があります。[新しい価格を作成](https://docs.stripe.com/api/prices/create.md)する際、元の商品の `product` ID、`currency`、および更新後の `unit_amount` 価格を指定します。 ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=2000 \ -d currency=usd ``` [古い価格を更新](https://docs.stripe.com/api/prices/update.md)して `active=false` とマークします。 ```curl curl https://api.stripe.com/v1/prices/{{PRICE_ID}} \ -u "<>:" \ -d active=false ``` ## 導入で商品と価格を使用する 商品と価格は、複数の異なる Stripe 導入パスで使用できます。 #### Stripe Checkout Checkout セッションを作成するときに価格 ID を指定します。 - 1 回だけ適用される価格を使用している場合には、支払いの受け付け時に [Checkout Session を作成する方法](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#redirect-customers)をご覧ください。 - サブスクリプションを作成する場合は、サブスクリプション連携を構築する際の [Checkout セッションの作成方法](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted#create-session)をご覧ください。 #### Payment Links Payment Links を使用する場合、次のステップとして、[決済用のリンクを作成](https://docs.stripe.com/payment-links/create.md)する商品を選択します。 #### サブスクリプション Stripe Checkout でサブスクリプションを作成する場合は、[Checkout セッション](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted#create-session)の作成時に Price ID を指定します。 Stripe Elements でサブスクリプションを作成する場合は、[サブスクリプションの作成](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements&api-integration=checkout#create-session)時に Price ID を指定します。 #### 見積もり 見積もりを使用する場合、次のステップでは、[ダッシュボードを使用して見積もりを作成](https://docs.stripe.com/quotes/create.md?testing-method=without-code)するときに商品を選択します。 見積もりの実装のコードを作成する場合、[見積もりを作成](https://docs.stripe.com/quotes/create.md?testing-method=with-code#create-quote-code)するときに `price.id` を指定します。 #### 請求書 請求書を使用する場合、次のステップとして、[ダッシュボード](https://docs.stripe.com/invoicing/dashboard.md#create-invoice)での請求書の作成時に商品を選択します。[API](https://docs.stripe.com/invoicing/integration.md#create-invoice-code) を使用する場合は、`price.id` を指定します。 ## テスト テスト環境から本番環境に商品をコピーすると、再作成する必要がなくなります。商品に関連付けられている価格もコピーされます。ダッシュボードの商品詳細ページで、右上隅にある **本番環境にコピー** をクリックします。 テスト製品を本番環境にコピーできるのは一度だけです。コピー後にテスト製品を更新した場合、本番製品に変更は反映されません。