Jump to content
  • 0

VAT Questions...


4uh

Question

To comply with VAT law we must do the following...

 

1. Not charge VAT to anyone outside the EU.

2. Not charge VAT to anyone outside the UK but in the EU who is a business.

3. Do charge VAT to everyone in the UK and anyone who is an individual in the EU.

 

I need a way of setting the VAT on specific countries, is this possible?

 

I need a way to determine if a customer in the EU (but not in the UK) is a business and if they are a business, not charge them VAT. One way to do this is to ask them for their registered VAT number as proof but there needs to be some kind of trigger to take VAT off their order if they supply a valid, non UK but EU VAT number.

 

Currently we cannot take any business from countries outside europe or european (non UK) businesses without breaking VAT laws because we dont have a way to not charge them VAT.

 

EU VAT number validity can be acheived using a free javaascript here http://www.braemoor.co.uk/software/vat.shtml

 

This following code will check the EU VAT web service for an existing VAT number...

 

 

<?php 
class checkVat { 
 var $countryCode; 
 var $vatNumber; 
 function __construct($cc, $vat) 
   { 
   $this->countryCode = $cc; 
   $this->vatNumber = $vat; 
   } 
 } 

function checkVat($vat){ 
   $vat = trim($vat); 
   $vat = str_replace(" ","",$vat); 
   $vat = str_replace("-","",$vat); 

   $vat_prefix = substr($vat, 0, 2); 
   $vat_num = substr($vat, 2); 

   $wsdl = 'http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl'; 
   $vies = new SoapClient($wsdl); 
   $nii = new checkVat($vat_prefix, $vat_num); 

   try {$ret = $vies->checkVat($nii);} 
   catch (SoapFault $e){ 
     $ret = $e->faultstring; 
     $regex = '/\{ \'([A-Z_]*)\' \}/'; 
     $n = preg_match($regex, $ret, $matches); 
     $ret = $matches[1]; 
     $faults = array( 
       'INVALID_INPUT'       => 'The provided CountryCode is invalid or the VAT number is empty', 
       'SERVICE_UNAVAILABLE' => 'The SOAP service is unavailable, try again later', 
       'MS_UNAVAILABLE'      => 'The Member State service is unavailable, try again later or with another Member State', 
       'TIMEOUT'             => 'The Member State service could not be reached in time, try again later or with another Member State', 
       'SERVER_BUSY'         => 'The service cannot process your request. Try again later.' 
       ); 
     $ret = $faults[$ret]; 
     } 


   /* 
   Return results 
   0 = Invalid VAT number 
   1 = Valid VAT number 
   2 = Communication error 
   */ 

   if (!is_object($ret)){ // An error occurred 
       return 2;  // SOAP ERROR 
   } else { 

       foreach ($ret as $k => $v) { 
           if ($k == "valid"){ 
               if ($v==1){ 
                   return 1; // Valid VAT 
               } else { 
                   return 0; // invalid VAT 
               } 
           }  
       } 
   } 
} 
?> 

 

The above will apply to any european country - the VAT laws are the same as far as I know. You cant charge VAT to anyone outside the EU, you must charge VAT to any individual who is in the EU but any EU business outside your own country must not be charged VAT.

 

Anyone running a hosting business in Europe who is not complying to the above specifics is breaking the law.

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Currently we cannot take any business from countries outside europe or european (non UK) businesses without breaking VAT laws because we dont have a way to not charge them VAT.

 

You've been unnecessarily losing a lot of business then. Under their profile, just put a tick in the "Tax Exempt" box.

Link to comment
Share on other sites

  • 0
You've been unnecessarily losing a lot of business then. Under their profile, just put a tick in the "Tax Exempt" box.

 

We dont use WHMCS. Thats why this is in the pre-sales section. Having played around with it a bit, I can see that there is no way of determining whether a customer is a non UK but EU business - thats why I pasted the solution in my original post. For correct accountancy purposes, there must be some kind of proof. You cant just tick a box that says "tax exempt". The VAT office will want to know exactly why. Also, the tax exempt status should be determined at the point they place their order, not restrospectively.

 

Our accountant wants to know the following...

 

1) Amounts received from UK customers

2) Amounts received from non-business EC customers, where UK VAT has to be charged or has to be deemed to having been charged.

3) Amounts received from business EC customers, on which no UK VAT will have been charged or deemed to have been charged

