ACE

Vérification numéro tva intracommunautaire

11 réponses
22 410 lectures
Ecrit le : 25/05/2010 18:37 par Patrick-r
Bonjour,
Notre entreprise (PME) vend des produits logiciels en ligne, dans la fourchette de 20 à 600 ¤.
Lorsque nous vendons à une entreprise de l'UE et que celle-ci nous indique son numéro de TVA intracommunautaire, nous devrions facturer hors TVA, après vérification de la validité du numéro de TVA intracommunautaire de l'acheteur.

Mais comment le vérifier automatiquement ? C'est-à-dire au moyen d'un script ou d'une requête informatique auprès d'un organisme qui pourrait répondre oui ou non.

Nous n'avons trouvé que des requêtes manuelles, avec un opérateur derrière l'écran (VIES par exemple). Bien sûr, cette méthode est totalement incompatible avec une vente en ligne qui est totalement automatisée.

Alors, comment résoudre cette difficulté ?
D'autres y ont certainement été confrontés...

Curieusement, alors que les achats en lignes se développent rapidement, je n'ai trouvé personne qui connaisse la réponse. On me dit de me connecter manuellement sur tel ou tel site...
Difficile d'être en permanence derrière un écran à 3 heures du matin pour guetter l'acheteur et valider ou non dans les 10 secondes !

Merci d'avance de votre aide,

--------------------
Patrick

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 10:09 par Sandra Schmidt
Bonjour,

Après une petite recherche sur internet, il semblerait que cette vérification ne soit pas possible, ou alors, de manière très partielle :

lien n°1
lien n°2
lien n°3
lien n°4

Personnellement, je ne connais pas d'autre moyen que la méthode manuelle.

Bon courage,

Cordialement

--------------------
Rédactrice et modératrice Compta Online

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 16:02 par Patrick-r
Citation : Sandra Schmidt @ 26.05.2010 à 10:09
Bonjour,

Après une petite recherche sur internet, il semblerait que cette vérification ne soit pas possible, ou alors, de manière très partielle :

lien n°1
lien n°2
lien n°3
lien n°4

Personnellement, je ne connais pas d'autre moyen que la méthode manuelle.

Bon courage,

Cordialement

Bonjour Sandra Schmidt et merci pour cette réponse si rapide !

J'avais effectué à peu près les mêmes recherches, avec le même "succès". Les liens contenant des exemples de programmation sont un plus par rapport à ma propre recherche.

Je trouve tout à fait extraordinaire que l'administration fiscale, très souvent en pointe dans le domaine de la gestion informatisée des documents et des procédures ne se soit pas encore penché sur cette question.
D'autant plus que la vente en ligne se développe rapidement.

La question qui reste en suspend est : Mais comment font les autres sociétés qui vendent des produits en ligne vers d'autres pays de l'UE, particulièrement lorsque ces produits sont dématérialisés comme des logiciels ?
Nos clients nous réclament, à juste titre, de la facturation hors TVA et nous sommes incapables de leur donner satisfaction :-(

On pourrait envisager la simulation d'un acte de recherche manuelle, mais outre qu'il faudrait adapter les formats aux cas différents de 27 pays Codage TVA des pays de l'UE nous serions à la merci d'une modification de présentation du site...

Vivement que l'administration prenne en compte ce besoin des entreprises...

En tout cas, encore merci pour ces renseignements :-)

--------------------
Patrick

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 16:20 par Lucky luc
Bonjour,

Je n'avais pas non plus trouvé grand chose. Peut-être une piste (payante) ici.

Cordialement.

Luc

--------------------
DECF - DEFC - Maîtrise ès Sciences Économiques - DESS Techniques Quantitatives et Informatiques de Gestion

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 19:04 par Patrick-r
Citation : Lucky luc @ 26.05.2010 à 16:20
Bonjour,

Je n'avais pas non plus trouvé grand chose. Peut-être une piste (payante) ici.

Cordialement.

Luc

Merci Luc,

Il s’agit ici plutôt d’une sorte de mise en forme commune des différents formats de pays de l’UE, mais c’est un élément intéressant de plus !

