vyskoczilova / woocommerce-payforpayment

WordPress plugin WooCommerce Pay for Payment
14 stars 13 forks source link

VAT on fees #54

Closed Marian-Kechlibar closed 4 years ago

Marian-Kechlibar commented 4 years ago

Hello,

there is a small nuance in the VAT for delivery fee payment that reflects differences in tax classes.

Namely, the correct VAT class for shipping and other side fees cannot really be determined without knowledge of the cart content. If you sell books (VAT 10 % in Czechia), the VAT class for a book order should be 10 %, but if you sells books AND audiobooks (VAT 21 % in Czechia), the VAT class will differ for book orders and audiobook orders.

https://portal.pohoda.cz/dane-ucetnictvi-mzdy/dph/hlavni-versus-vedlejsi-plneni-dph/

Feel free to contact me at marian(at)kechlibar.net, I had to solve this problem not too long ago.

vyskoczilova commented 4 years ago

Hi Marian, I see, but there are other countries where it works differently. If you had a fix, could you share it here, I will build it into the plugin or at least to make it available for others as a snippet? Karolina

Marian-Kechlibar commented 4 years ago

I believe that this is true EU-wide, as the following judgments of the EU courts apply:

C-41/04 Levob Verzekeringen BV a O V Bank NV

Finanzamt Burgdorf proti Manfred Bog (C-497/09), CinemaxX Entertainment GmbH & Co. KG proti Finanzamt Hamburg-Barmbek-Uhlenhorst (C-499/09), Lothar Lohmeyer proti Finanzamt Minden (C-501/09) a Fleischerei Nier GmbH & Co. KG proti Finanzamt Detmold (C-502/09).

This is not easy to patch comprehensively. In my case, I basically iterated over the entire cart content, calculating subsums of individual items according to their VAT class and, at the end of the foreach cycle, comparing the subsums to see which one was the highest, then determining the VAT class for shipping and fees according to it. But this is a very dirty solution, I would feel slightly embarassed to share such a code :-)

In theory, one can pay 0, 10, 15 or 21 per cent VAT on fee/shipping, depending on what prevails in the cart...

Marian-Kechlibar commented 4 years ago

BTW, there seems to be a built-in WooCommerce method that determines the correct VAT bracket. When I look up this:

https://docs.woocommerce.com/document/setting-up-eu-vat-rates-for-digital-products/

I can see an option "Shipping tax class based on basket items".

https://jeroensormani.com/guide-shipping-taxes-woocommerce/

So it is probably enough to use this option from WooCommerce.

Marian-Kechlibar commented 4 years ago

In Czech: Daňová sazba dopravy podle položek košíku

vyskoczilova commented 4 years ago

Hi Marian-Kechlibar, thanks, I'll have a look at it. I've taken over the plugin couple of years ago and you're the very first one having this issue. Maybe I could add an option "Based on products in the cart", but I need to dig into WooCommerce :) However, really thanks for sharing, it solved me a lot of time.

Marian-Kechlibar commented 4 years ago

Hi, I dug around a bit and the corresponding class of VAT is 'inherited', but I did not find any information nor example how to use it. If you are successful, please let me know. I am currently messing around with a plugin that produces Pohoda-compatible invoices in XML and this is a major obstacle. It can be solved by messy code, but doing so neatly would be better.

stale[bot] commented 4 years ago

This issue/proposal has been automatically marked as idle and stale because it hasn't had any recent activity. It will be automtically closed if no further activity occurs. If you think this is wrong, or the problem still persists, just pop a reply in the comments and one of the maintainers will (try!) to follow up. Thank you for contributing :)