Magento 2 Incorrect Prices with Website Scope

Sometimes you have incorrect prices but you think they should be correct. Maybe there is a reason!

Critical issue within Magento is when you sent several store specific values through the API then the full product for that store is loaded.

This means when you have the price attribute configured that it is allowed to have prices on website scope the prices is saved to the store levels which are related to their website during this API call.

At first this doesn’t look like an issue but if you only update the price on global level for a product which doesn’t have a website specific price, then the storeview value isn’t updated.

In this case you will have incorrect prices displayed on the website for which you have made the storespecific changes before.

Example with two websites (website1 and website2)

  • First API call on storecode all:
    • Name: Product Default
    • Price: 10
    • Result:
      • Admin level saved
  • Second API call on storecode nl (website1)
    • Name: Product NL
    • Result:
      • price saved for all store views of website1.
      • Front end price is the same
  • Third API call on storecode all
    • Name: Product Default
    • Price: 12
    • Result:
      • price saved on admin level.
      • Price for website1 still 10 and only in de front end price 12 for website2

So if you want to solve this there are a few possibilities:

  • use price scope global and remove all storeview values
  • when updating the price always do an all request and if you have storeview values within a website then also price update for one storeview of this website.
  • make a fix for magento