Do you sell products or subscriptions through Stripe? Would you like to localize prices — that is, to offer different prices and currencies for different geographic markets?

Charging Yen to Japan and Euros to the Eurozone (etc.) is an increasingly popular technique for boosting checkout conversions and growth rates — but Stripe doesn't offer this functionality out of the box.

You can use a turn-key solution like Haiku® Crow to make price localization easy on top of Stripe, or you can implement a solution from scratch. This article explains how.

The key to optimal pricing is experimentation. So this 4-step guide describes how to create an experiment loop that you can implement to find the ideal localized pricing for your products.

Table of Contents:

Step 1: Measure

Find which geographies are best-performing, and start your experiments there. Most companies find their geographic markets perform along a Pareto distribution, shaped by the old "80%/20% rule". This means that targeting a handful of your best-performing markets will yield most of your benefit.

Your goal for Step 1 is to understand your baseline revenue & growth for each market, so that once you change a price, you can see how those baselines are affected.

To gather this data, you can:

  • Pull the data from the Stripe API and feed it into a dashboard or reporting tool
  • Use a revenue analytics tool that supports segmentation by geography
  • Use Haiku® Crow, which connects with Stripe and shows how each geography is performing.

Haiku® Crow offers an easy way to measure the performance of any geographic market from the global dashboard. Haiku® Crow offers an easy way to measure the performance of any geographic market from the global dashboard.

You can also enrich this transaction data by cross-referencing against your site traffic analytics tool (like Google Analytics) — if you find a certain geography is providing a lot of traffic but not a lot of conversions, that's a good sign that you should offer a lower price for that market.

Step 2: Design

For the locales you've chosen, it's now time to determine your currency and rates. Several considerations feed into how you should price your product for each geography.

Purchase Power Parity, or PPP is a strong starting point. PPP is measured as a single number per country, which can be used instead of an exchange rate per USD as a way to convert currencies with a measure of relative buying power.

For example, let's imagine we have a product priced at $100 in the US market and that this price is already optimized per the US demand curve.

A hypothetical demand curve for a product in the US market.  This product is priced at a sweet spot in the demand curve, maximizing revenue

Colombia's exchange rate in 2019 was about 3300 pesos per USD. If you price a product at $100 USD, a simple currency conversion would suggest charging 330,000 pesos in Colombia. This is exactly what you're doing if you charge $100 to Colombian customers. Colombia's PPP in 2019, though, was 1349 — considerably lower than the exchange rate.

Adjusting for PPP, $100 USD * the PPP of 1349 suggests charging 134,900 Colombian pesos (about US$36) for your product — less than half of the exactly converted price.

A hypothetical demand curve for a product in the Colombian market.  The product priced at US$100 is too expensive for this market, but the PPP-adjusted price finds a revenue-maximizing sweet spot.

This all passes a gut-check: the US price may be out of reach for a larger portion of the Colombian market, so a lower price should perform better.

If you want to go further than PPP, you can examine other factors that contribute to price elasticity, like the strength of relevant industries in a country, practical barriers to commerce, and competition in that market. Your goal is to understand the unique demand curve for that market so you can price accordingly. As a practical example, if your goal is to win market share in a geographic market that you know is competitive, you may want to price aggressively low in that market.

Finally — adjust your prices for the psychology of your customers. For example, you should make your annual prices for each currency evenly divisibly by 12 if you display them as monthly rates. You may also want to round to a near "99" number for charm pricing, or avoid numbers that you customers' culture considers unlucky.

When designing your pricing, it's helpful to research current exchange rates and PPP — and to consider factors like even divisibility and charm pricing.  Haiku® Crow's Smart Pricing feature brings all of this data to your fingertips. When designing your pricing, it's helpful to research current exchange rates and PPP — and to consider factors like even divisibility and charm pricing. Haiku® Crow's Smart Pricing feature brings all of this data to your fingertips.

You should come out of step two with a table of currencies and amounts that you want to charge for each country in your experiment — e.g. $100 for the US, 134,900 pesos for Colombia, and 73 Euro for Germany.

Step 3: Enact

Working with Stripe plans can be tricky, all the more so when setting up a complex process like price localization on top. Here are a few best practices:

Test your pricing plans before going live. Stripe offers a Test Mode that you can use, essentially a data sandbox where you can try out new products or plans with test subscriptions before you go live. Alternatively, you or you can easily spin up a whole new Stripe account.

Stripe offers a useful Test Data mode for testing changes without affecting your production billing. Stripe offers a useful Test Data mode for testing changes without affecting your production billing

Script the creation of your plans. If you use the Stripe admin UI to create plans, Stripe generates a random unique ID for you. This can be troublesome for tracking in your billing system when localizing prices, so it's recommended to use the developer API to script the creation of your plans. At Haiku, we do this scripting in Go, which is the primary language for our server stack.

Not only does scripting plan creation enable you to specify the plan ID (which your billing system needs to create subscriptions for that plan,) but it gives you an assurance that your plans will be the same across development, staging, and production environments.

You'll want to organize your plans so the Stripe dashboard remains intelligible.  Scripting is key to doing this — of course, Haiku® Crow handles all of this out of the box. You'll want to organize your plans so the Stripe dashboard remains intelligible. Scripting is key to doing this — of course, Crow handles all of this automatically.

Remember that plans can't be deleted from Stripe once they have subscribers. If you're planning to run multiple experiments, keep this in mind for your plan naming and organization. This is another detail that Crow handles elegantly out-of-the-box — when you create a new pricing plan through the Crow interface, plans are automatically created, archived, and organized behind the scenes through Stripe.

Coordinate your billing system & web properties. Your pricing normally meets your tech at three touchpoints. The first is your marketing website, where you advertise prices to your customers. This should show the right price to the right customer when they visit. The second is the checkout page itself, often separate from the marketing site. The third main facet is your billing back-end, where transactions are actually posted to Stripe.

If you're creating a price localization system from scratch, you'll need to coordinate between these moving pieces and make sure that customers from India are seeing the same prices and being charged the same price.

Crow offers simple-to-use and powerful developer APIs, including an HTML embed, an npm package, and GraphQL API — that make it easy to pull the same prices at every touch-point of your billing system.. Crow offers simple-to-use and powerful developer APIs, including an HTML embed, an npm package, and GraphQL API — that make it easy to pull the same prices at every touch-point of your billing system. Read more in our developer documentation!

Step 4: Iterate

Like any good experiment, now it's time to gather data, check that data against your hypotheses, and do it all again. Pricing is an ongoing art — not only does it take a few passes to optimize your pricing, but markets evolve as economies fluctuate and competitive landscapes shift.

The best way to stay on top of this sea of change is simply to keep measuring and iterating. Go back to Step 1!

That's a wrap!

Almost certainly, you'll find that price localization offers immediate and measurable improvements, even on the first pass of experimentation. It's satisfying to watch sales roll in as you expand your reach to new customers and accelerate growth in underserved markets.

If you have any questions about pricing strategy, experiment design, or technical approach, our team is happy to help. Of course, we're happy to talk about Haiku® Crow, too. Please reach out or fill out our contact form.