Purchasing power parity (PPP) is one way to vary your prices by region – a customer in a country with lower purchasing power sees a lower price, automatically, with no customer-facing toggle. Fontdue supports two ways to set this up: live World Bank data, or hand-curated multipliers.
Both options sit on top of a country order variable – only one is allowed at a time, and the customer’s country is detected from their location11Specifically the Cloudflare CF-IPCountry header. so there’s nothing for them to select.
World Bank data source
The World Bank data source supports every country with multipliers that update as the World Bank publishes new data – typically once a year for most countries. It’s a good default if you want regional pricing without curating a country list yourself. The Fair price adjustment preset uses this data source out of the box.
To set it up from scratch, create a Country variable and set its data source to World Bank. Then click Configure PPP settings to tune the settings that control how strongly PPP affects your prices:
- PPP scale – a number between 0 and 1.
0disables the World Bank multiplier (prices are unchanged);1applies it as-is. Lower values soften the discount22A scale of 1 can produce dramatic discounts for low-income countries – sometimes more than 80% off – which may be more than you want to offer. while still making fonts more accessible in lower-income regions. - Minimum order item amount – a per-item floor below which the multiplier won’t drag prices33The floor is applied to each order item individually, not to the order total.. Setting this to at least a few dollars protects against Stripe’s per-charge minimums in heavily-discounted countries.
- Minimum and maximum multiplier – bounds no country’s multiplier can fall below or rise above. Both are optional; leave either blank for no bound in that direction. Useful for capping how deep your discounts go – see Bounding the multiplier.
Corrections to World Bank currency data
A multiplier divides a country’s PPP conversion factor by its exchange rate. Both are quoted in “local currency per dollar”, so the division only cancels out cleanly when both figures are quoted in the same local currency. Three countries break that assumption, each for an unrelated reason, and in each case the multiplier collapses towards zero.
Liberia is corrected automatically. Both the Liberian dollar and the US dollar are legal tender there, and the World Bank publishes Liberia’s PPP conversion factor against the dollar – putting it in the same range as fully dollarized economies like Panama and Ecuador – while publishing a real Liberian-dollar exchange rate alongside it. Taken at face value that understates Liberia by a factor of about 191. Fontdue detects the mismatch and prices Liberia at roughly 0.51 against a US-based store, rather than 0.003.
Venezuela is also corrected automatically. Its PPP conversion factor was last published for 2011 and has since been restated in today’s bolívares, while its exchange rate for that same year is still quoted in the bolívar of the day – two redenominations and a factor of 10¹¹ apart. Fontdue reverses the restatement so both figures are in the same units again, which prices Venezuela at roughly 0.69 against a US-based store.
Zimbabwe is the same problem with a different constant. Its PPP conversion factor was last published for 2021 and has been restated into ZiG – the currency that replaced the Zimbabwe dollar in 2024, at 2,498.7 to one – while its 2021 exchange rate is still quoted in the Zimbabwe dollars of the day44The restatement is visible in the series itself: from 2009 to 2016 Zimbabwe used the US dollar outright, so its PPP factor for those years should sit near Panama’s 0.5 – and the published values are exactly that, divided by 2,498.7.. Undoing it prices Zimbabwe at roughly 0.82.
These two figures are used knowing their shortcomings. Each is an old price level – 2011 and 2021 respectively – measured against an exchange rate controlled by the government rather than set by the market, so they may be unreliable. Fontdue errs high deliberately – a smaller discount than deserved is safer than the near-free prices the raw numbers would produce. If you’d rather set your own figure for either country, use the manual data source.
Bounding the multiplier
Setting a minimum multiplier of 0.25 lifts the countries with the deepest discounts55Against a US-based store the lowest are Egypt at roughly 0.16, then Afghanistan and Nigeria around 0.21. Multipliers are indexed to your own country, so read your figures off the PPP table. if you’d rather not discount that steeply anywhere; a maximum multiplier does the same at the other end. Both are applied after the PPP scale, and countries a bound moved are marked bounded in the PPP table, with the unbounded figure on hover.
The bounds apply to the World Bank data source only – multipliers you set under the manual data source are used exactly as entered. Your own country always has a multiplier of exactly 1, so the minimum can’t be set above 1 and the maximum can’t be set below it66Capping at exactly 1 is allowed, and means no country is ever charged more than your base price. For a blanket adjustment that includes your home country, change the variable’s own multiplier instead..
How the multipliers are computed
Fontdue computes World Bank multipliers from two indicators:
PA.NUS.PRVT.PP– PPP conversion factor for private consumption (LCU per international $). For each country, this gives a value in the local currency representing the cost of a basket of goods equivalent to $1 USD. Brazil’s 2025 PPP value is R$2.58 BRL.PA.NUS.FCRF– Official exchange rate (LCU per USD, period average). Updated yearly. For Brazil in 2025, this is R$5.59 = $1 USD.
Both figures for a given country always come from the same year – the most recent year in which the World Bank published both77The two series don’t end in the same year everywhere. The World Bank stopped publishing Argentina’s PPP conversion factor after 2021 while its exchange rate is still updated annually, so Argentina’s multiplier is computed from 2021 figures. The Data year column in the PPP table shows each country’s vintage, and years well behind the rest are highlighted.. Pairing the newest figure from each series independently would divide this year’s exchange rate by an older year’s PPP factor, which badly understates countries whose currency has since devalued.
The two combine so that a country’s multiplier reflects both local prices and its exchange rate against your store’s home currency. Fontdue indexes multipliers by your store’s home country (set in Settings → Company information) so your home country always gets a multiplier of 1:
M = 1 + s * ((P_c / e_c) * (e_b / P_b) - 1)
where:
P_c = country PPP factor
P_b = store country PPP factor
e_c = country exchange rate
e_b = store country exchange rate
s = scale factor
Daily exchange rates aren’t used: they fluctuate constantly, but PPP conversion factors update at most once a year, so mixing daily rates with annual PPP factors would overcorrect – for the same reason the two annual figures are always taken from a matching year. Day-to-day FX movement is better handled at the payment layer – if you’ve enabled Stripe’s Adaptive Pricing in your Stripe dashboard, customers can pay in their local currency at Stripe’s current rates, independent of the PPP multiplier Fontdue applies.
Manual data source
Use a manual country variable when you want explicit control over which countries are discounted and by how much.
Go to Catalog → Order variables → Add variable, pick Custom variable, and set its data source to Manual.
Pick a country from the Add a country… dropdown and set its multiplier (e.g. 0.77). Two shortcuts can save time:
- Upload CSV – bulk-load options from a CSV with a header row and
country_code,multiplierdata rows88CSVs use ISO 3166-1 alpha-2 country codes (e.g.DE,BR,IN); the manual dropdown handles country names directly, so codes only matter for the CSV.. - Import from World Bank – seed the table with the World Bank-computed multipliers for every country, using your current PPP scale. After importing, the variable stays in Manual mode so you can tweak individual values99The imported values are a static snapshot at import time – unlike the World Bank data source, they don’t refresh when the underlying data updates. Re-import to pick up new values..
Click Configure PPP settings on the variable to set a minimum order item amount. The multiplier bounds don’t apply here – values you set by hand are used exactly as entered.
Customers in countries you haven’t listed see your normal prices; customers in listed countries see the multiplied price automatically.
0.5 – and the published values are exactly that, divided by 2,498.7. ↩0.16, then Afghanistan and Nigeria around 0.21. Multipliers are indexed to your own country, so read your figures off the PPP table. ↩1 is allowed, and means no country is ever charged more than your base price. For a blanket adjustment that includes your home country, change the variable’s own multiplier instead. ↩