Ce que je me demande, c’est comment font les autres sociétés qui se trouvent dans le même cas que la nôtre...

--------------------
Patrick

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 20:27 par Claudusaix
Bonsoir,

Comme il a été dit, il existe la page VIES Validation du numéro de TVA par VIES (Cf. le lien en Français).

Je ne sais pas exactement comment il serait possible de l'automatiser. Toutefois, je donne une piste. Comme tout site, il y a un code source. Le bouton «Vérifier» est ce que l'on appelle un bouton «INPUT».

Or, ces boutons «INPUT» sont généralement écrits en javascript et/ou en CSS. Aussi, à partir du code source, il faudrait créer un script pour automatiser les éléments du code source de la page VIES Validation du numéro de TVA par VIES.

Je parle seulement de l'aspect technique. Il faut évidemment étudier l'aspect juridique et, sans doute, demander l'autorisation d'exploitation auprès de l'administrateur du site.

Cordialement,

--------------------
Claudusaix
Expert-comptable mémorialiste , Membre de l'ANECS Limousin, Membre du CJEC Limousin 

Re: Vérification numéro tva intracommunautaire

Ecrit le : 26/05/2010 21:10 par Lucky luc
Bonsoir,

Citation
Il s’agit ici plutôt d’une sorte de mise en forme commune des différents formats de pays de l’UE, mais c’est un élément intéressant de plus !

Pourtant il est indiqué "Algorithme de vérification des codes de TVA intracommunautaire".
Je lis aussi "Sur demande, Datalgo peut réaliser un contrôle spécifique pour les numéros de TVA Intracom des autres pays membres de l'Union Européenne."

Cordialement.

Luc

--------------------
DECF - DEFC - Maîtrise ès Sciences Économiques - DESS Techniques Quantitatives et Informatiques de Gestion

Re: Vérification numéro tva intracommunautaire

Ecrit le : 12/06/2010 03:50 par Erwanf
Bonjour,

Désolé de répondre tardivement, je viens de m'inscrire sur ce forum.

Il est bien possible de vérifier automatiquement la validité de numéros de TVA intracommunautaires.
Mais il ne faudrait sans-doute pas le faire tout à fait comme suggéré dans les messages précédents.

Vu qu'il s'agit là de développement informatique, des précisions trouveraient peut-être plus leur place sur un forum dédié à ce type de sujet. Je vais tout de même essayer de donner le principe dans les grandes lignes.

Pour ma part je ne conseillerai pas d'utiliser (seuls) des algorithmes qui se basent uniquement sur la forme d'un numéro fourni : celle-ci peut être correcte sans pour autant que le No soit valide ni que l'entité soit réellement assujettie (ni d'ailleurs que l'entité existe).

Lorsque l'on a déjà validé le No de TVA (cf. point 1 ci-dessous), ce type d'algorithme peut par contre s'avérer utile si l'on tient également à vérifier (point 2) que le No de TVA validé concorde bien avec les autres informations fournies (ex: No SIREN pour les entreprises françaises).
Il y a dans ce cas 2 vérifications successives à effectuer, toutefois il ne semble pas y avoir de solution miracle pour la 2ème.

1) Vérification des numéro de TVA intracommunautaires

Comme cela a déjà été suggéré, le mieux est d'utiliser le service VIES mis à disposition par la Commission Européenne.
Ce service utilise plusieurs bases de données (à priori une par état) qui recense les numéros des entités effectivement enregistrées.

Par contre, il ne faut surtout pas que votre application se base sur le formulaire de la page prévue pour une consultation manuelle et tente de retraiter la page web retournée pour y retrouver un résultat.
En effet, votre programme serait à revoir à chaque changement dans la forme du formulaire ou de la page retournée.

