Diferent tax per product per country



Does anybody knows how to setup taxation depending on country?

I have tried all scenarios in Administration by adding channels, zones, tax categories… and so on, only works for the tax category set in product variant if that category belongs to zone selected for country of the shipping destination.

I think this is because you can setup only one tax category per product variant.

Does anybody knows/have solution for this?



You should create country-based zone, and this created zone include into new tax rate. After that include it into tax category. And finally include tax category to your product variant. Schematically, country -> zone -> tax rate -> tax category -> product variant


Also, if you set zone’s scope as ‘tax’, it won’t be used for zone matching of shipping address, but will only used for taxation


Hi guys,

Thank you for reply. I have tried all that already but it still doesn’t work.
This is link to docs: https://docs.sylius.com/en/1.3/book/orders/taxation.html and it reads:
“Additionally to tax categories, you can have different zones, in order to apply correct taxes for customers coming from any country in the world.” - but it doesn’t work. There is no “user” documentation how to setup this in admin.

Here is my scenario: I am selling products in EU, the default tax is 20% ( same as in UK ) but each country has different tax. In my case, I am trying to set-up the tax for Denmark which has a tax of 25% and for UK 20%. So, when customer is from Denmark, on checkout it should apply 25% tax, if from UK - 20%.

I have created separate zones based on country:

Then created tax category:

Then tax rate for each:

Then, I think the issue is in variant - variant can have only one tax category:

So, if customer is from Denmark, the product tax is correct, if from UK - tax is 0.00?
Changing Zone scope to Tax - removes shipping method from checkout. I have tried all combinations, but didn’t succeed.

Is this possible at all, or I need to develop a plugin for this?



I think you missunderstood the role of tax category, read https://docs.sylius.com/en/1.3/book/orders/taxation.html#tax-categories carefully.

Also, if both “Euro Unioin” and “Denmark Tax” has scope set to “all” or “tax” and contain country Denmark, then only one will match (probably EU), because they have the same type. The order of types is (lower to higher): zone, country, province.


Hi Victor,

Thank you for reply. In the meantime I have figured it out. It works fine now.
I have created one tax category ( EU Vat ) then in a tax rates that belong to this category, I have different rates for different zones. I have two “country” zones : UK and Denmark with different country members, obviously.
This also works for shipping methods. Assigning different shipping method to each zone allowed me to have different carriers for UK and different for Denmark.

Thank you for your help.