We have managed to display information in the SERPs from our Schema.org markup, however, the information is incorrect.The page shows up in the SERPs, displaying USD rather than GBPWe have different currency options on the site, but have marked up the priceCurrency as GBP.What could be the reason for the inaccurate details to show?
Inaccurate currency displayed in Google Rich Snippet
google search;schema.org;rich snippets;products
Not a Schema issue, it's a website and  Google issueThe problem you are experiencing is pretty common and a side effect of GEO IP detection. The issue that your encountering is occurring due to the fact that your site is using some type of IP Geolocation service, often known as GEOIP. In short your site is automatically detecting where a site visitor is located and then serving them with the correct currency, and obviously you are serving the Googlebot with US currency, because the majority of Google's crawlers are located in the US.Google's Data CentresGoogle's crawler operates on a large volume of IP addresses, and Google operates from multiple data centres throughout the world:AmericaBerkeley County, South CarolinaCouncil Bluffs, IowaDouglas County, GeorgiaJackson County, AlabamaLenoir, North CarolinaMayes County, OklahomaMontgomery County, TennesseeQuilicura, ChileThe Dalles, OregonAsiaChanghua County, TaiwanSingaporeEuropeDublin, IrelandEemshaven, NetherlandsHamina, FinlandSt Ghislain, BelgiumGoogle does not crawl websites from the UKAs far as I know Google does not have any UK based servers, but they do have servers in Ireland, most likely for tax haven reasons, as Ireland is know for its Double Irish Arrangement that allows big companies to pay lower taxes for its products and services, something that is constantly in the UK press, often referred to as tax avoidance by politicians. Anyway...Google crawling will never occur from a UK based server, since the majority of crawling occurs from servers located in the states, other countries outside of the UK, but besides... even if Google did have a UK crawler, Google doesn't have a feature where you can select a preferred crawl location in any-case.Incorrect currency May Affect Your Local RankingsIf your main target region is the UK, then Google finding US dollar can and most likely affect your rankings, Since Google thinks your main region is US.SOURCEOther signals. Other sources of clues as to the intended audience of  your site can include local addresses and phone numbers on the pages,  the use of local language and currency, links from other local sites,  and/or the use of Google My Business (where available).Replicate my FindingsYou can replicate this issue by connecting to a VPN, or Proxy located in the US and then using a cookieless browser (important since your site is storing last used currency as a cookie) or Google Chrome incognito, you can clearly see that it is automatically assigning the currency. Possible FixThe most obvious thing would be to ignore the IP addresses of Googlebot, or the user agent, however this is not recommended by Google, since it could be detected as a form of cloaking. You should always treat the Googlebot as a visitor, not a bot. So, you could always use that solution but obviously its not approved by Google. So I wouldn't recommend the above solution to anyone. You can approach this by setting up your site as a Multi-regional and multilingual website.Or alternatively use multiple Schema markup to determine the currency, therefore Google should understand the website has multiple currencies and return the correct results depending where the user is in the world.SOURCE:This would allow you to serve all currencies in your markup, hide  those that weren't valid for the current user/ip through CSS/JS and  still have Google understand what you're doing:<div class=curr-gbp itemprop=offers itemscope itemtype=http://schema.org/Offer>  <!--price is 1000, a number, with locale-specific thousands separator      and decimal mark, and the $ character is marked up with the      machine-readable code USD -->  <span class=usd itemprop=priceCurrency content=USD>$</span>  <span class=usd itemprop=price content=1000.00>1,000.00</span>  <span class=gbp itemprop=priceCurrency content=GBP>&pound;</span>  <span class=gbp itemprop=price content=750.00>750.00</span>  <span class=aud itemprop=priceCurrency content=AUD>$</span>  <span class=aud itemprop=price content=1500.00>1,500.00</span></div>You set the class on the containing div to the currency you've  selected for the user and then hide the other options through CSS:.curr-gbp .usd, .curr-gbp .aud { display: none; }.curr-usd .gbp, .curr-usd .aud { display: none; }.curr-aud .usd, .curr-aud .gbp { display: none; }Google should then recognise the mark-up and display it as  appropriate in its listings.