La meilleure solution consiste bien à utiliser VIES, mais dans sa version dite "web service".
Le principe reste le même, sauf que ce service est spécifiquement destiné à servir de support au "dialogue" entre des applications tierces (telles qu'une boutique en ligne) et les serveurs de vérification.

Le site de la Commission Européenne donne quelques informations lacunaires ici (question 16).

Une recherche sur le web renvoie vers plus d'explications et des exemples d'implémentations
(mots-clés : verifier tva vies soap ...).

En pratique l'application prend le No à vérifier, prépare une requête selon un modèle stucturé et prédéfini (WSDL), et l'envoie (protocole SOAP) au serveur de vérification.
En retour l'application reçoit une réponse, elle aussi dans une forme structurée et prédéfinie, qui peut alors être taitée.

Selon le cas, la mise en oeuvre n'est pas forcément difficile mais nécessite tout de même quelques connaissances en développement.

S'il s'agit d'une boutique en ligne reposant sur un logiciel courant, des modules/extensions existants peuvent permettre de vérifier un No de TVA lors d'une inscription ou d'une commande.
Exemples (payants) pour Magento : EuVat ou TaxVatCheck
Pour osCommerce : TVA Intracommunautaire v2.0
ou encore avec Drupal : Ubercart VAT Number
...

A noter que le protocole utilisé peut être implémenté dans plusieurs languages de programmation et la vérification automatisée de n° de TVA n'est pas réservée aux seuls sites internet.
On peut par exemple imaginer que cette fonctionnalité soit implémentée dans un logiciel installé sur un poste local pour traiter des bons de commande par lot.

2) Vérification de la correspondance No de TVA <=> entreprise concernée

Le service VIES permet bien de vérifier qu'un No de TVA est valide et qu'il correspond bien à une entreprise/entité assujetie.
Pour autant il comporte une limitation, et pas des moindre : il ne permet pas directement de vérifier qu'il correspond bien à l'entreprise à laquelle on s'intéresse.

Donc soit on fait confiance aux informations fournies, soit il faut envisager un algorithme qui effectue une 2ème vérification en confrontant le No de TVA déjà validé avec les autres éléments dont on dipose.

Sur ce point, les algorithmes qu'on peut trouver se limitent le plus souvent à une vérification de forme, tandis qu'il faut ici faire une vérification sémantique.
Par exemple pour une entreprise française : vérifier que No de TVA validé comprend bien le No SIREN fourni par ailleurs.

Reste que le No de TVA est construit différement selon les pays de l'Union Européenne et que je n'ai pas vu d'algorithme ou de document qui précise pour chacun d'eux les éléments à prendre en compte.

Cette page donne des indications pour quelques pays ainsi qu'un algorithme (et une implémentation PHP) pour vérifier la forme des No de TVA.

Cordialement

Re: Vérification numéro tva intracommunautaire

Ecrit le : 18/06/2010 20:01 par Patrick-r
Citation : Erwanf @ 12.06.2010 à 03:50
Bonjour,

Désolé de répondre tardivement, je viens de m'inscrire sur ce forum.

Il est bien possible de vérifier automatiquement la validité de numéros de TVA intracommunautaires.
Mais il ne faudrait sans-doute pas le faire tout à fait comme suggéré dans les messages précédents.

Vu qu'il s'agit là de développement informatique, des précisions trouveraient peut-être plus leur place sur un forum dédié à ce type de sujet. Je vais tout de même essayer de donner le principe dans les grandes lignes.

Pour ma part je ne conseillerai pas d'utiliser (seuls) des algorithmes qui se basent uniquement sur la forme d'un numéro fourni : celle-ci peut être correcte sans pour autant que le No soit valide ni que l'entité soit réellement assujettie (ni d'ailleurs que l'entité existe).

Lorsque l'on a déjà validé le No de TVA (cf. point 1 ci-dessous), ce type d'algorithme peut par contre s'avérer utile si l'on tient également à vérifier (point 2) que le No de TVA validé concorde bien avec les autres informations fournies (ex: No SIREN pour les entreprises françaises).
Il y a dans ce cas 2 vérifications successives à effectuer, toutefois il ne semble pas y avoir de solution miracle pour la 2ème.

1) Vérification des numéro de TVA intracommunautaires

Comme cela a déjà été suggéré, le mieux est d'utiliser le service VIES mis à disposition par la Commission Européenne.
Ce service utilise plusieurs bases de données (à priori une par état) qui recense les numéros des entités effectivement enregistrées.

...

2) Vérification de la correspondance No de TVA <=> entreprise concernée

