Price lists are used to set prices for markets. Prices in price lists have two types: FIXED and RELATIVE. When loading price lists in Graphql API, FIXED prices are working fine and returning correct value. But for RELATIVE price we return incorrect value in default store currency, instead of base currency of the market.
As a workaround in REST we used presentment prices. They are no longer available in Graphql and it wasn’t particularly correct for more complex cases when single currency used across different markets. So we tried to migrate to new contextual pricing. But this workaround also works only for simple cases when market has single country. If market has multiple countries and uses local prices it’s no longer suitable as contextual price for every country will have different currency and we can’t modify market prices based on that.
We really need a proper fix for this to get real RELATIVE price and allow merchants correctly editing market prices.
Thank you for your feedback! This is the expected behavior for the price lists API. We apply the percentage price list adjustment to the base product prices for the shop, in the shop’s currency. Relative prices are returned in this currency, while fixed prices are set in the currency of the price list.
To preview the final prices for a buyer, we recommend using the contextualPricing field on the Product and ProductVariant types. This is because the FX rate may vary depending on the market settings (e.g., fixed versus manual FX rate). Tax inclusivity and rounding rules can also affect the final price.
While the Markets page you’ve linked displays relative price values, you may notice differences if you drill down to the country level. I’ve also included some notes in this post about why presentment prices are no longer sufficient when using REST.
For your use case, what FX rate would you expect to leverage? Would you also expect to see other pricing adjustments apply such as tax inclusions and rounding rules?
We have bulk price editing app that offers ability to edit market prices. It already works fine for simple cases. But I don’t understand how to make it work in cases when:
market has multiple countries and taxes included in prices
market has multiple countries and local currencies enabled
For example, an EU market includes 27 countries with different tax in each country and different currencies. We need to launch sale on that market only (set reduced price and set current price to compare at price field).
If we use contextualPricing for this market, we end up with 27 different prices. How we suppose to set fixed price in price list in that case? Even if we provide multiple prices for different currencies, we still will have multiple different EUR prices for different countries in a market…
In past we used presentment prices, but it’s no longer suitable cause a market can have multiple countries with local currencies. The new implementation with contextualPricing becomes extremely complex and I don’t get how to make it work properly with price lists.
Thanks for the additional details on your use case, @Kirill_Platonov!
We need to launch a sale in that market only (set a reduced price and set the current price to the compare-at price field).
The contextualPricing values represent the final prices displayed to the customer, factoring in local currency settings and tax inclusivity. If you wish to base your sales prices on these buyer values, it’s the appropriate field to use. However, you will need a unique market and catalog for each region in which you intend to sell, to set the correct fixed prices for each.
Alternatively, you could set completely fixed prices for your catalogs, allowing you to set the compare-at price to the current price without needing to create a separate market for each region.
We don’t have any other workarounds for achieving relative prices converted via foreign exchange, as those rates depend on the final country and currency settings.