4) Amounts received from any customer outside the EC

 

Is WHMCS capable of providing relevent reports containing this info?

Link to comment
Share on other sites

  • 0
  • WHMCS CEO

You would setup a custom field to collect the VAT Number from the customer when applicable and then use the ClientSignup action hook in WHMCS to execute your code to check the number is valid and if so, set the Tax Exempt variable for the client.

 

With the reports, WHMCS will produce a report showing the total amount of VAT collected within a defined period. For any furthur breakdowns you will need to create custom reports or interact with the database directly.

 

Matt

Link to comment
Share on other sites

  • 0

>1. Not charge VAT to anyone outside the EU.

 

Not strictly correct, it's more complex than just their location....

 

>2. Not charge VAT to anyone outside the UK but in the EU who is a business.

 

Wrong. It's not related to whether they are a business, its entirely down to them being VAT registered in a VAT-sharing country *AND* having provided you with their VAT details

There are EU countries not in the VAT sharing agreement, which you still have to charge VAT to, even if they're vat regsitered :P

 

>3. Do charge VAT to everyone in the UK and anyone who is an individual in the EU.

 

sort of, you mean "everyone not in #1 or#2" :D

 

>I need a way of setting the VAT on specific countries, is this possible?

 

yes.

 

>The above will apply to any european country - the VAT laws are the same as far as I know

 

No, they're not.

Link to comment
Share on other sites

  • 0
You would setup a custom field to collect the VAT Number from the customer when applicable and then use the ClientSignup action hook in WHMCS to execute your code to check the number is valid and if so, set the Tax Exempt variable for the client.

 

With the reports, WHMCS will produce a report showing the total amount of VAT collected within a defined period. For any furthur breakdowns you will need to create custom reports or interact with the database directly.

 

Matt

 

Thanks Matt, thats very useful, its very similar to the way I intended to do it with the existing system. I need to ask one more question....

 

WHen an invoice is generated, does it always keep the customer details from the original order? So if the customer changes their details later, there is still a record of the address they used?

 

I ask this because it could be easy for a customer to sign up using an address in Australia and not pay VAT, then change their details back later. We would need to retain proof that they used a "non VATable" address.

Link to comment
Share on other sites

  • 0
No, unfortunately WHMCS does not keep the customer details on the invoice.

 

Thats a real shame because if the customer changes their details, it means there is no proof that the original order was placed for a customer outside the EU. To provide correct accountancy info, if you dont charge VAT on an order, you need to provide a reason why. The details must be available to show the VAT office for a minimum of six years after the order was originally processed.

 

With automated systems like this, usually you would provide a summary to the accountants rather than print off every individual invoice but those invoices must be retained in the database with the correct info so that they can be reproduced on demand, should the tax inspector call. If they dont contain the correct details from the time the order was placed then they are more or less invalid which means you are not retaining the required info to comply with standard VAT law.

 

It would be very easy for a customer to commit VAT fraud by signing up using a fake address, not paying VAT , then simply changing their address back to a UK one. If later you were asked to provide the invoice details, the original address they used would not be displayed and you'd be in trouble because you cannot provide a valid reason for not charging them VAT. Saving the address details with the invoice may not stop customers from trying to commit fraud but it would at the very least provide the "evidence" that is required.

 

I'm sure it would be simple to save the address details for each order within the invoice record and its something that I suggest is absolutely neccessary.

Edited by 4uh
Link to comment
Share on other sites

  • 0
Yes it is absolutely necessary and its omission as a basic requirement of WHMCS is a bit puzzling.

 

I'm sure its just an oversight, developers cant be expected to know everything so its up to us to point out these things. There are quite a number of things that I would consider basic requirements missing from this and most of the other billing systems.

 

My experience of all of them has been that in general the developers concentrate far too much on including basic support for as many registrar, control panel and other modules as possible instead of making sure that the most popular modules contain all the neccessary features. WHMCS is very good at telling you about all the different things it can do and unfortunately its only after we parted with our cash that we found out all the things it cant. But thats not specific to this product. Most of the billing systems on the market are the same in that respect. Still, I'm prepared to keep supporting WHMCS by paying the annual fees in the hope that one day it will include all the things we want. Same goes for another product on the market that we are currently using.

 

Rome wasnt built in a day as they say.