Le service VIES permet bien de vérifier qu'un No de TVA est valide et qu'il correspond bien à une entreprise/entité assujetie.
Pour autant il comporte une limitation, et pas des moindre : il ne permet pas directement de vérifier qu'il correspond bien à l'entreprise à laquelle on s'intéresse.

...

Cordialement

Bonjour Erwanf,

Voilà une réponse bien détaillée !

L’existence de ce Web service est une info très intéressante. C’est certainement en effet de ce côté que se trouve la solution. Du moins pour le point 1 (vérif de l’existence du Numéro).

En effet, il s’agit de développement informatique, cependant, je n’évoque ici que les principes, les points de contacts avec l’administration et des liens vers de la documentation.
Je ne compte pas étaler des lignes de code ;-)

Le seul contrôle de la validité structurelle du No, encore que ce ne soit pas toujours possible, ne donnerait rien d’intéressant. Il faut au moins obtenir quelque chose comme ce que répond VIES lors d’une interrogation manuelle : L’entreprise existe bien dans le pays considéré.
Accessoirement une référence de la requête : je suis untel, possédant le No xxxyyyzzz et je contrôle que mon client existe. VIES me dit OK, et je peux donc de bonne foi accepter de ne pas facturer la TVA à ce client.

Quant au point 2, vérifier que le No appartient bien au client qui l’annonce... je ne crois pas que l’info soit disponible (sauf en France, mais c’est justement le seul cas où ça ne m’intéresse pas puisque nous facturons la TVA).

Les infos que j’ai trouvées sur ce Web service sont effectivement lacunaires, mais bon, je vais creuser sur des forums d’informaticiens.
Nous utilisons des Web services dans d’autres cas de figure, si ça fonctionne côté administration, on devrait y arriver...
Notre boutique en ligne est de construction "maison", car nos produits, modulaires, entrent mal dans les standards des outils tout faits de vente en ligne.

Merci Erwanf,

Cordialement,

--------------------
Patrick

Re: Vérification numéro tva intracommunautaire

Ecrit le : 17/01/2011 08:47 par Denayerj
Citation : Patrick-r @ 25.05.2010 à 17:37
Bonjour,
Notre entreprise (PME) vend des produits logiciels en ligne, dans la fourchette de 20 à 600 ¤.
Lorsque nous vendons à une entreprise de l'UE et que celle-ci nous indique son numéro de TVA intracommunautaire, nous devrions facturer hors TVA, après vérification de la validité du numéro de TVA intracommunautaire de l'acheteur.

Mais comment le vérifier automatiquement ? C'est-à-dire au moyen d'un script ou d'une requête informatique auprès d'un organisme qui pourrait répondre oui ou non.

Nous n'avons trouvé que des requêtes manuelles, avec un opérateur derrière l'écran (VIES par exemple). Bien sûr, cette méthode est totalement incompatible avec une vente en ligne qui est totalement automatisée.

Alors, comment résoudre cette difficulté ?
D'autres y ont certainement été confrontés...

Curieusement, alors que les achats en lignes se développent rapidement, je n'ai trouvé personne qui connaisse la réponse. On me dit de me connecter manuellement sur tel ou tel site...
Difficile d'être en permanence derrière un écran à 3 heures du matin pour guetter l'acheteur et valider ou non dans les 10 secondes !

Merci d'avance de votre aide,

Bonjour,
Voici une petite fonction PHP que j'utilise sur mes sites.

