It's the customers ISP which is caching an older page, or the customer’s browser not getting the updated "date.js" file (because of browser caching) which always gets updated to force any new pages to update.
You can add information to the .htaccess file to disable caching completely which will fix this problem completely;
If you add the code provided below to your .htaccess file then no files will be cached at all.
Using the recommendation below won’t eliminate all situations where the old price is used, e.g. if the products have already been added to the basket, or the customer doesn’t refresh the current page before adding to the basket.
Anyway, adding a Files Match around the header directive will help with the site loading times. I think it would be better because it says to apply the rule only on *_.js and *.html files. The *_.js files are the encrypted pricesjs files. So images will still be cached. Here's the code you need to add in your .htaccess file:
The Files Match makes the Header directive only apply on html files and the pricesjs files.
The situations where it said will still use the old prices are unavoidableunless the customer refreshes the page that they are on before adding to the basket (and completely unavoidable once the products are in the basket).