Gratis btw nummers controleren via de API van de VIES

VIES staat voor VAT Information Exchange System en is een overheidsdienst vanuit de Europese Unie. Via deze dienst is het onder andere mogelijk te controleren of btw nummers juist zijn. Web-based hebben ze hier een formulier voor te vinden op:

    http://ec.europa.eu/taxation_customs/vies/?locale=nl


Daarnaast is het ook mogelijk via een webservice - SOAP API - deze dienst aan te roepen. De WSDL hiervoor is te vinden op:

    http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl


Een voorbeeld hoe dit aan te roepen via Php,


    /**
     * checkVat() - checks a vatnumber with the 'VIES' service
     * 
     * if valid, returns an object with vat-information
     * else false
     * 
     * might throw an Exception if soap-call fails
     */
    function checkVat($nr) {
        $nr = strtoupper($nr);
        $nr = preg_replace('/[^A-Z0-9]/', '', $nr);
        
        // regexp found @ https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s21.html
        $regexp = "^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|"
            . "(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|"
            . "(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|"
            . "(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|"
            . "(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|"
            . "(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$";
        
        // check regexp
        $r = preg_match('/'.$regexp.'/', $nr);
        if (!$r) {
            return false;
        }
        
        
        // check soap api
        $countryCode = substr($nr, 0, 2);
        $vatNumber = substr($nr, 2);
        
        $soapClient = new \SoapClient('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl');
        $r = $soapClient->checkVat(array('countryCode' => $countryCode, 'vatNumber' => $vatNumber));
        
        if (is_object($r) && isset($r) && $r->valid) {
            return $r;
        }
        
        return false;
    }



Video over deze blog

- Bent u opzoek naar een Php of Java programmeur voor uw website of applicatie? (freelance / detachering)
- Losse tickets, opdrachten, of gehele projecten in de planning?

Dan kom ik graag met u in contact! Meer informatie over mij vindt u hier.
Sitemap | Op alle producten & diensten zijn de algemene voorwaarden van toepassing