| |||||||||
Rédactrice et modératrice Compta Online
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.
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 :-)
Bonjour,
Je n'avais pas non plus trouvé grand chose..
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...
| |||||||||
Bonsoir,
Comme il a été dit, il existe la page VIES Validation du numéro de TVA par VIES.
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,
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.
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.
Cordialement
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 } ?> |
28 Mar | Flash News CO : semaine du 25 mars 2024 |
27 Mar | Acquisition de congés payés pendant la maladie |
27 Mar | Loi Simplification ou Pacte II : vers une nouvelle réévaluation des seuils de nomination des CAC ? |
26 Mar | Salaire du directeur financier en 2024 |
26 Mar | IFI : assiette, taux et calcul du montant à payer |
25 Mar | La rupture conventionnelle (conditions, modalités) |
24 Mar | Le statut des salariés protégés : représentants du personnel, conseillers prud'homaux |
24 Mar | La notion de responsabilité sociétale des entreprises |
24 Mar | Aspects fiscaux des donations d'entreprises individuelles : régimes dérogatoires |
Compta Online
S'informer, partager, évoluer
Média communautaire 100% digital destiné aux professions du Chiffre
Service de presse en ligne CPPAP n°0324W94840