Tax issue Google Shopping and Shopify causing mismatched value (page crawl) [price]

Bjorn29
Shopify Partner
5 1 0

Hello everyone,

We are experiencing problems related to mismatching values (page crawl) [price], in our Google Merchant Center. We are showing product prices including VAT, but in the EU new VAT rules for e-commerce will apply from 1 July 2021. Which basically means that you charge a foreign customer the VAT rate of his EU member state. 
 
So there's a setting for this in Shopify (Store settings > VAT > VAT calculations)
  • Tax is included or not based on your customer's country
    Your customer's local tax rate is used for the calculations
I think maybe this setting is causing the mismatch in the page crawler, assuming Google uses foreign country (probably US?) page crawlers? Which eventually feeds a product without VAT, causing a mismatch with the product price on our shop page including VAT.
 
Example from live product:
  • Value in feed:  149.00 EUR
  • Value on website:  123.14 EUR
  • 149 - 123.14 = 25,86 VAT ( => 149 / 121(Gross)  *  21 )
So i think (again assuming Google crawls from outside the Netherlands), the page crawler sees a product price of 123,14 EUR. The product price without VAT. Which is correct according to the Shopify setting.

FYI: We are using an app called Tax-Exempt-Manager. But this reduces the VAT for B2B customers in the checkout-page, only IF a valid VAT-id is being submitted. We use product prices including VAT on all pages.
 
Anyone else having this issue or is this a known issue? 
Any advice is more than welcome!
 
Thanks in advance.
Replies 31 (31)

EmmanuelFlossie
Shopify Partner
2953 221 710

While I do not have a solution, I want to confirm with you that your findings are correct.

 

So when you submit a price to The Netherlands, then regardless of location, for example the US, the price must be what is submitted in Google Merchant Center. IE VAT inclusive.

 

The solution is to only exclude VAT, when the customer enters a delivery address or payment address outside the US. This means, you should not change the address prior to knowing where it is going.

Meaning in the checkout when the details are entered, not prior.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
MarkyDjbox
Tourist
10 0 3

Hi -we seem to be having a similar issue but it is only impacting some and not all of our products. Those impacted seem to be noted with "Automatic item updates active [price] VAT"

I am confused as to how it can impact some but not all products. If anyone has any input or ideas it would be greatly appreciated. Thanks.

EmmanuelFlossie
Shopify Partner
2953 221 710

Google does not check every page every day.

I recommend to make sure that the price you submit, is the price a customer pays and sees regardless of location.

However, if you want to provide ex vat for non EU countries, you can exclude the VAT after the delivery address has been added, not before.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
MarkyDjbox
Tourist
10 0 3

Hi and thanks for your time and reply. 

We only want customers to see the VAT inclusive price. Most of our products are absolutely fine but some (around 200) adjust to the ex VAT price. We only have one price field in Shopify. We do not show ex VAT pricing anywhere else. Its very strange. Its like Google is calculating and displaying the ex VAT price itself but I don't know why or how it chooses the products.

It's very frustrating and I've been trying to sort it a couple of weeks...... 

EmmanuelFlossie
Shopify Partner
2953 221 710

Also make sure your structured data is correct. You can test the prices using: https://search.google.com/test/rich-results

 

Every product you list on Google, must be VAT inc. so those 200 products either don't list them in the feed, or update the pricing.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
MarkyDjbox
Tourist
10 0 3

Hi, and again thanks.

I saw that tool yesterday and I can't see any issues that would cause the problem. There is only one price field we use in Shopify and its OK for the majority of our products. We do not have nay b2b or wholesale plug ons. We have chosen that vat be applied on all goods.

We are connected to Google via API and another app. We have deleted all feeds (we had 2 at one stage) and reset.

