[Resolved] Need to set different VAT rates for product language variants
This thread is resolved. Here is a description of the problem and solution.
Problem: You are using WPML with WooCommerce and facing an issue where you want to set different VAT rates for the same product on different language versions (Slovak and Czech). The fields "Tax status" (_tax_status) and "Tax class" (_tax_class) are locked in the translation, preventing you from setting a different tax class for the Czech variant of the product. Solution: Unfortunately, it is not possible to unlock or independently modify the "Tax class" (_tax_class) field in a product translation for different language variants without switching the entire product to "Translate independently". This is because taxes are determined by the customer's location rather than their language. You can configure the tax rates in WooCommerce by specifying a tax amount for each country, which will then be adjusted based on the customer's address. To set different tax rates for each country, navigate to WooCommerce > Settings → Tax → Standard Rates.
If this solution does not apply to your case, or if it seems outdated, we highly recommend checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If further assistance is needed, please open a new support ticket at WPML support forum.
This is the technical support forum for WPML - the multilingual WordPress plugin.
Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.
Background of the issue:
I’m using WPML together with WooCommerce and I’m facing an issue when selling to multiple countries. I would like the same product to have 20% VAT (standard rate) on the Slovak version (SK domain / language) and 10% VAT (reduced rate) on the Czech version (CZ domain / language). The fields "Tax status" (_tax_status) and "Tax class" (_tax_class) are locked in the translation, so I’m unable to set a different tax class for the Czech variant of the product. I have tried marking _tax_status and _tax_class as "Do not translate" in the Custom Fields Translation section.
Symptoms:
The fields "Tax status" (_tax_status) and "Tax class" (_tax_class) are locked in the translation, preventing setting a different tax class for the Czech variant of the product.
Questions:
Is there any way to unlock or independently modify only the "Tax class" (_tax_class) field in a product translation (e.g., for the Czech variant), without switching the entire product to "Translate independently"?
Would you recommend a different approach to assign different VAT rates to product language variants?
I'm afraid that's impossible, as taxes are determined by the customer's location rather than their language. You can configure the tax rates in WooCommerce by specifying a tax amount for each country, which will then be adjusted based on the customer's address. WPML does not influence this.
To set different tax rates for each country, go to WooCommerce > Settings → Tax → Standard Rates.
Is there any way to unlock or independently modify only the "Tax class" (_tax_class) field in a product translation (e.g., for the Czech variant), without switching the entire product to "Translate independently"?
It is intentionally locked to maintain synchronization, and there is no way to unlock it.
For clarification, to better explain the situation – I may not have provided all the necessary details at the beginning.
We are facing a situation where we sell medical supplies (e.g., bandages), and based on legislation, we must apply a different VAT rate depending on the country the product is being shipped to. The same product must be invoiced differently based on the customer's shipping address.
I would like to achieve the following behavior for a specific product:
Slovakia → use the standard VAT rate (tax class: standard)
Czech Republic → use the reduced VAT rate (tax class: reduced)
Poland → use the zero VAT rate (tax class: zero)
The customer selects their shipping country during checkout, or it is detected via geolocation.
It is still a single product with the same product code, but we are required to apply a different tax class depending on the shipping country
Question:
Is it possible to achieve this setup in WooCommerce + WPML without creating separate product variants for each country?
Alternatively, is there a recommended way (e.g., a filter) to change the product’s tax class dynamically based on the shipping country?
Thank you in advance for your answer and guidance.
As mentioned earlier, you can use the standard WooCommerce settings to configure tax rates by country. The applicable tax will automatically adjust based on the customer’s address.
Is it possible to achieve this setup in WooCommerce + WPML without creating separate product variants for each country?
Since the tax is applied based on the customer’s address, creating separate products is unnecessary. The original and translated versions share the same product parameters.