Features

Currencies

Using multiple currencies in CheckoutJoy

Currencies

CheckoutJoy comes with automatic currency conversion based on where your customer is from.

Currency Conversion for Payment Processors

Some Payment Processors only allow payments to be made in certain currencies - e.g. Indian payment processors like Razorpay and Instamojo only allow payments in INR, and South African payment processors only allow payments in ZAR.

CheckoutJoy's currency conversion enables you to sell your product in any currency and still take the payment in the required currency. So for example you can price your product in USD, and when the time comes to take payment, CheckoutJoy will convert the cart to the required currency of the payment processor.

Dynamic Currency Conversion

Dynamic Currency Conversion allows you to sell products in the local currency of the customer. All prices are converted to the local currency of the customer based on their location, and if the payment processor supports payment in that currency then payment is also processed in their local currency.

This feature is available on our hosted checkout pages.

Payouts

Conversion Fees

Because CheckoutJoy is handling the currency conversion before payment is submitted to the payment processor, there will in most cases not be any conversion fees payable by you or the customer.

The only case where a customer pays a conversion fee - charged by their bank or card provider - is when the transaction currency is different than the default currency of their cards. E.g. if you sell your product in USD but the customer has a card that only supports INR, then the transaction will still go through successfully but their bank might charge them an extra fee for converting USD to INR.

Multi-currency vs Multi-pricing vs PPP

These three features are easy to confuse. They solve different problems:

FeatureWhat it doesWhat it does NOT do
Multi-currencyLets one checkout offer the same price in multiple currencies. Geo-IP detects the buyer's region and pre-selects their currency; the buyer can switch currencies if they want.Doesn't change the amount — €100 in EUR is the same value whether the buyer sees it in EUR, USD, or GBP.
Multi-pricingLets one product have several pricing models — for example monthly subscription, annual subscription, and a one-off lifetime option — all on the same checkout.Doesn't vary by location; everyone sees the same set of options.
Purchasing Power Parity (PPP)Varies the amount a buyer is charged based on their country's economic tier. A buyer in a Tier 2 country pays a discounted price relative to a Tier 0 country.Doesn't change the currency offered — currency choice is separate.

You can combine them: a multi-currency PPP setup gives buyers a tier-adjusted price in their local currency.

Multi-currency and PPP require the Pro plan.

How the buyer's currency is decided

CheckoutJoy uses the buyer's IP-based location to:

  1. Pick the default currency on a multi-currency checkout (the buyer can switch).
  2. Route the buyer to the right regional checkout when you've set up separate checkouts per region/processor (for example, South African visitors → ZAR checkout via PayFast; international visitors → USD checkout via PayPal).

Both patterns work side-by-side. The choice is mostly about whether you want a single checkout URL that adapts (multi-currency) or distinct checkouts per region with strictly different payment options (regional routing).

Multi-currency limitations on Kajabi

Kajabi's native checkout pages do not support multi-currency. If you're selling via Kajabi and want multi-currency, use CheckoutJoy's Checkout Widget or Custom Checkout Page — both run outside Kajabi's native checkout and support full multi-currency. The Simple Buy-Now Button stays inside Kajabi's checkout and inherits its single-currency limit. See the Kajabi integration doc for the trade-offs.

Purchasing Power Parity (PPP) — practical setup

PPP lets you offer a buyer in a lower-PPP country a discount automatically — typically structured as three tiers:

  • Tier 0 — full price. US, Canada, UK, most of Western Europe, Australia, New Zealand, Japan, Singapore, South Korea, Israel, Gulf states.
  • Tier 1 — ~25–35% off. Eastern Europe, parts of LATAM, much of the non-Gulf Middle East, South Africa, parts of South-East Asia.
  • Tier 2 — ~50–65% off. Most of Sub-Saharan Africa, India, Pakistan, Bangladesh, Philippines, Indonesia, parts of Central America, rural LATAM.

The exact percentages and country list are up to you. The point of PPP is to let buyers in regions with weaker local purchasing power afford your product without you discounting your full-price buyers.

To set this up:

  1. Define your tiers in your CheckoutJoy product's pricing settings.
  2. Map countries to tiers.
  3. CheckoutJoy detects the buyer's country and shows the tier-appropriate price.

Frequently asked questions

Does Stripe need separate accounts for each currency?

No — a single Stripe account can handle every currency Stripe supports. Enable the currencies you want in Stripe; Stripe converts to your default settlement currency on payout.

My buyer was charged more than the price shown — why?

Almost always a conversion fee added by the buyer's card-issuing bank when the transaction currency differs from their card's currency. CheckoutJoy doesn't add or control this. The buyer will see the fee broken out on their statement. For South African PayFast checkouts specifically, see the PayFast notes on conversion fees.

Can I force a checkout to open in a specific currency (e.g. for a geo-targeted campaign)?

Yes — append ?currency=<CODE> to the checkout URL:

https://yourdomain.com/checkout/my-product?currency=USD
https://yourdomain.com/checkout/my-product?currency=EUR
https://yourdomain.com/checkout/my-product?currency=ZAR

The checkout auto-selects that currency on page load. The buyer can still switch (if the checkout has multiple enabled currencies). Useful for ad campaigns where you want to override geo-detection — e.g. a USD landing page targeting EU buyers for a USD-only product.

The currency code must be one of the currencies you've enabled on the checkout. Codes not enabled fall back to the geo-detected default.

Currencies