Verifica Partita IVA comunitaria

La Commissione Europea mette a disposizione degli sviluppatori un servizio di verifica e controllo dell’esistenza degli operatori economici registrati presso un paese UE.
Questo permette di assicurarsi che un nuovo cliente o fornitore sia correttamente censito, evitando truffe o altri guai vendendo o comprando da aziende fantasma.
Il sistema si chiama VIES (VAT Information Exchange System – sistema di scambio di informazioni relative all’IVA).
Si tratta di uno strumento elettronico per la convalida del numero di partita IVA delle aziende registrati nell’UE per le transazioni transfrontaliere di beni e servizi.
Dal punto di vista tecnico l’interrogazione è piuttosto semplice e di seguito vediamo il codice VB.Net che restituisce le informazioni anagrafiche relative al VAT Number.
La variabile PIVA che deve essere passata alla funzione è il numero della Partita IVA con il codice dello stato che è un prefisso di due caratteri ("IT" per Italia)

 

Public ControllaPIVA_FromWebService_Dati As String = ""
Function ControllaPIVA_FromWebService(ByVal PIVA As String) As Boolean

    Try
        ControllaPIVA_FromWebService_Dati = ""

        Dim NAZIONE As String = "IT"
        NAZIONE = Mid(PIVA, 1, 2)
        PIVA = Mid(PIVA, 3)

        Dim requestUrl As String = "http://ec.europa.eu/taxation_customs/vies/services/checkVatService"
        Dim requestString As String = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">
<soapenv:Header/>
<soapenv:Body>
  <urn:checkVat>
     <urn:countryCode>COUNTRY</urn:countryCode>
     <urn:vatNumber>VATNUMBER</urn:vatNumber>
  </urn:checkVat>
</soapenv:Body>
</soapenv:Envelope>"
        requestString = requestString.Replace("COUNTRY", NAZIONE)
        requestString = requestString.Replace("VATNUMBER", PIVA)

        Dim wc As New System.Net.WebClient()
        wc.Headers(System.Net.HttpRequestHeader.ContentType) = "application/x-www-form-urlencoded"
        Dim HtmlResult As String = wc.UploadString(requestUrl, requestString)

        If InStr(LCase(HtmlResult), "<valid>true</valid>") > 0 Then
            Try
                Dim P1 As Integer = InStr(LCase(HtmlResult), "<name>")
                Dim P2 As Integer = InStr(LCase(HtmlResult), "</name>")
                If P1 > 0 Then
                    ControllaPIVA_FromWebService_Dati = ControllaPIVA_FromWebService_Dati + Mid(HtmlResult, P1 + 6, P2 – P1 – 6) + vbCrLf
                End If
            Catch ex As Exception
            End Try
            Try
                Dim P1 As Integer = InStr(LCase(HtmlResult), "<address>")
                Dim P2 As Integer = InStr(LCase(HtmlResult), "</address>")
                If P1 > 0 Then
                    ControllaPIVA_FromWebService_Dati = ControllaPIVA_FromWebService_Dati + Mid(HtmlResult, P1 + 9, P2 – P1 – 9) + vbCrLf
                End If
            Catch ex As Exception
            End Try

            Return True
        Else
            Return False
        End If

    Catch ex As Exception
        Return False

    End Try

End Function

La funzione interroga il servizio e se trova il codice passato restituisce i dati anagrafici che permettono di verificare l’autenticità delle informazioni in nostro possesso.
Se il servizio non trova il VAT Number, dopo avere controllato di averlo scritto correttamente (senza spazi o altri caratteri speciali), si potrebbe essere in presenza di un soggetto passivo ai fini IVA o di eccezioni che possono essere varie per i diversi stati membri.
Sulla rete queste casistiche si trovano ben documentate nei siti istituzionali dei vari paesi.
Per l’Italia si veda https://www.agenziaentrate.gov.it/wps/content/nsilib/nsi/contatta
In particolare se si è certi che la partita IVA è formalmente corretta ma non viene riconosciuta, l’attività potrebbe essere cessata o trattarsi di azienda individuale o associazione no profit.

Possiamo concludere dicendo che il mancato riscontro non è garanzia di azienda non registrata mentre è vero il contrario, ovvero che se il servizio risponde fornendo i dati anagrafici del soggetto possiamo operare tranquillamente.

Articolo successivo
Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: