MageSentinel

Why the cart shows a different price than the product page

A shopper sees €39 on the product page and €48.36 in the cart. Some shoppers leave, others write to ask. Most of the time the store is doing exactly what it was configured to do, and the fix is one setting. Sometimes a stale page or a broken rule is showing a price the store no longer charges.

All posts5 min read

Four blank paper price tags

The short answer

Compare the two numbers first. If the cart is the page price plus your VAT rate, it is tax display: the catalog shows prices without tax and the cart with it. If the cart shows the old price after you changed it, a cached page is showing the new one or the other way round. Anything else is a rule that applies in one place and not the other: a catalog or cart price rule, a customer group price, a sale with an end date, or a currency switch.

In our checkout failure data from 89 stores, cart problems (add to cart failing, or a price that changed in the cart) were 12% of incidents.

Tax shown one way in the catalog, another in the cart

This is the most common cause and the easiest to check: divide the cart price by the page price. 1.24 is Greek VAT, 1.19 German, 1.20 French or UK. The store charges correctly; it just labels differently in two places.

In WooCommerce, the two settings sit side by side under WooCommerce → Settings → Tax: Display prices in the shop and Display prices during cart and checkout. Set both to the same value. In Magento 2 they are under Stores → Configuration → Sales → Tax: Price Display Settings for the catalog and Shopping Cart Display Settings for the cart.

Stores that sell to businesses

Showing net prices is fine, but print “excl. VAT” next to every price on the page. A shopper who sees the label expects the cart to add tax; one who does not sees a price rise.

A cached product page with an old price

You change a price, the cart picks it up at once, and the product page keeps the old one. The page is coming from a cache: Magento’s full page cache or Varnish, a WordPress caching plugin, or a CDN in front of the store. The cart is never cached, so it always shows the real price.

Open the product page in a private window with a query string added (?nocache=1). If that shows the new price and the plain URL does not, purge the page in the cache. In Magento, check that the cache was invalidated after the save:

bash
# Show which caches are invalid and which indexers are behind
bin/magento cache:status
bin/magento indexer:status
Run from the Magento root. An indexer stuck in “Reindex required” also leaves the old price in the catalog.

The same effect from the other side: a sale ended, the cart charges full price, and the cached page still shows the discount. That one hurts more, because the customer was promised the lower price.

A price rule that applies in one place only

Discounts can be attached to the catalog or to the cart, and the two behave differently. A Magento catalog price rule changes the price the product page shows, but only after the catalogrule_rule and catalogrule_product indexers have run; if cron is not running, the page and cart disagree until someone reindexes. A cart price rule changes only the cart, so the page shows the full price and the cart a lower one, which is usually intended.

In WooCommerce, a scheduled sale price has start and end dates on the product, and the change is made by a scheduled action. If WP-Cron does not run, the sale starts or ends late on one side. Dynamic pricing and discount plugins add their own rules on top, often only at the cart.

Find out your checkout broke before your customers do.

Real checkout checks for Magento and WooCommerce · 14 days free · no card required

Customer groups, options and currencies

What differsCauseWhere to look
Logged-in customers see another priceCustomer group or tier priceMagento: Advanced Pricing on the product. WooCommerce: role-based pricing plugin
The price jumps after choosing a size or colourOption or variation priceMagento: child product of the configurable. WooCommerce: the variation’s own price
The cart is in another currencyCurrency switcher or geolocationWooCommerce → Settings → General → Default customer location. Magento: Stores → Currency Rates
A few cents offRounding of tax per line versus per totalThe tax calculation settings of the platform

For geolocation in WooCommerce, choose Geolocate (with page caching support) if the store runs a page cache. Plain Geolocate stores the result in a page the cache then serves to everyone.

Diagnose it in ten minutes

  1. Do the arithmetic. Is the difference exactly your VAT rate? Then it is tax display.
  2. Bypass the cache. Load the product page with ?nocache=1 in a private window. A different price means a stale cache.
  3. Log out. Guest and customer prices differ when groups or roles carry their own price.
  4. Pick the options. A variation or child product can have its own price.
  5. Check the rules. Catalog and cart price rules, sale dates, discount plugins: which are active today?
  6. Check cron and indexers. Rules and scheduled sales depend on them.

For a check of the whole path in a real browser, run the free checkout audit. It adds a product to the cart and shows where the purchase stops.

Find out before a customer does

Price differences rarely produce an error. The page loads, the cart works, and the only sign is a shopper who leaves or writes in. MageSentinel adds a product to the cart on every check and compares the cart line with the product page. When they disagree it raises CART_PRICE_MISMATCH, or CART_TOTAL_MISMATCH when the lines do not add up to the total, with a screenshot. On WooCommerce, a price the page labels as excluding VAT is compared with the tax added, so a correctly labelled store does not trigger it.

See everything MageSentinel checks. For tax problems beyond display, read WooCommerce tax calculation errors.

Common questions

Why is the price in my cart higher than on the product page?

Most often the catalog shows prices without VAT and the cart adds it. Check whether the difference equals your VAT rate. If it does not, look for a cached product page, an ended sale or a price rule that applies only in one place.

How do I show prices with VAT everywhere in WooCommerce?

Under WooCommerce → Settings → Tax, set both “Display prices in the shop” and “Display prices during cart and checkout” to “Including tax”.

Why does Magento show the old price after I changed it?

The product page is served from the full page cache or Varnish, or an indexer has not run. Check bin/magento cache:status and indexer:status, and make sure cron is running so price rules and indexers stay current.

Is a different cart price a legal problem?

It can be. Consumer rules in the EU expect the price shown to be the final price including taxes for consumers. Show prices with VAT to consumers, or label net prices clearly.