GNOME Bugzilla – Bug 635610
Support for European periodical VAT declarations
Last modified: 2018-06-29 22:48:06 UTC
This enhancement request is created to track the changes and improvements required to prepare European monthly/quarterly VAT declarations directly from within GnuCash for European countries. Disclaimer: I'm living in Belgium, so my knowledge is mainly limited to the Belgian way of doing things. I invite people from other (European) countries to either amend the differences for their country to this bug, or if the differences are large enough, write a separate enhancement request with the necessary details. Also note that I have some difficulties translating all this in English, so my apologies if the terminology is not correct... Basically, these are the things that should happen: * Add customized tax categories for European VAT. These will probably be different for each country. In Belgium, a VAT declaration holds several key items called "BTW vakken". Each such "vak" should become a tax category and all expense and income accounts should be assigned to one of these categories. * The EU has a special VAT regulation for intra state business transactions. For example if I (being a Belgian company) make a bill for a Dutch customer, I don't have to charge VAT on that invoice, but should add a formal note on the bill that VAT is handled according to the intra state agreements. On the other hand while not charging the VAT on invoices, it should be reported in the quarterly/montly VAT declarations. From a recent conversation on IRC with Matthijs Kooijman [1], I learned that each EU member state has got it's own rule for that though. To cater for this, my idea is to use a particular tax table with two tax rules that are one's exact opposite. My Belgian example: the tax table would have one rule for 21% regular VAT and one rule of -21% of reversed tax. Both rules would use their own VAT account to store their VAT amounts. This would balance out the tax on the invoice, while at the same time it would allow to track the intra state VAT movements. I recently changed the code to allow negative percentages in tax tables to take care of that part. But as Matthijs rightfully pointed out, this is only part of the solution. The invoice should have a special note (required by law) to show the intra state nature of the invoice. I'm not sure yet how that can be set up in code automatically. * Similar to the intra state regulations, in Belgium at least there is a special regulation for "medecontractant". On the invoice this looks like intra state in that you don't charge VAT, but it has to be reported in the quarterly declarations. I'd have to lookup the exact details of this, namely which VAT should be declared in which "BTW vak". * There should be a chart of accounts specifically for business purposes. GnuCash currently ships one for US based businesses, but a localized version should be added for European based businesses. Here also, due to the small regulatory differences between the EU member states, we will probably end up adding one for each country. The common accounts receivable and payable should obviously be there, but also VAT handling in the EU requires a particular set of accounts. (I'll have to look up the details here). * The invoice reports should be extended to deal with these special cases or new EU specific ones should be added if extending would cause too much confusion. * A EU VAT report could be added. * As an extra bonus: in Belgium, VAT declaration is done online via an xml interface. If this could be done straight from within GnuCash that would be totally cool :) [1] See http://lists.gnucash.org/logs/2010/11/2010-11-23.html#T06:20:23
> * As an extra bonus: in Belgium, VAT declaration is done online via an xml > interface. If this could be done straight from within GnuCash that would be > totally cool :) In Germany, the VAT declaration is also done online, and there is already a Linux free implementation of the necessary protocol: "libgeier" with the GUI "taxbird". The idea exists for a long time to let gnucash calculate the correct numbers for the VAT declaration, then passing on those numbers to "libgeier" and have it send the numbers to the tax office servers. However, so far this idea never left the idea-stage. But technically, it's very well possible.
After reading your IRC log (and thinking out loud), I believe the VAT rules for businesses put a lot of emphasis on the place where either the product is delivered or made available or where the service is provided (as opposed to where the seller is located in the previous tax system e.g. Luxemburg). One angle of approach might be to link to VAT table and/or the printing of statements on the invoice based on the ship to -or possibly some other indication of location. This would allow you to use and indicator or the address to cover the general case of Intra-Country, Intra-State or even Ex-EU and give you scenarios to work with in the code, rather than use different tax-tables manually? Second call out, while not trying to complicate things is that the solutions should probably take into account whether the buyer is either a business or a person. Third would be (altough I think it's hinted upon in the chat log) the fact that you still need to declare the people you sent invoices to, the only thing exempte (or reversed) is the VAT amount itself, though that may be out of scope.
It just got even more complicated https://www.gov.uk/register-and-use-the-vat-mini-one-stop-shop
GnuCash bug tracking has moved to a new Bugzilla host. The new URL for this bug is https://bugs.gnucash.org/show_bug.cgi?id=635610. Please continue processing the bug there and please update any external references or bookmarks.