When looking at the feed in merchant centre it shows 2 imports for some products. One for local inventory (that we don't use) and one for search, and display and ads. The local inventory price is Inc VAT but the other is not. Same product, the same Sku, same feed. So Google is getting the right info but randomly deducting the VAT.

Any ideas. Thanks. 

EmmanuelFlossie
Shopify Partner
2953 221 710

Without looking into your account it would be hard to guess.

My advice, contact the app support team as they are submitting the data.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.

LydiaVeer
Visitor
2 0 0

Hello!

 

I am experiencing exactly the same problem. Have you discovered a solution yet? 

 

Many many thanks for your reply!

 

Lydia 

MarkyDjbox
Tourist
10 0 3

Hi

 

We bounced around between Google and the App provider and found that by disabling automatic updates in Google merchant centre the pricing seems to be ok. It's less than ideal but it has worked for us. 

I hope that helps.

 

KooKooOskar
Visitor
3 0 0

Hello we have the same problem, but when we deactivate atomatic product updates in merchants center, the products just get rejected...

 

Issue:

Pic_1_VAT_Option.png

Pic_2_rejected_products.png

  

Starting position: (example used: KW4000 -> 69,90€ with 19% German Tax)

 

  • We want to keep net prices the same, for every EU country (58.74€)
  • Therefore we want to charge a country with higher tax rate a higher price (example: France 20% Tac -> 80,57€)
    • For that we have activated the following feature in Shopify (see Pic_1):
    • “ Include or exclude tax based on your customer's country

Your customer's local tax rate will be used for calculations. “

 

Now the following issue arises:

 

  • Our Micro data / source code shows net prices (58.74€) in order to calculate the gross price for each country
  • Google crawling sees those net prices and rejects products on Merchants center because:
    • Price in product Feed to merchants center is gross price for Germany (19% -> 69.90€)
    • Google crawling sees net prices on our website (58.74€)
      • -> Rejects our products (see Pic_2)

 

Do you have a solution for that problem? Or maybe an Idea on how to get one of my solutions working:

 

  1. Have German gross prices on Website no matter what country (69,90€), BUT only charge the country based tax in checkout (80,57€).
    1. For that we would have to find a solution to charge country based tax without ticking the location based tax option in Shopify (Pic_1) correct?
  2. Find out how to make the crawling bot see the German prices (69,90€
    1. In source code: instead of net price + tax (58.74€ + 20%) we make it German price + tax difference (69,90€ + 1%)
  3. Find any other workaround for location based tax charge, without the tick at the shopify option (Pic_1)

 

Thank you for the help!

EmmanuelFlossie
Shopify Partner
2953 221 710

Regardless of where a user is located, if a user clicks on your German link, even if they are located in a different country, must see the same exact price as you have submitted in the data feed.

 

IP based price modification is not allowed if you want to use Google Shopping.

 

If you want to show different prices you need to allow for the user to manually change the country they are located in using a drop down.

 

Reference: https://support.google.com/merchants/answer/4752265?hl=en#:~:text=Make%20sure%20your%20landing%20pag...

 

That is the first thing you need to change.

 

Once you have fixed that you can update the pricing structured data to be correct using: https://feedarmy.com/kb/shopify-microdata-for-google-shopping/

 

 

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
KooKooOskar
Visitor
3 0 0

Hello,

 

The changes you suggested where already like this in our shop.

 

Now I have found out, that the problem lies with this part: currency=EUR in the link google uses to crawl:

?currency=EUR&utm_medium=cpc&utm_source=google&utm_campaign=Google%20Shopping (I dont know if I am allowed to post our site 🙂

 

When I do Rich Test from Google with the normal link on my page, the microdata shows the correct price (gross). But as soon as the part currency=EUR is added, the micro data/rich test shows only net prices. 

 

Does anyone maybe know where this could result from, as we cannot make google to remove that part. Our default currency in the shop is EUR, might be something with the schema?

 

Thank you for all the help!

EmmanuelFlossie
Shopify Partner
2953 221 710

I recommend you disable the option where users outside Europe are VAT exempt.

 

You are not allowed to change the price based on user IP, if you want to use Google Shopping.

 

However, if you want to ignore the above, simply write a feed rule by stripping out the currency=EUR part of the URL.

https://support.google.com/merchants/answer/7450276?hl=en

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
MarkyDjbox
Tourist
10 0 3
Hi - we dont export much outside our own region so I don't have an
answer or help on this I am afraid. All I do know is once we turned off
automatic price updates in Merchant centre the isseu went away for us.
LydiaVeer
Visitor
2 0 0
For us it helped to resubmit the site map. After google recrawled. Prices were fine ( also no automatic adjustment of price)

DazC
Excursionist
17 0 15

I’ve run into this problem recently as well.

 

We have a UK based store that sells predominantly domestically, but is configured to sell internationally. Shopify is set up to charge tax based on the customer location (shipping address). This works in so far as UK customers get charged the price we enter in to the catalogue (VAT inclusive price) and customers outside of the UK get charged the net price with no tax component.

 

Where it goes wrong, as you’ve noticed, is with Google Merchant Centre.

 

I noticed on our website that if you visit it cold you see the VAT inclusive prices, but if you add something to your cart and go through checkout far enough to enter your delivery address, and choose e.g. a US address, then not only does Shopify recalculate the cart to remove taxes - as one might expect, and hope - but from that point onwards the customer sees net prices throughout the website, including on collection pages and product pages.

 

I originally thought this might be how Google is seeing these prices too, but I think it must be IP based instead since it seems unlikely the Googlebot is adding products to cart etc.

 

The problem is - I don’t know how to fix it. It seems the location specific pricing (how is this done? IP geolocation?) functionality is opaque and can’t be disabled. What if a US customer placed an order to ship to the UK? VAT would have to be added, etc.

 

The only way I’ve found to fix this is to disable the option to “Include or exclude taxes based on the customer’s location”. But what disabling this means is that the price (incl VAT) is the price everyone pays, regardless of location, with the only difference being that this number doesn’t comprise a VAT component outside of the UK. This means we’d be overcharging our international customers by 20%, and it would be obvious to them that we’re ripping them off, all in service of trying to fix a Google price mismatch.

 

We’re not willing to do this at this point, but we’re running out of options. As things stand Google has done automatic price updates for almost all of our products, which has messed up our Google listings (they show ex VAT prices), and since our customer base is 90%+ UK, this won’t do either.

 

Why is Shopify trying to guess what the price will be for a customer before they have even added anything to their cart and said where they want to ship it? Why is this price modification functionality opaque and unconfigurable? 

Very frustrating…

KooKooOskar
Visitor
3 0 0

Hi, 

 

we solved the issue. I cannot fully reproduce how, but will tell you all I got:

 

- the issue starts with the merchant center crawler who uses this link ending: /currency=EUR or whatever currency.

- this selected some other country, which we do not charge tax for and therfore it showed google net prices.

- we have the geolocation app, install it and activate the country selector. Then go to your site and look at the countries you can select. I think with th currency=eur ening, it selects the first eur country.

- I cannot recall fully, where you can edit this list, but its in shopify settings. 

 

Solution:

we put a country into the list, we dont even ship to (Andorra) and added a tax override of 19% (german VAT). Google now crawls andorra prices (net, but + our tax) so no price mismatch.

You should try out some countries, but if you cannot add any other british pund countries, just remove all but UK.

 

cheers

DazC
Excursionist
17 0 15

@KooKooOskar wrote:

Hi, 

 

we solved the issue. I cannot fully reproduce how, but will tell you all I got:

 

- the issue starts with the merchant center crawler who uses this link ending: /currency=EUR or whatever currency.

- this selected some other country, which we do not charge tax for and therfore it showed google net prices.

- we have the geolocation app, install it and activate the country selector. Then go to your site and look at the countries you can select. I think with th currency=eur ening, it selects the first eur country.

- I cannot recall fully, where you can edit this list, but its in shopify settings. 

 

Solution:

we put a country into the list, we dont even ship to (Andorra) and added a tax override of 19% (german VAT). Google now crawls andorra prices (net, but + our tax) so no price mismatch.

You should try out some countries, but if you cannot add any other british pund countries, just remove all but UK.

 

cheers


Unfortunately this doesn't work for us.  I don't know your GMC setup, but Google is crawling our URLs with "currency=GBP" in, which ought to return VAT inclusive prices, but doesn't.

 

We aren't using any kind of geolocation app for pricing, so there shouldn't be anything causing issues one way or the other with this.

 

Thanks for your help, though 🙂

 

EmmanuelFlossie
Shopify Partner
2953 221 710

@DazC As you correctly mention, the price ex vat should only show, when the customer has added the shipping / payment details, not prior to this.

 

It is also correct that the prices you submit for the UK, must be the same regardless of where the user is located. As this is a requirement for Google Shopping.

 

So for customers that are in a different country, you need to setup a new store or use multicurrency setup.

 

If you are only targeting the UK, then the prices must be inc vat.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
DazC
Excursionist
17 0 15

@EmmanuelFlossie wrote:

@DazC As you correctly mention, the price ex vat should only show, when the customer has added the shipping / payment details, not prior to this.

 

It is also correct that the prices you submit for the UK, must be the same regardless of where the user is located. As this is a requirement for Google Shopping.

 

So for customers that are in a different country, you need to setup a new store or use multicurrency setup.

 

If you are only targeting the UK, then the prices must be inc vat.


Thanks.

 

The problem is that Shopify is getting in the way of us submitting consistent prices.  I want to submit one price for everyone, but Shopify won't provide me with the explicit variant price as it has been entered into the backend of the store, it is trying to be clever and modifying this price based on where it thinks the customer wants to ship it to.

 

I also do not want to have to punitively charge international customers 20% more just to placate Google.  I also don't want to have to set up international store(s) just to solve this problem when our UK store is configured to ship interntionally perfectly well.  It duplicates the maintenance effort and costs for no good reason.

 

I would be satisfied if I could simply get something like variant.original_price or something, which returned the price entered into the Shopify backend explicitly.  This would solve the problem.

 

I don't really understand why it's doing this.  Geolocation is not 100% reliable, and there are instances where a customer might want to ship something to an address in the UK whilst not being in the UK themselves (or not appearing to be).  They could be on holiday, they could be buying a gift and drop shipping it to someone, etc.

 

I have found a sortof solution, I think, but it is unreliable.  There is a setting - cart.taxes_included - which you can query to determine whether the visitor (Google in this case) is seeing VAT inclusive prices in their cart.  I'm not sure how reliable this is, since the Googlebot hasn't added anything to the cart when they land on the website.  It depends on how and when the cart object is instantiated, I guess.

 

At the moment I have some code that looks like this:

 

 

{%- assign variant_real_price = variant.price -%}
{%- if cart.taxes_included == false and variant.taxable -%}
{%- assign variant_real_price = variant.price | times: 1.2 | floor -%}
{%- endif -%}

 

 

This appears to work for the most part, but it often returns inaccurate numbers.  For example, if we have a product that is 31.95 inc VAT, then the ex VAT price is 26.625.  But the only price I can get out of Shopify (variant.price) for an international customer is a rounded number, 26.63.  If I "times: 1.2" on this number I get 31.956, which rounded = 31.96, which is wrong. 

 

If I use "floor" instead, as I have above, then a product that is 24.95 inc VAT (20.791666666666667 ex VAT) will be rounded to 20.79 by Shopify, and when I times that by 1.2 I get 24.948 - and if I use floor on that I get 24.94 - which is wrong.

DazC
Excursionist
17 0 15

Here is my final code to fix this problem:

 

 

assign variant_real_price = variant.price
if cart.taxes_included == false and variant.taxable
    assign variant_price_t = variant.price | times: 1.2 | round: 1

    assign variant_split_price = variant_price_t | split: "."
    if variant_split_price.size == 2 
        if variant_split_price[1] >= 8
            assign variant_real_price = variant_price_t | round
        else
            assign variant_real_price = variant_price_t | floor
        endif
    endif
endif

 

 

This code checks to see if the current price being shown to the visitor (i.e. Googlebot) includes taxes or not, by checking cart.taxes_included.  if this is false, and the variant is taxable (variant.taxable = true), we know we need to modify the price.

 

From there, we add the VAT by multiplying the price by 1.2, and rounding it to one decimal place.  After that we split the decimal part off and check to see whether or not it is greater than .8 or not.  If it is, we round the number up (round), otherwise it is rounded down (floor).

 

Examples:

  • variant.price = 1663 (product £19.95 inc VAT)
  • calculated price = 1995.6
  • .6 is not >= .8, so 1995.6 is rounded down to 1995 by using floor

  • variant.price = 3329 (product £39.95 inc VAT)
  • calculated price = 3994.8
  • .8 >= .8, so 3994.8 is rounded up to 3995 by using round

  • variant.price = 3725 (product £44.70 inc VAT)
  • calculated price = 4470
  • no decimal part, so calculated price used as is.

 

This has worked for all of the products I've tried so far, although most if not all of our prices end in either .x0 or .x5.  The VAT rate is hard-coded for any taxable product as 20% (1.2) as well.

DazC
Excursionist
17 0 15

I just thought I'd update this answer with a final resolution.

 

It turns out Shopify can - on request - disable the automatic price adjustments based on geolocation feature on a per-store basis.  It is not a setting store owners can see or manage, only Shopify can turn it off.  It appears to default to "on", since I had to explicitly ask for it to be disabled on all of the stores I run.

 

Once turned off - prices are shown the same for everyone that visits the website until they confirm where they are shipping the products, which is the logical configuration since it is shipping destination that dictates whether VAT is added or not (at least in the UK, shipping internationally).

 

Once Shopify turned off this setting it obviated my fabricated Google pricing code shown above, so please disregard it if you're trying to achieve the same goal as I was.  Instead, just contact Shopify and ask for this feature to be switched off.

EmmanuelFlossie
Shopify Partner
2953 221 710

You can disable that feature by going to Shopify > Settings > Markets > In the preferences section disable Include or exclude tax based on your customer’s country

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
DazC
Excursionist
17 0 15

No, that setting determines whether customers get charged tax or not based on their shipping country.

 

As I explained earlier in the thread, with the hidden geolocation setting switched on - Shopify would show prices with VAT removed to customers it thought wouldn’t pay it, *before* they had entered their shipping address. In other words - a customer based in the USA landing on my UK website would see prices with VAT removed on the PDP and collection pages (everywhere a price is shown), before they’ve even said they want to ship their order to the USA.

 

This hidden setting controls the presentation of prices, not the actual price quoted once the customer has specified a shipping address in the cart (which is controlled by the setting you mentioned).

 

In essence, what I wanted to achieve was to stop Shopify deciding itself what prices to show customers, instead I wanted customers (and Google) worldwide to see the same prices on the website until they had provided a shipping address, at which point VAT would be removed. This ensures a consistent experience, and fixes my issue with Google Merchant Centre complaining about the displayed website prices being different to the feed prices, which was my problem all along.

EmmanuelFlossie
Shopify Partner
2953 221 710

I have an international client, with your exact same issue. And I resolved the pricing issue as per the previous reply.

 

By unchecking this option, all prices are shown VAT inclusive as they should be, regardless of where the user is located.

 

I have implemented this fix a month ago, and everything is working as expected.

 

If Shopify provided another solution, that is great.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
DazC
Excursionist
17 0 15

Yes, but unless Shopify have changed things in the last month it means that your client is charging the VAT inclusive price to everyone, including customers where VAT wouldn’t be charged, because that’s what that setting controls. In essence - international customers would be charged 20% extra.

 

For example - with that setting unchecked, with a client based in the UK selling internationally:

 

- Product A is £30 in the backend, with “Charge tax on this item” switched on

- Customer A in UK buys it, they pay £30 with £5 of the price (20%) being VAT - OK.

- Customer B outside UK buys it, they pay £30 with £0 of the price being VAT - NOT OK.

 

Customer B has been overcharged 20% relative to Customer A. Customer B should only have paid £25.

So, you’re both right and wrong in my opinion. Unchecking that option does result in the same price being shown to everyone, but it also results in the same price being charged to everyone, which is not what we want.

EmmanuelFlossie
Shopify Partner
2953 221 710

Yes that is correct, now I understand that you don't want to do this.

 

In that case unchecking just that one option is indeed not enough.

 

Just to confirm that you asked for (disable the automatic price adjustments based on geolocation feature on a per-store basis)

 

And they disabled it?

 

The reason I ask to confirm is that I have found Shopify support to sometimes not wanting to go the extra mile (or don't understand the issue and thus assume can not help), or sometimes don't want to help. While I know they can do it.

 

It's a hit and miss with support.

 

Thanks for this communication, this will help a lot of other people.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.
DazC
Excursionist
17 0 15

 

Yes, that is correct.

 

I emailed them explaining the problem above, they confirmed that they have a internal setting that tries to “best guess” what price the customer will pay, based on geolocation. They also confirmed that this setting is hidden from storeowners and can only be changed by them (for now).

 

I requested that they disable this setting on our stores. I had to request it for each one separately.

 

They confirmed the setting had been switched off. At that point the behaviour of our stores was as desired - i.e. the price shown on the website (and to Google scrapers) is the price entered in the backend, and customers are charged the correct amount based on location.

 

It isn’t until the customer adds the product(s) to the cart and specifies where it is being shipped to (which determines whether VAT is charged) that the price in the cart changes.

 

I have that setting you mentioned switched on (because we do want to include or exclude taxes based on customer country).

 

To be clear - with this hidden setting enabled (which is default I think, as I had to request it be turned off for every store) and the setting you mentioned checked - Shopify will change the displayed price based on geolocation, messing up Google etc.

 

With your setting switched off, customers who shouldn’t be charged VAT will pay 20% (or whatever the VAT rate is) extra for products, which leads to justifiable complaints.

 

Hope I’ve explained it well enough. 🙂

EmmanuelFlossie
Shopify Partner
2953 221 710

Thank you very much, your reply is greatly appreciated. 👍

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.

DazC
Excursionist
17 0 15

@Pandacuadscom wrote:

Using Shopify's Google Shopping app, you can automatically sync the tax rates on products and then calculate the total price


Sorry but this has got nothing to do with the Google Shopping app (whether it is present or not).  It is relating to Google crawling the site and "seeing" different prices shown to customers than are present in the feed.

EmmanuelFlossie
Shopify Partner
2953 221 710

@DazC the person @Pandacuadscom has been leaving replies everywhere where I have replied, if you look at his profile, there are no other replies (as of writing now, he most likely will start and change his tactic once he reads this) with less than relevant and sometimes incorrect replies. Not sure what the objective is, but the person is certainly not helping anyone. Half a year ago this happened as well, somebody only replied where I am replying, and even copied my answers and posted them as its own word for word.

Get in touch with Emmanuel: a Google Shopping Specialist, Google Ads Diamond Product Expert, and also a a Google Product Expert Education 2021 & Tailwind 2023 Award winner.
Need Google Merchant Center or Google Shopping support?.