New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Impossible to implement new European tax law for digital goods (as of 1/1/2015) #6154
Comments
I ❤️ Taxes :-/ |
@JDutil especially in the EU! |
I'm actually in favor of the EU approach over US our sales tax system is a mess, and makes VAT look easy peasy. |
Ah, tax sucks everywhere ;) The problem is, that we currently focus on some other features in our next sprint. So, sadly this has to wait until the week after next. If someone has some great ideas on how to refactor this, please feel free to put in some advices in here, so we can respect them. BTW: Magento (the shop system we are replacing right now) DOES NOT make it right either. It is actually a big mess here in Europe, that nearly no shopping system can handle this messy law correctly. So, if we (the spree community) get this right, this is a real advantage over lots of shopping systems! |
@jpmacca Wow, this is a whole new level of marketing! Scanning GitHub issues? Thanks for mentioning your product, but I think you are wrong here.... |
I've been spending quite some time over the last couple of days in looking at the tax calculation code in Spree, and I've found some issues. I now think that the solution we outlined above, that of having different Current situationThe fundamental issue is that the
Desired situationVATs, in real life, do not change how much a merchant charges. VATs change what prices look like. More technically: This should fulfil the following requirements: If the same order is ordered from the US, the price of the CD on the invoice should simply be 84,03 Euros, with no adjustments (as no taxes apply for that transaction). Currently, Spree handles this as 100 Euros _minus_ a 15,97 VAT refund adjustment. No need. If that same order would be now sent to a country with a different VAT of, say, 25%, we should have again: a price of Configuring Spree for MOSS with this setupIf things were implemented like this, the MOSS mess could be accommodated for with the following set-up: You have zones for all EU countries, including the shop's residence country. Now, for different tax categories to be taxed with different VATs you simply create TaxRates that apply to digital products, are For all normal products, you create TaxRates with the German VAT and zones inside the EU, but outside Germany. Call for community participationWhile we believe that this is correct, we do not know what the requirements of other shops are. Can you reach out to people and find out whether our reading of what VAT is would fulfill their needs? Implementation detailsCurrently,
The default_zone should only be used for
I did look at the threads #4397 and #4327, as well as at #4318 (comment) Stuff that will need changes: |
We will now start to implement something along the lines of the stuff I mentioned above. The idea is the following:
The difference between VAT and sales tax is really an issue of displaying prices, discounts and shipping rates to users. In terms of how calculation is done, it is actually very similar to sales tax - especially for the merchant herself. |
As of the 1st of Jan, 2015, the European Commission has blessed us with the following fine piece of legislation:
This is currently almost, but not quite possible with Spree's zone-based taxation system. We have to output prices including VAT, and depending on which type of good (digital vs physical), different VAT rules apply:
Example:
A cart containing a shirt and a music file to be downloaded ordered from Denmark in a web store based in Germany has to apply two different VATs:
Difficulties with Spree's current taxation model
In order to achieve correct taxation, we created tax rates and corresponding zones for each individual EU member state (for digital goods). We also created a tax rate and zone for all EU countries with the German VAT (as our client is based in Germany).
This works, but only as long as we display prices excluding VAT, which is not allowed in the EU. If we switch to prices including tax, Spree has difficulty calculating the correct tax rate: Because we can only set one "default tax zone" (EU for physical goods), with digital goods the net price changes depending on which country you order from, which can not possibly be correct (a download with a gross price of 10 EUR would have a net price of 8.10 when ordered from Germany and of 7.50 when ordered from Denmark.
We need Spree to calculate the net price always from the zone in which the retailer is based. To achieve this, we propose the following:
The default tax zone should be a
belongs_to
relation on theTaxCategory
model. This way, Spree should be able to correctly assess whichTaxRate
to use to calculate the net price for different kinds of products.This only makes sense for VATs which have to be displayed as included in the price. Thus, if it is not set, that would mean the tax is normal ('Sales') tax which is applied additionally.
As you would expect, this is a big change deep in Spree's taxation code. This is the only way we could think of to solve this difficult problem so far, we'd love to have your feedback on this issue.
We started work on a branch, and will publish a (probably breaking) PR shortly to illustrate our proposal and work this out collaboratively.
The text was updated successfully, but these errors were encountered: