Selling worldwide: currencies and FX

Play this lesson

One game, many currencies

Hyper Shards costs $4.99 on our website. Then the first sale arrives from Germany, and the next from Japan. Should a player in Berlin see a price in US dollars?

Most players trust a price in their own money more, and their bank may charge them an extra fee for paying in a foreign currency. But our studio's bank account uses one currency, say US dollars. So how does a payment in euros or yen become money in our account? That is the world of FX.

Two currencies in every sale

Every card payment has two currencies, and they are not always the same:

Quick check

A player in France pays EUR 4.99 for Hyper Shards, and the studio's bank account uses US dollars. Which is the presentment currency?

  1. Euros, because that is what the buyer sees and pays
  2. US dollars, because that is what reaches our bank
  3. Both, because they are always the same
Show the answer

Euros, because that is what the buyer sees and pays

The presentment currency is the one shown to the buyer. US dollars are our settlement currency, and Stripe converts between the two.

Exchange rates move

FX, short for foreign exchange, means swapping one currency for another. The exchange rate says how much you get: for example, 1 euro might buy 1.10 US dollars.

Rates change all day, every day, because banks, companies and traders around the world buy and sell currencies, and news about each country's economy moves the price. So the same EUR 4.99 sale can be worth $5.49 one month and $5.29 the next. Selling worldwide means our revenue in dollars wobbles a little, even when our price never changed.

The cost of converting

When Stripe converts a payment into our settlement currency, it uses an exchange rate and adds a currency conversion fee. At the time of writing that is about 1% or more, depending on the country, so check Stripe's pricing page. It comes on top of the normal card fee.

Bigger businesses sometimes avoid converting every sale by keeping money or a bank account in that currency, where Stripe supports it. For a small studio, the simple path is fine: let Stripe convert, and count the fee as a cost of selling worldwide.

FX maths

fx-sale.txt
Sale price                 EUR 10.00Exchange rate (example)  1 EUR = 1.10 USDConverted                        ???Conversion fee (example)          1%Studio receives                  ???

Before the normal card fee, about how many US dollars reach the studio?

  1. $10.00
  2. $11.00
  3. $10.89
  4. $9.90
Show the answer

$10.89

EUR 10.00 times 1.10 is $11.00. A 1% conversion fee is $0.11, so about $10.89 is left. The normal card fee comes off after that.

Prices that look local

Converting $4.99 exactly might give EUR 4.73 or 742 yen. Those look odd, like a price nobody chose. Players are used to local price points: EUR 4.99, GBP 4.49, 750 yen.

So studios pick a round, natural price for each currency instead of converting. They also check what similar games cost in that country. A price that feels normal in one place can feel expensive in another, so many games also cost less in some countries (regional pricing, in the Pricing our games lesson). When an exchange rate moves a lot, we review the list.

Currencies in Stripe code

Stripe counts money in each currency's smallest unit. unit_amount: 499 with currency: 'usd' means 499 cents, so $4.99. Yen has no smaller unit, so unit_amount: 750 in 'jpy' means 750 yen, not 7.50.

One Stripe Price can hold several currencies in currency_options, and Checkout can show each buyer their local one. Stripe also has Adaptive Pricing, which can show buyers a local-currency price automatically, converted from our main price. Either way, the buyer sees their own money, and we receive our settlement currency.

Bug hunt

prices.js
// Hyper Shards local pricescurrency_options: {  eur: { unit_amount: 499 },   // EUR 4.99  gbp: { unit_amount: 449 },   // GBP 4.49  jpy: { unit_amount: 75000 }, // 750 yen}

Remy set up local prices for Hyper Shards. Which line would charge players in Japan far too much?

  1. Line 3
  2. Line 4
  3. Line 5
Show the answer

Line 5

Yen has no cents, so Stripe reads 75000 as 75,000 yen, a hundred times too much. It should be unit_amount: 750. Euros and pounds do have cents, so 499 and 449 are right.

Next: the tax inside the price

Now we can follow a worldwide sale: the buyer pays in their presentment currency, Stripe converts it for a small fee, and our bank receives our settlement currency.

Not all of that EUR 4.99 is ours, though. In many countries part of every digital sale is VAT, a tax that belongs to the buyer's government, and on our own website it is our job to collect it.

Bolt says: Next lesson: sales tax and VAT. After that, refunds, disputes and fraud.

Fact-checked 9 October 2026