Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
    Overview
    Quickstarts
    Customize look and feel
    Collect additional information
    Collect taxes
    Dynamically update checkout
    Manage your product catalog
    Subscriptions
    Manage payment methods
    Let customers pay in their local currency
      Define manual currency prices
    Add discounts, upsells, and optional items
    Set up future payments
    Save payment details during payment
    After the payment
    Elements with Checkout Sessions API beta changelog
    Migrate from legacy Checkout
    Migrate Checkout to use Prices
Build an advanced integration
Build an in-app integration
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
Other Stripe products
Financial Connections
Crypto
Climate
HomePaymentsBuild a checkout pageLet customers pay in their local currency

Manual currency prices

Present local currencies to customers with manual currency prices.

Copy page

Stripe supports manually defining prices in different currencies when creating products. However, Stripe recommends leveraging Adaptive Pricing instead of manual currency prices to reduce currency exchange rate fluctuation risk and to automatically enable support for 50+ local currencies.

Use manual currency prices over Adaptive Pricing when:

  • Adaptive Pricing isn’t yet supported for your business or Checkout configuration (reach out to adaptive-pricing-beta@stripe.com to inquire about the preview).
  • You’re supporting a region where you’re comfortable taking on fluctuations in the currency’s exchange rate.

Manually defined multi-currency prices override Adaptive Pricing for those currencies, even if it’s enabled.

Create a multi-currency price
Dashboard
Server-side

  1. Navigate to a product in the Dashboard.
  2. Click +Add another price to create a new price.
  3. Fill in the price and select a currency. This first currency is the price’s default currency. Make sure all of your prices have the same default currency.
  4. Click +Add a price by currency to search and select from supported currencies, adding them to your price.
  5. Use the multi-currency price you created by passing its ID into line items when you create a Checkout Session.

Create a Checkout Session
Server-side

Create a Checkout Session using the multi-currency price:

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success"

Testing
Server-side
Client-side

To test local currency presentment for Checkout, Payment Links, and the pricing table, pass in a location-formatted customer email that includes a suffix in a +location_XX format in the local part of the email. XX must be a valid two-letter ISO country code.

For example, to test currency presentment for a customer in France, pass in an email such as test+location_FR@example.com.

When you visit the URL for a Checkout Session, Payment Link, or pricing table created with a location-formatted email, you see the same currency as a customer does in the specified country.

Testing Checkout

When you create a Checkout Session, pass the location-formatted email as customer_email to simulate Checkout from a particular country.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d success_url="https://example.com/success" \ --data-urlencode customer_email="test+location_FR@example.com"

You can also create a Customer and specify their email that contains the +location_XX suffix. Stripe test cards work as usual.

When it’s possible to present the customer’s local currency in Checkout, the Checkout Session object changes. Fields like currency, payment_method_types, and amount_total reflect the local currency and price.

Testing Payment Links

For Payment Links, pass the location-formatted email as the prefilled_email URL parameter to test currency presentment for customers in different countries.

Testing Pricing table

For the pricing table, pass the location-formatted email as the customer-email attribute to test currency presentment for customers in different countries.

OptionalSpecify a currency
Server-side

Local payment methods

The Checkout Session presents customers with popular payment methods compatible with their local currencies. For example, for customers located in the Netherlands, the Checkout Session converts prices to EUR and also present popular Dutch payment methods like iDEAL.

You can configure which payment methods you accept in your payment methods settings.

Pricing tables

Manual currency prices also work with pricing tables. To render local currencies to customers viewing your pricing table, all of the pricing table’s Prices must include the customer’s local currency in their currency_options. They must also include a tax_behavior for the given currency if you’re using Stripe Tax.

Supported integrations

Checkout automatically presents the local currency to customers if all of the following are true:

  • The Checkout Session’s prices, shipping rates, and discounts have the relevant currency in their currency_options.
  • If a price on the Checkout Session has an upsell, the upsell’s price has the relevant currency in its currency_options.
  • For a Checkout Session using Stripe Tax, the tax_behavior on the Checkout Session is specified for the relevant currency for all of the Checkout Session’s prices, shipping rates, and discounts.
  • You didn’t specify a currency during Checkout Session creation.

If Checkout can’t localize the currency because the relevant currency option or tax_behavior is missing, the Session presents to the customer in the default currency. The default currency must be the same across all prices, shipping rates, and discounts.

Restrictions

Price localization isn’t available for Checkout Sessions that:

  • Use manual tax rates.
  • Use payment_intent_data.application_fee_amount or payment_intent_data.transfer_data.amount.

Fees

Stripe’s standard transaction fees apply to automatically converted transactions:

  • Cards or payment methods fee
  • International cards or payment methods fee (if applicable)
  • Currency conversion fee

See the pricing page for more details about these fees.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc