Jump to content
thirty bees forum

How do you handle invalid VAT numbers for cross border transactions?


datakick

Recommended Posts

Thirty bees vatnumber module can do automatic vat number check using VIES webservice. 

Unfortunately, VIES webservice is very unreliable. It very often returns error messages like TIMOUT or SERVICE_UNAVAILABLE. When that happen during checkout the order process is blocked. Customers are unable to complete the order, and leave the site. Not nice.

For that reason, I disabled automatic check. But that brings other problems. Customers from other EU states sometimes enter invalid vat numbers (or valid vat number that is not eligible for cross-border transaction). System accept these invalid VAT numbers, and creates order without tax, and customers pay less.

I will detect this situation later, but it's too late. Payment is already made, and goods are delivered (I sell virtual products, so there is no delay). I can ask the customer to pay the VAT. Sometimes they do, sometimes they ignore me. If that happen, then I have to pay the tax myself. In any case, there is a need to modify or issue a new invoice... it's a lot of hassle. 

How do you do that?

Link to comment
Share on other sites

Unfortunately, but there is no way to download EU VAT number database to your server and perform validation locally. And VIES server works tragically, it is perpetually overloaded 😞
The only solution I can think of is to create a new order status "Awaiting EU VAT number validation" configured identically to "Awaiting bank wire" and plug it in all electronic payment modules.
Validation of EU VAT number must be done manually by store staff and change the status to "Payment accepted" if number is correct.
However, not all payment modules have ability to configure statuses. Stripe module has this possibility, but Paypal module does not.

 

Link to comment
Share on other sites

I noticed that a lot of VAT numbers that are rejected are not really bad. Instead they are not correctly formatted. 

 - Many people enter use separators like a space or a dot. So "123 456 789" instead of "123456789".

 - The entry is case sensitive. Quite a few people enter lowercase where as far as I have seen always uppercase is required.

 - For some countries the country iso-code is part of the string. For others not. This goes often wrong.

In some cases people don't notice the rejection and without noticing it pay the VAT. It would be good to have a popup when a VAT number is rejected.

It would also be nice when the software provided automatic correction.

Link to comment
Share on other sites

17 hours ago, e-com said:

The only solution I can think of is to create a new order status "Awaiting EU VAT number validation" configured identically to "Awaiting bank wire" 

 

Yes, I was thinking about similar solution. It does not even have to be integrated with payment solutions, but vatmodule could do that automatically after order has been created.

If the order contains address with VAT# that is not validated yet (validation failed during checkout), vatmodule would set the order status to 'Awaiting VAT Number validation'. Merchants could manually verify the vat number, or the module could use some cron job and try to validate against VIES webservice. If the validation fails, the status would once again be switched, this time to 'VAT Number validation failed' status, and merchants would have to contact customer and ask for valid vat#, or for additional payment, or cancel order and refund money.

The important thing is that the invoice should not be generated before the vat# has been validated. 

 

 

Link to comment
Share on other sites

10 hours ago, musicmaster said:

I noticed that a lot of VAT numbers that are rejected are not really bad. Instead they are not correctly formatted. 

 - Many people enter use separators like a space or a dot. So "123 456 789" instead of "123456789".

 - The entry is case sensitive. Quite a few people enter lowercase where as far as I have seen always uppercase is required.

 - For some countries the country iso-code is part of the string. For others not. This goes often wrong.

In some cases people don't notice the rejection and without noticing it pay the VAT. It would be good to have a popup when a VAT number is rejected.

It would also be nice when the software provided automatic correction.

Good points. 

In the upcoming version of module there is a new validation for prefix, and that it matches country address.

We could also implement regexp check, if the vat formats for different countries are know. That should fix the problems you mentiioned

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...