Link to comment
Share on other sites

  • 0
  • WHMCS CEO

Admins get an email notification containing the old and new address details anytime a client updates their profile so providing you keep those emails, you have a record to prove what they were at any point in time in the past.

 

What I often suggest for companies who need to keep a copy of every invoice fixed at the time of generation both in terms of items and clients address/details is to include the full invoice in the invoice creation notification email. By that I mean edit the email template to contain mostly the same template and output as the invoice in the client area itself. That copy is then stored in the users email log inside WHMCS and the address & custom field details within it won't change should the values be updated in the database.

 

Matt

Link to comment
Share on other sites

  • 0

Yes, but it is illegal to alter paid invoice in any way, so anything that was there including address, and any custom fields (VAT) should stay keept on the invoice once it is paid and it shouldn't be allowed to client to change that...

 

Also admins don't get custom fields in that notification email so client can change VAT...

 

For example if client change address in his profile that should affect only new and unpaid invoices while paid invoices should always stay intact.

Link to comment
Share on other sites

  • 0

@4uh I agree with everything you just said with the proviso that I reserve the right to find anything puzzling if I don't understand it. I love WHMCS and was not complaining; it is an outstanding product. Being appreciative of this is optional whereas commercial Taxation compliance is not. :)

 

More to the point, now that the issue has rightly been raised and brought to our attention, it would be excellent to develop a solution, howsoever arrived at.

Edited by redrat
Link to comment
Share on other sites

  • 0
Yes, but it is illegal to alter paid invoice in any way, so anything that was there including address, and any custom fields (VAT) should stay keept on the invoice once it is paid and it shouldn't be allowed to client to change that...

 

Also admins don't get custom fields in that notification email so client can change VAT...

 

For example if client change address in his profile that should affect only new and unpaid invoices while paid invoices should always stay intact.

 

I agree wholeheartedly that details on existing, paid invoices should NEVER be changed but Matt's suggestion is a good one.

Link to comment
Share on other sites

  • 0

IS this fixed yet re: EU VAT and invoice details?

 

I am based in Italy and we have a few requirements.

 

1. Reverse charge VAT/IVA ability as mentioned.

2. Client details including VAT number saved with invoice.

3. Invoices starting from 1 at the beginning of each year.

 

I currently use AWBS and with AWBS I had to customise the system to create a separate table that links up with the invoice table and is pulled into the invoice when viewed. It stores the clients full details at the time of issue and an invoice number that matches the Italian law (Starts again at 1 each year).

 

I mentioned point 2 to AWBS dev and they have now implemented storage of client details in the invoice (This should be a requirement in every country), they already had full support for point 1 but don't support point 3 so my script is still in use.

 

My plan is to move over to WHMCS so I wonder if a script like the above could work for WHMCS as well? Is there an action hook that runs on invoice generation that could take the required details and store them in a custom table linking back to the original invoice?

Link to comment
Share on other sites

  • 0

I have a figure for a sale, I want to show how much of that sale is VAT. I want to display the VAT separately and then subtract the VAT cell to show the net amount. I'm really struggling, cos I know it's not as simple a subtracting 17.5% Cheers for any help .

Link to comment
Share on other sites

  • 0

Please Matt, add this feature in WHMCS 4.3, I think it will be easy:

 

· Add clients fields in the invoice table.

· Let the administrator to choice if the clients details are saved with the invoice (in the moment it is generated) or show actual client details.

Link to comment
Share on other sites

  • 0
Please Matt, add this feature in WHMCS 4.3, I think it will be easy:

 

· Add clients fields in the invoice table.

· Let the administrator to choice if the clients details are saved with the invoice (in the moment it is generated) or show actual client details.

 

I agree with that, but I don't think that is an easy task, because there are some details to think about... There are a custom fields that WHMCS also need to keep on invoice, and we should be able to choose which custom fields to preserve etc. Lot of us have some custom fields like VAT for example that must be preserved with the invoice when status change to paid, and that is also very important.

 

I also have to correct you on this.. Client details should not be saved with the invoice in the moment it is generated, because admin and client should be able to change details before payment. Details should be saved only when invoice status is changed to paid. While inoice is not paid it is completely legal to alter that information.

 

It is also important that admin have the ability to alter those details that are saved with the invoice later in case some incorrect details are maybe saved with the invoice because such mistakes are of course always possible.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated