# Adaptive Pricing
Adaptive Pricing を使用して、顧客が現地通貨で支払えるようにします。
# Elements
> Adaptive Pricing は、Elements を使用した Checkout Sessions でのみサポートされています。Payment Intents API では Adaptive Pricing はサポートされていません。
Adaptive Pricing により、顧客は [150 カ国](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md#supported-currencies)以上で現地通貨で決済できます。Adaptive Pricing では、Stripe が顧客のパブリック IP アドレスから取引通貨を推測し、ローカライズされた価格を自動的に計算し、すべての通貨換算を処理します。
Adaptive Pricing は以下の用途に使用します。
- [Currency Selector Element](https://docs.stripe.com/elements/currency-selector-element.md) を使用し、地域に応じた料金を現地通貨で表示する
- 24 時間保証の為替レートを使用してリアルタイムで価格を計算する
- 現地通貨が必須である決済手段をを利用可能にする
- サポート対象の通貨を提示することでスムーズに法令を遵守する
#### 導入作業
Complexity: 2/5
#### 手数料
[料金とよくあるご質問](https://support.stripe.com/questions/adaptive-pricing)に記載されている情報をご覧ください。
#### UI のカスタマイズ
決済ページの任意の場所に [Currency Selector Element](https://docs.stripe.com/elements/currency-selector-element.md) を配置します。
## ダッシュボードで Adaptive Pricing を有効にする [ダッシュボード]
ダッシュボードの[決済設定](https://dashboard.stripe.com/settings/adaptive-pricing)で、決済用の Adaptive Pricing を管理します。サンドボックスと本番環境で Adaptive Pricing を有効にできます。Adaptive Pricing を無効にしても、すでに変換されている Checkout Sessions には影響しません。
## 地域に合わせた料金設定と表示形式 [クライアント側]
決済ページ全体で、選択した通貨に従って、項目、配送料、割引、税金、合計など、価格を一貫して表示することが重要です。
Adaptive Pricing で Elements を使用する場合、Adaptive Pricing が有効であれば、Elements の [Session オブジェクト](https://docs.stripe.com/js/custom_checkout/session_object)にローカライズされた値が含まれることがあります。購入者がどの国からサイトにアクセスしていても、その国に関連する金額や通貨がセッションに含まれる可能性があることを前提に、実装を設計してください。このワークフローは、[session.total.total.amount](https://docs.stripe.com/js/custom_checkout/session_object#custom_checkout_session_object-total-total-amount) のような事前にフォーマットされたフィールドに依存します。Stripe API から返される [Checkout Session](https://docs.stripe.com/api/checkout/sessions/object.md) オブジェクトは、Stripe 実装で設定された同じ通貨のままで、顧客コンテキストは [presentment_details](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-presentment_details) で利用できますが、Elements の [Session オブジェクト](https://docs.stripe.com/js/custom_checkout/session_object)と完全には一致しません。
#### HTML + JS
[Session オブジェクト](https://docs.stripe.com/js/custom_checkout/session_object)は、UI で直接使用できる書式設定された通貨値を提供します。
```javascript
const { actions } = await checkout.loadActions();
const { total } = actions.getSession();
// Display the formatted amounts in your UI
document.getElementById('order-total').textContent = total.total.amount;
```
#### React
[useCheckoutElements](https://docs.stripe.com/js/react_stripe_js/checkout/use_checkout_elements) フックは、UI で直接使用できるフォーマット済みの通貨値を提供します。
```jsx
import React from 'react';
import {useCheckoutElements} from '@stripe/react-stripe-js/checkout';
const OrderSummary = () => {
const checkoutState = useCheckoutElements();
if (checkoutState.type === 'success') {
// Display the formatted amounts in your UI
return (
Total: {checkoutState.checkout.total.total.amount}
);
}
};
```
## Currency Selector Element のレンダリング [クライアント側]
[Currency Selector Element](https://docs.stripe.com/elements/currency-selector-element.md) は、Adaptive Pricing の機能をサポートする埋め込み UI コンポーネントです。これは注文合計額の近くに表示されます。
> 貴社または顧客の地域に合わせて設定した料金に、適用される法律を遵守する責任は貴社が負います。Elements と Adaptive Pricing を併用する場合は Currency Selector Element をレンダリングする必要があります。貴社のビジネスに応じたアドバイスについては、貴社の法律顧問に相談することをお勧めします。
#### HTML + JS
Currency Selector Element をマウントするコンテナ DOM 要素を作成します。次に、[checkout.createCurrencySelectorElement](https://docs.stripe.com/js/custom_checkout/create_currency_selector_element)を使用して Currency Selector Element のインスタンスを作成し、CSS セレクターまたはコンテナ DOM 要素を提供して[element.mount](https://docs.stripe.com/js/element/mount)を呼び出してマウントします。[currencyOptions](https://docs.stripe.com/js/custom_checkout/session_object#custom_checkout_session_object-currencyOptions) が入力されている場合のみ Currency Selector Element を作成することを決定できます。`currencyOptions`がない場合、通貨セレクターエレメントがマウントされていても、何も表示されません。
```html
```
```javascript
const currencySelectorElement = checkout.createCurrencySelectorElement();
currencySelectorElement.mount('#currency-selector');
```
#### React
`CurrencySelectorElement` コンポーネントを `CheckoutElementsProvider` 内にマウントします。[currencyOptions](https://docs.stripe.com/js/react_stripe_js/checkout/use_checkout_elements#react_use_checkout_elements-currencyOptions) が設定されている場合にのみ `CurrencySelectorElement` をマウントするよう選択することもできます。`currencyOptions` がなく、`CurrencySelectorElement` がマウントされている場合は、何も表示されません。
```jsx
import React from 'react';
import {CurrencySelectorElement} from '@stripe/react-stripe-js/checkout';
const OrderSummary = () => {
return (
);
};
```
### デザインのベストプラクティス
決済ページ向けに、設定可能な **Currency Selector Element** を用意しています。セレクターを配置する場所を選択する際には、次のベストプラクティスに従ってください。
- 選択した通貨によって利用可能な決済手段に影響が及ぶ可能性があるため、**Currency Selector** は支払い情報を入力する場所の近く、理想としては **Payment Element** の真上に配置してください。
- 最初の時点で **Payment Element** が表示されない場合 (複数ステップのフローがあるか、ページの下部にあるため)、**通貨セレクター**を合計金額の表示の近くに配置します。
- 1 回限りの決済の場合は、 **通貨セレクター** に現地通貨額と実装時の金額が表示されます。サブスクの場合は、 **通貨セレクター** にこれらの金額は表示されません。決済画面には必ず合計金額を表示してください。
- [Express Checkout Element](https://docs.stripe.com/elements/express-checkout-element.md) を使用している場合は、Express Checkout Element の上に Currency Selector Element を配置し、顧客が請求される通貨を把握できるようにすることをお勧めします。
- これらのヒントを、すべての画面サイズのページレイアウトに適用してください。

> #### すべきこと
>
> 通貨セレクターを Payment Element の上に配置します。カードのみを受け付ける場合は、Payment Element のすぐ下に配置することもできます。
## Adaptive Pricing の統合準備完了のマークを付ける [クライアント側]
[価格のローカライズと書式設定](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md#localize-prices)を行い、[通貨セレクターを表示](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md#render-currency-selector-element)したら、決済の初期化時に [adaptivePricing.allowed](https://docs.stripe.com/js/custom_checkout/init#custom_checkout_init-options-adaptivePricing-allowed) パラメーターを設定して、Adaptive Pricing の準備完了のマークを付けます。
#### HTML + JS
```js
const checkout = stripe.initCheckoutElementsSdk({
clientSecret,
// Mark your integration as ready for Adaptive PricingadaptivePricing: {
allowed: true
}
});
// Use `checkout` to build your checkout page
```
#### React
```jsx
>")}
options={{
clientSecret,
// Mark your integration as ready for Adaptive PricingadaptivePricing: {allowed: true}
}}
>
{/* your components here */}
```
統合の準備完了としてマークされたら、ダッシュボードの[決済設定](https://dashboard.stripe.com/settings/adaptive-pricing)で、または[adaptive_pricing.enabled](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-adaptive_pricing-enabled)パラメーターを使用して、[Checkout Session](https://docs.stripe.com/api/checkout/sessions.md)ごとに Adaptive Pricing を管理できます。
## 地域固有の決済手段を設定する [ダッシュボード]
Adaptive Pricing では、顧客が現地通貨で支払うオプションと、顧客に最も適した支払い方法を選択できるようにすることで、現地の支払い方法の使用状況を増やすことができます。たとえば、オランダの E コマース取引の 70% で iDEAL が使用されていますが、iDEAL は EUR でのみ機能します。動的な支払い方法を使用する場合は、[支払い方法設定](https://dashboard.stripe.com/settings/payment_methods) で受け付ける支払い方法を設定できます。Adaptive Pricing では、現地通貨での表示が必要な以下の支払い方法を利用できます。
- Amazon Pay
- Bacs デビット
- Bancontact
- Bizum
- BLIK
- EPS
- iDEAL
- Link
- P24
- Pix
- 韓国のカード
- MB WAY
- Naver Pay
- Kakao Pay
- Pay by Bank
- PAYCO
- PayPal
- Revolut Pay
- Samsung Pay
- Satispay
- SEPA デビット
- TWINT
- WeChat Pay
- Klarna (EU+ イギリスのみ)
- UPI
> クロスボーダーサブスクリプションの場合、Adaptive Pricing はカード決済、Link、Apple Pay、Google Pay のみをサポートします。
## テスト
現地通貨の表示をテストするには、[Stripe.js テストアシスタント](https://docs.stripe.com/sdks/stripejs-testing-assistant.md#elements-inspector)を使用して顧客の場所をシミュレーションし、さまざまな国での導入の動作を確認します。
Checkout で顧客の現地通貨を表示できるようになると、[Checkout Session (Checkout セッション)](https://docs.stripe.com/api/checkout/sessions/object.md) オブジェクトが変わります。`currency`、`payment_method_types`、`amount_total` などのフィールドに現地の通貨と価格が反映されます。
### 顧客メールによるテスト
場所形式の顧客メールを使用して、現地通貨での表示をテストすることもできます。
現地の部分に `+location_XX` 形式のサフィックスを含めた、地域に応じた形式の顧客メールアドレスを渡します。`XX` は有効な[ 2 文字の ISO 国コード](https://www.nationsonline.org/oneworld/country_code_list.htm)である必要があります。
たとえば、フランスの顧客の通貨表示をテストするには、`test+location_FR@example.com` のようなメールを渡します。場所形式のメールで作成された決済セッションを使用して、通貨選択 Element と支払い Element が設定された決済画面を表示すると、指定された国の顧客と同じ通貨が表示されます。
Checkout Session を作成する際は、特定の国をシミュレーションするために、所在地形式のメールアドレスを [customer_email](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-customer_email) として渡します。
```curl
curl https://api.stripe.com/v1/checkout/sessions \
-u <>: \
-d "line_items[0][price]"="{{PRICE_ID}}" \
-d "line_items[0][quantity]"=1 \
-d mode=payment \
-d ui_mode=elements \
-d return_url="https://example.com/return" \
--data-urlencode customer_email="test+location_FR@example.com"
```
新しい顧客を作成し、それら用に `+location_XX` サフィックスを含むメールアドレスを指定することもできます。Stripe テストカードは通常どおり機能します。
## 制限
Adaptive Pricing は、Payment Intents API で Elements を使用しているビジネスではご利用いただけません。
Adaptive Pricing はインドのビジネスではサポートされていません。
また、Adaptive Pricing では、[価格の通貨](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency)が売上処理通貨のいずれかである必要があります。価格は購入時に自動的に換算されます。これは、作成して価格 ID で参照する[価格](https://docs.stripe.com/products-prices/manage-prices.md#prices-create)と、Checkout セッションの作成時に [price_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data) を使用して作成するインライン価格に適用されます。
プラットフォームを介して決済を処理する場合、プラットフォームの実装通貨を、その支払いのマーチャントオブレコードの売上処理通貨にする必要があります。
Adaptive Pricing は、次のような Checkout セッションには適用されません。
- 価格の [currency_options](https://docs.stripe.com/payments/checkout/localize-prices/manual-currency-prices.md) に、顧客の現地通貨がすでに定義されている価格が含まれます。たとえば、ある価格で EUR と GBP の `currency_options` が設定されている場合、Adaptive Pricing では EUR や GBP には換算されませんが、CAD や JPY などの他の通貨には引き続き換算できます。
- [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) は `manual` にして使用します。
- [カスタムの金額](https://docs.stripe.com/payments/checkout/pay-what-you-want.md)を使用します。
Adaptive Pricing が対応していない Checkout セッションでは、料金を設定した元の通貨で料金が提示されます。
詳細については、[サポートページ](https://support.stripe.com/questions/adaptive-pricing)をご確認ください。
## サポートされている通貨
サポート対象地域の企業は、以下の市場の顧客の現地通貨に価格を自動的に換算できます。
### 北アメリカ
- AG
- AW
- BS
- BB
- BZ
- BM
- CA
- KY
- CR
- DM
- DO
- GD
- GT
- HT
- HN
- MX
- JM
- PA
- KN
- LC
- VC
- TT
- US
### 南米
- BR
- BO
- CO
- CL
- FK
- GY
- PY
- PE
- UY
### ヨーロッパ
- AL
- AD
- AT
- BE
- BA
- HR
- CY
- CZ
- DK
- EE
- FI
- FR
- DE
- GI
- GR
- HU
- IS
- IE
- IT
- LV
- LT
- LU
- MT
- MC
- MD
- ME
- NL
- MK
- NO
- PL
- PT
- RO
- SM
- RS
- SK
- SI
- ES
- SE
- CH
- UA
- GB
- VA
### アジア
- AF
- AM
- AZ
- BD
- BN
- KH
- CN
- GE
- HK
- IN
- ID
- IL
- JP
- KZ
- KG
- MO
- MY
- MV
- MN
- NP
- PK
- PH
- QA
- SA
- SG
- KR
- LK
- TW
- TJ
- TH
- TR
- AE
- UZ
- VN
- YE
### オセアニア
- AU
- PF
- NC
- NZ
- WF
### アフリカ
- AO
- DZ
- BJ
- BW
- BF
- BI
- CM
- CV
- CF
- TD
- CI
- DJ
- GQ
- GA
- GM
- GN
- GW
- KE
- LR
- MG
- ML
- MU
- MA
- MZ
- NA
- NE
- CG
- RW
- SH
- ST
- SN
- ZA
- TZ
- TG
- UG
- ZM
## 料金体系
- お客様の決済は 0%
- 顧客の負担は 2 ~ 4%
Adaptive Pricing の追加の Stripe 手数料はすべて顧客によって支払われるため、お客様が直接支払うことはありません。Stripe が顧客に提供する為替レートには、換算手数料が 2 ~ 4% 含まれ、それに応じて購入価格が引き上げられます。手数料は Stripe が決定しますが、これは顧客の換算率を高めるという目的で異なります。顧客が 導入通貨 で支払うことを選択した場合、この手数料は支払いませんが、お客様の銀行の為替レートと手数料が適用される場合があります。Stripe の最新の手数料については、Stripe の[料金体系ページ](https://stripe.com/pricing)をご覧ください。
## 為替レート
Stripe は市場の為替レートを使用し、手数料を適用して売上処理までのレートを保証します。
[通貨換算](https://docs.stripe.com/currencies.md)と [Adaptive Pricing 手数料](https://support.stripe.com/questions/adaptive-pricing#:~:text=Adaptive%20Pricing%20is%20a%20Checkout,latest%20Stripe%2Dprovided%20exchange%20rates)の処理方法については、これらの記事をご確認ください。
## 返金
システムで使用している通貨のうち、で返金を行う場合、Stripe は顧客が支払いに使用した通貨に換算して返金処理します。返金には元の取引と同じ通貨換算レートが適用されるため、追加コストは発生せず、顧客は支払った金額と同額の返金を受け取ることができます。
Stripe が[返金](https://docs.stripe.com/refunds.md)の管理をサポートする方法をご紹介します。
## See also
- [Adaptive Pricing に関するよくあるご質問](https://support.stripe.com/questions/adaptive-pricing)