Prices nature. Magento 2 simple product prices.
Regular, Final, Minimal, Special, Options, Tier, MSRP… All that are prices in Magento. And all of that can be applicable to the simplest product… So let`s see how all of this worked beneath the hood to render only one price for only one product:
Here is a list of prices Magento uses for simple product:
Regular price
Special price
Option prices
Tier price
MSRP price
Let`s start from simple scenarios and go deeper. Below you can see schema the simplest scenario of price rendering:
You enter a price into the price field in an admin. You reload a product page on frontend, and you see that price is reflected. This is most basic scenario, in which Magento is using "Regular price" - price specified directly in admin.
Special Price
One day you decided that you want to show lower price for specific product, lets say from 1 Match till 2 March. To do this you need to update Special Price field. You can find it at "Advanced Pricing" tab:
Special price will be used on frontend straight after the moment you specified it in admin and click "Save". Special price dates "from" and "to" are optional and set price only for specific period of time. On native Magento you should be able to see next result:
Known issues:
If price indexer in Magento is in "Update on schedule" mode, you need to wait some time, before result will be reflected on frontend. If result doesn`t reflected after 15 minutes, most probably you have issues with CRON, or you have slow CRON jobs that should be separated from default CRON group to speed up reindexation.
Look into special price dates and ensure that you are in the time range, specified in admin in special price.
For enterprise Magento clients starting from version 2.1, you will not find special price "from" and "to" dates, because this functionality was moved to Magento Staging module ("Scheduled content").
If price is not reflected, because of cache, you can add parameter to product URL, like "?a=123", to ensure that this is cache issue or not. If price on a page changed, this is cache issue, otherwise - no.
MSRP
The other important type of price is MSRP ("Manufacturer suggested retail price"). Very often for specific product positions you need to have manufacturer prices. You can specify MSRP in the same tab as special price.
And if for some reason your final price (regular or special) are lower than MSRP, you will see next warning on frontend:
This popup is configured, and depends on option selected from "Display actual price" field:
"Use config" - configuration specified in Store -> Configuration -> Sales -> Display Actual Price
"Use on gesture" - show popup on product page with "Add to Cart" button
"In cart" - show price in cart, only when product is added there
"Before Order Confirmation" - show price on the checkout page.
Known issues:
MSRP can be missing, because it is not enabled in configuration: Store -> Configuration -> Sales -> Minimum Advertised Price
Final price is bigger than MSRP. Price system in Magento is very complex, so before blaming MSRP, please ensure that final price is really less than MSRP.
Indexer or caching issue. This issue is relevant to all types of prices and is described above in special price section
Catalog Rules.
When you have big number of products, one day it becomes difficult to update thousands of special prices. Alternative option is to configure "Catalog Rule". This rule, by specific conditions allows to reduce price for set of products on some percentage or fixed amount. You can configure this rule in Marketing -> Promotions -> Catalog Price Rules.
Catalog rules requires separate article, because it is very wide topic to discuss here. However, if you are specified catalog rule and it does not work for you, here are short list of known issue:
Catalog rule indexers are out of date. Please check CRONs.
Condition is not covering product, you want. You can have mistake in complex conditions, for instance, you used IF ALL (that means "AND"), instead of IF ANY (that means "OR").
You are using catalog rule with "Scheduled Content", and conditions are not applied, because of "Scheduled Content" changes
You have subsequent rules, and actual result is not as you expected, because more than one rule is applied to a product
You specify Catalog Rule only for specific "Customer Group" and examine product from another customer group. In this case conditions will not apply, because customer group does not match.
Website you are testing on is not included in the list of websites in catalog rule you created.
Full page cache is working incorrectly. To check this please add "?a=123" to product page, where you see wrong price. Usually customer groups are added to X-Magento-Vary cookie, and if this customer group is missing, content can be wrong.
Tier prices
Tier prices were designed to set different prices for different customer groups in different websites for different quantity added to basket.

You can either specify percentage or fixed price for qty. For example, for qty = 4, you can specify discount = 20% from regular price. Or you can specify fixed price.
Sounds easy? Okay let`s add special price/catalog rule variable here.
It is very important to understand that in case of discount (percentage), discount is applied not to FINAL (already calculated) price, but to regular price (price you specified in admin). So what will happens if special price will be lower, than tier price? The answer is obvious - lower price will be shown (in our case special price will be shown). If you specified fixed amount, you are overriding regular price for specific website, customer group and qty. In this case, this price still will be shown only if fixed price < final price (price with catalog rules and special prices).
Let`s add MSRP price, as a variable in this scenario. Only if MSRP "Show on gesture" is enabled, content will be modified:
You will need to click by tier price to see actual price, proposed for tier.
Known issues:
Tier price is part of the indexer, so if you don`t see tier price reflected on the frontend, check CRONs and indexers for issues.
Tier price can be hidden, because another tier price with lower price is specified for the same qty. The rule of best price is working here.
Tier price can be hidden, because final price is lower than tier price. Calculate discount amount for this, if you are using discount percentage or just compare your fixed price in admin and final price on frontend.
It is the only one part of big topic - Magento prices. We didn`t cover taxes, weee and other adjustments, as well as prices for other product types.