CODE<?php
function VerifyVatNumber($VatNumber,$Vies=false){
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Vérification de la forme d'un numéro de TVA pour les PAYS suivant
# AT,DK,HU,LU,MT,FI,SI,PT,DE,EE,EL,SK,PL,IT,LV,BG,CZ,BE,LT,CY,ES
# FR,GB,IE,NL,RO,SE
# Auteur: Denayer Joël
# Site web: bottin.be, bottin.fr
# Possibilité d'étendre le code à d'autres pays.
# exemple: $VatNumber = 'DK99 99 99 99 ';
# if(VerifyVatNumber($VatNumber)){ echo 'valide';} else echo 'non valide';
# Retourne TRUE en cas de numéro valide.
# Pour vérifier également si le numéro est valide VIA VIES il faut mettre
# true -> ex: if(VerifyVatNumber($VatNumber,true)){ echo 'valide + Vies';} else echo 'non valide' + vies;
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
$S = eregi_replace("[^A-Z0-9\+\*]+","",$VatNumber);
$C = strtoupper(substr($S, 0, 2)); //recupération du code pays.
(strlen($C)=='2')?$V=true:$V=false;
if($V){
if($C=='AT'): $F='^'.$C.'[U[:digit:]]{9}$';
elseif($C=='DK'||$C=='HU'||$C=='LU'||$C=='MT'||$C=='FI'||$C=='SI'): $F='^'.$C.'[[:digit:]]{8}$';
elseif($C=='PT'||$C=='DE'||$C=='EE'||$C=='EL'): $F='^'.$C.'[[:digit:]]{9}$';
elseif($C=='SK'||$C=='PL'): $F='^'.$C.'[[:digit:]]{10}$';
elseif($C=='IT'||$C=='LV'): $F='^'.$C.'[[:digit:]]{11}$';
elseif($C=='BG') : $F='^'.$C.'[[:digit:]]{8,9}$';
elseif($C=='CZ') : $F='^'.$C.'[[:digit:]]{8}$|[[:digit:]]{10}$';
elseif($C=='BE') : $F='^'.$C.'[0[:digit:]]{10}$';
elseif($C=='LT') : $F='^'.$C.'[[:digit:]]{9}|[[:digit:]]{12}$';
elseif($C=='CY') : $F='^'.$C.'[[:digit:]]{8}[[:alpha:]]{1}$';
elseif($C=='ES') : $F='^'.$C.'[[:alnum:]]{1}[[:digit:]]{7}[[:alnum:]]{1}$';
elseif($C=='FR') : $F='^'.$C.'[[:alnum:]]{2}[[:digit:]]{9}$';
elseif($C=='GB') : $F='^'.$C.'([[:digit:]]{9})$|([[:digit:]]{12})$|([GD|HA][[:digit:]]{3}$)';
elseif($C=='IE') : $F='^'.$C.'[[:digit:]]{1}[[:alnum:]]{1}[[:digit:]]{5}[[:alpha:]]{1}$';
elseif($C=='NL') : $F='^'.$C.'[[:digit:]B]{10}[[:digit:]]{2}$';
elseif($C=='RO') : $F='^'.$C.'[[:digit:]]{2,10}$';
elseif($C=='SE') : $F='^'.$C.'[[:digit:]]{12}$';
else :$F = false; return $F;
endif;
if($F!==false){
$vatNumber = substr(strtoupper($S), 2);
(ereg(''. $F.'',$C.$vatNumber))?$V=true:$V=false;
if($V&&$Vies){
//Les pays CEE pris en compte par VIES
(ereg($C,'AT,BE,BG,CY,CZ,DE,DK,EE,EL,ES,FI,FR,GB,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK'))?$CEE=true:$CEE=false;
if($CEE==true){ //on continue
$client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/services/checkVatService.wsdl");
$params = array('countryCode' => $C, 'vatNumber' => $vatNumber);
try{
$result = $client->checkVat($params);
if ($result->valid ){
($result->valid==1)?$Xv=true: $Xv=false; //pour la forme
return $Xv; // Retourne TRUE si le numéro est valide avec VIES
} else return false; //numéro non valide
}
catch(Exception $e) {
//Non valide ou service non dispo
return false;
}
}
else
{
//on abandonne
return false;
//OU vous pouvez relancer la procédure uniquement sur la forme
//return VerifyVatNumber($S),
}
} else return $V; // retourne TRUE OU FALSE (sans VIES)
} else return $F; // retourne FALSE (structure non conforme)
} else return $V;//manque le code PAYS
}
?>

--------------------
Denayer Joël, Webmaster, bottin.be, bottin.fr
Twitter   Facebook   Linkedin

Pour poster un nouveau message, vous devez vous enregistrer en tant que membre ou vous connecter à votre compte.
L'inscription est rapide et gratuite !

Inscription nouveau membre   Connexion

Perte de nom d'utilisateur   Perte de mot passe
Comptalia