driesvints / vat-calculator

Handle all the hard stuff related to EU MOSS tax/vat regulations, the way it should be.
MIT License
1.2k stars 88 forks source link

Incorrect handling of Norway? #43

Closed sxdj closed 3 years ago

sxdj commented 7 years ago

Hi,

Thanks for your great vat-calculator, we use it as part of spark.laravel.com. And now run into an issue with a customer from Norway (outside EU) and we are in The Netherlands (within EU). The customer is being charged VAT but says that he shouldn't. And as far as I can see he's correct, regardless if he's a business or individual. Does this need to be changed in the code?

Thanks in advance!

piotrmocko commented 7 years ago

Now I see that I have the same issue on Spark.

You have to create a file config/vat_calculator.php with the following conent to change tax rate for Norway to 0%:

<?php

/**
 * This file is part of VatCalculator.
 *
 * @license MIT
 */

return [

    /*
    |--------------------------------------------------------------------------
    | VAT rules
    |--------------------------------------------------------------------------
    |
    | If you need to apply custom VAT rules for a specific country code,
    | use this array to define the rules that fit your needs. All EU
    | VAT rules are preconfigured inside the  but can be overwritten
    | at this point
    |
    */
    'rules' => [
        'NO' => 0,
    ],

    /*
    |--------------------------------------------------------------------------
    | Predefined routes
    |--------------------------------------------------------------------------
    |
    | The VAT calculator comes with a number of useful predefined routes
    | that allow you to use the VAT calculator JS toolkit. If you
    | don't want the routes to be registered, set this variable
    | to false.
    |
    */
    'use_routes' => false,

    /*
    |--------------------------------------------------------------------------
    | Business country code
    |--------------------------------------------------------------------------
    |
    | This should be the country code where your business is located.
    | The business country code is used to calculate the correct VAT rate
    | when charging a B2B (company) customer inside your business country.
    |
    */
    'business_country_code' => 'NL',
];
piotrmocko commented 7 years ago

and you have to register service provider Mpociot\VatCalculator\VatCalculatorServiceProvider::class and access calculator by alias: use VatCalculator;

mpociot commented 7 years ago

Hm...I'm pretty sure I added Norway for a specific. Here it is: https://github.com/mpociot/vat-calculator/issues/14

So you're right - by default you probably would not need to collect taxes for Norwegian customers. Do you think it's better to just remove it then?

piotrmocko commented 7 years ago

If you sell from EU to Norway a digital service (access to an application) then you do not charge tax

sxdj commented 7 years ago

From Europa.eu - Norway - Cross-border VAT:

"When goods are exported from an EU state to Norwegian customers, the seller should not charge local VAT on the sale."

As far as I can see there's no distinction between digital or physical goods. I suppose that all sales from EU to Norway should have no VAT.

So removing the rule as @mpociot suggests is the best solution I think, but creating a file config/vat_calculator.php as @piotrmocko suggests would work for me too. (Does that automatically overrule the settings from the plugin?)

Thanks!

piotrmocko commented 7 years ago

Yes, config/vat_calculator.php overwrites rules from the plugin

sxdj commented 7 years ago

Seems that we still have this issue. We added the config/vat_calculator.php file as mentioned above and at first sight this fixes the issue since VAT is no longer shown in the user interface when Norway is selected. However, the API call to Stripe for the actual payment still does add a 25% VAT to Norway customers ... Isn't that strange?

@mpociot Any suggestions?

PS: I see I didn't do anything yet with this comment:

and you have to register service provider Mpociot\VatCalculator\VatCalculatorServiceProvider::class and access calculator by alias: use VatCalculator;

Could that be the cause it's not fully working? And where/how should I put this code? (Sorry, still a bit noob on this ...)

sxdj commented 7 years ago

@mpociot I'm convinced that you should remove Norway or set it to 0% to resolve this issue. http://europa.eu/youreurope/business/vat-customs/cross-border/norway/index_en.htm is very clear on it.

mkarnicki commented 6 years ago

Keywords: "goods" and "customs". You're not selling goods (unless you're shipping stuff to the guy) and nothing is going through customs here. The customer is wrong, so is citing the "vat-customs/cross-border" link.

Please see here on VOES:

Foreign suppliers of electronic services must calculate and collect VAT on their B2C sales to Norway.

I actually sent a pull request to Spark to add Norway back. If you're not charging B2C electronic services sales to Norway customers, you're doing it wrong.

Happy to answer questions, though reading VOES site will probably be a better idea - I'm not even from Norway :), just a cautious dude from Poland.

sxdj commented 6 years ago

Thanks for your additional info @mkarnicki though IMHO it's incomplete or incorrect. Don't focus too much on the words customs and cross-border in the link (which has been updated last december it seems) because there's also a "Services" tab on https://europa.eu/youreurope/business/vat-customs/cross-border/index_en.htm:

If you provide services to customers outside the EU, you normally do not charge VAT (but if the service is used in another EU country, that country can decide to levy the VAT)

This is also confirmed on the site you linked (for which I thank you):

If you sell a remote service to a business in Norway, it's the Norwegian buyer in Norway that must calculate and pay VAT. https://www.skatteetaten.no/en/business-and-organisation/foreign/foreign-companies/vat/sale-of-remote-services-to-norway/

You may be right when it concerns B2C, but I was talking B2B too (my main focus, since my complaining customer was a business). Unfortunately, the part about B2C refers to www.voesnorway.com for additional info, but that site is down or eliminated ...

Can you have a second look at this?

mkarnicki commented 6 years ago

Uhhh this is so confusing :D @sxdj , your are correct on the B2B front, no VAT tax collection. Is this then indicated by reverse charge on the invoice to that business?.

I also thank you for the link and the mention of the services tab, which confirmed my suspiction in the B2C context. That is, if one is providing electronic services to Norwegian customers (not businesses), they should collect tax (and register for the Norwegian VOES...).

Christ, honestly, I think I will just block my service to Norwegian customers to make my life easier, and I haven't even shipped yet =_=

mkarnicki commented 6 years ago

So... how do we fix this in VatCalculator? Or rather... this should be fixed elsewhere (like Spark). For businesses there should be no tax, for customers there should be tax. Correct?

sxdj commented 6 years ago

I've considered blocking Norwegian customers too because of these annoying VAT rules ;-) I fixed it by setting all NO to 0% when they supply a VAT ID.

Note: the word customer does apply to both business as individuals. To keep a strict line between the two, I differentiate between customers with or without a VAT ID.

mkarnicki commented 6 years ago

I fixed it by setting all NO to 0% when they supply a VAT ID.

Sounds like a good workaround. See this comment by Marcel himself, quoting here for convenience:

So you basically have to register for the Norwegian VAT service if you sell more than 7.000€ to Norwegian customers per year. In this case you would need to register for the VAT service and collect Norwegian VAT using the provided rate.

I def won't be making over 7k EUR any time soon solely in Norway, so your workaround makes even more sense, thanks Steve.

driesvints commented 3 years ago

I've released v3.0.0 of the package which removes this VAT rule.