I sell digital products — a mix of downloadable files (PDFs, videos) and access to a learning portal — and have configured Markets to only serve the US, Canada, Australia, and New Zealand. However, country restrictions in Markets are not enforced at checkout for digital products — only for physical products with shipping profiles.
This creates a real compliance risk. The UK and EU require VAT from the very first sale of digital products to consumers — there is no threshold. If a customer from the UK or EU completes a purchase, I am immediately liable for VAT, even if my Markets settings explicitly exclude those countries.
I previously used a third-party geo-blocking app ($7/month) as recommended by Shopify support. However, I removed it because geo-blocking negatively impacts search engine crawling and indexing of my store. This should not be a paid workaround — it is a native platform responsibility. Additionally, geo-blocking based on IP location is unreliable: a customer traveling abroad could be blocked in a country where they are actually a legal resident, or conversely, complete a purchase from a non-supported country while traveling in a supported one.
The workaround suggested by Shopify support — marking digital products as physical — is not a viable solution. It introduces incorrect tax treatment, misleading order confirmations, and shipping expectations that don’t apply.
My current workaround is a cart-page checkbox where customers must confirm their residency before checkout is enabled. This is a good-faith measure, but it does not technically prevent a purchase from a non-supported country.
Feature request: Please enforce Markets country restrictions at the checkout level for digital products, independent of shipping profiles. This is essential for tax compliance and should not require a Shopify Plus plan.
This is a real gap and honestly I’m surprised it doesn’t get talked about more. You’re right that the UK and EU have zero threshold for digital products - you owe VAT from the very first sale, and Shopify Markets just doesn’t cover that scenario yet.
The cart checkbox approach you’re using is probably the best workaround right now without going back to geo-blocking. One thing worth considering on top of that is checking the billing address country at the order level and flagging or canceling anything that slips through from a restricted market. It’s manual but at least gives you a safety net.
For what it’s worth, the bigger issue a lot of digital sellers don’t realize is that even if you block EU customers entirely, if you’re advertising to them or your site is clearly accessible from there, some tax authorities might still argue you have a presence. It gets complicated fast.
Have you looked into whether Shopify’s tax settings can at least auto-apply the right VAT rate if someone does manage to check out from the UK or EU? That way you’d at least be collecting the correct amount even if the restriction doesn’t fire.
On the advertising/accessibility point — I’m not actively targeting EU or UK customers, but you’re right that a publicly accessible site could theoretically be interpreted that way. Good to be aware of.
On the VAT side, I’ve taken some precautionary measures. I also have a Flow automation in place that sends me an email notification whenever an order comes in from outside my active markets, so I can act on it quickly.
But hopefully Shopify will fix this at the platform level — it shouldn’t require manual workarounds.
Or, alternatively, you could just become compliant!
We start at 19,90€ / month for full service including ~350€ of sales per region. Includes store configuration, official registrations, data collection and filing. And a team to ask not just about regulation but tech as well.
EU + UK is over 500 million potential customers. Could be quite a few wanting your products as well.
I’ve been searching for an (unpaid) solution for a while as well, in my case I cannot (don’t want to) sell outside the EU.
As a workaround I included a condition in the risk analysis flow that checks order.billingAddress.country against all members of the EU, if the order came from outside it is canceled and I get an E-Mail, otherwise I do the risk assessment and then accept the payment.
Important note: You need to insert the exact country names as Shopify uses them internally. Should just be the English names, but you should verify by running tests with existing orders.
For the flow to work you need to set payment capture to manual under settings → payments and then capture the payment using the flow. Seems to work well.
That said, it would be better to use order.billingAddress.countryCodeV2 instead (which contains AT, US etc) and is predefined, but I couldn’t check it against multiple values, so you’d need to setup a condition field for every single country. As we mainly get orders from only 3 countries I opted for the quicker fix.
Hope this helps some of you searching for solutions!