Komponente, die das Mehrwertsteuer-Informationsaustauschsystem (VIES) der Europäischen Kommission (EG) nutzt, um Mehrwertsteuer-Registrierungsnummern in der EU mithilfe von PHP und Composer zu überprüfen und zu validieren.
Die Vies
-Klasse bietet Funktionen zum Durchführen eines SOAP-Aufrufs an VIES und gibt ein Objekt CheckVatResponse
zurück, das die folgenden Informationen enthält:
Ländercode (Zeichenfolge): eine zweistellige Notation des Ländercodes
Umsatzsteuer-Identifikationsnummer (Zeichenfolge): enthält die vollständige Registrierungsnummer ohne Ländercode
Datum der Anfrage (DateTime): das Datum, an dem die Anfrage gestellt wurde
Gültig (boolean): Flag, das angibt, dass die Registrierungsnummer gültig (TRUE) oder nicht (FALSE) war.
Name (Zeichenfolge): eingetragener Firmenname (falls vom EG-Mitgliedsstaat bereitgestellt)
Adresse (Zeichenfolge): registrierte Firmenadresse (falls vom EG-Mitgliedstaat bereitgestellt)
Auf der Website der Europäischen Kommission steht:
Um eine innergemeinschaftliche Lieferung ohne Erhebung von Mehrwertsteuer durchzuführen, sollten Sie sicherstellen , dass die Person, an die Sie die Gegenstände liefern, ein Steuerpflichtiger in einem anderen Mitgliedstaat ist und dass die betreffenden Gegenstände Ihren Mitgliedstaat in einen anderen Mitgliedstaat verlassen haben oder verlassen werden MS. Die Umsatzsteuer-Identifikationsnummer sollte ebenfalls in der Rechnung enthalten sein.
Weitere Informationen unter http://ec.europa.eu/taxation_customs/vies/faqvies.do#item16
Am 25. Mai 2018 tritt die Datenschutz-Grundverordnung (DSGVO) in allen 28 europäischen Mitgliedsstaaten in Kraft. Ist dieses VIES-Servicepaket DSGVO-konform?
Kurz gesagt: Ja.
Die längere Antwort lautet, dass dieses MIAS-Paket nur mit dem von der Europäischen Kommission bereitgestellten Dienst zur Überprüfung der Umsatzsteuer-ID interagiert. Die Mehrwertsteuervalidierung ist in europäischen Ländern obligatorisch und daher ist diese Dienstleistung als Rechtmäßigkeit und Rechtsgrundlage zulässig. Weitere Informationen hierzu finden Sie im europäischen DPO-3816.1. Dieser Dienst speichert selbst keine Daten und sammelt nicht mehr Informationen als gesetzlich vorgeschrieben und vom EC VIES-Dienst bereitgestellt.
Wenn Sie dieses Servicepaket in Ihrem eigenen Projekt implementiert haben, stellen Sie sicher, dass Sie nur die Umsatzsteuer-ID, den Zeitstempel der Validierung, das Ergebnis der Validierung und optional die vom EC VIES-Dienst bereitgestellte Validierungs-ID speichern .
Minimale PHP-Version: 7.3
Empfohlene PHP-Version: 7.4
Erweiterung: Seife
Erweiterung: Stk
Erweiterung: ctype
Weitere Informationen finden Sie in den Versionshinweisen.
Dieses Projekt ist auf Packagist!
Um die neueste stabile Version zu installieren, verwenden Sie composer require dragonbe/vies
.
Um gezielt eine Version (z. B. 2.2.0) zu installieren, fügen Sie sie einfach zum obigen Befehl hinzu, z. B. composer require dragonbe/vies:2.2.0
Hier ist ein Anwendungsbeispiel, das Sie sofort in der Befehlszeile (oder in Cron, Worker oder was auch immer) ausführen können, da dies höchstwahrscheinlich Ihr häufigster Anwendungsfall sein wird.
<?phpuse DragonBeViesVies;use DragonBeViesViesException;use DragonBeViesViesServiceException;require_once dirname(__DIR__) . '/vendor/autoload.php';$vies = new Vies();
if (false === $vies->getHeartBeat()->isAlive()) {echo 'Dienst ist im Moment nicht verfügbar, bitte versuchen Sie es später noch einmal.' . PHP_EOL;exit(1); }
$vies = new Vies();$options = ['proxy_host' => '127.0.0.1','proxy_port' => '8888', ];$vies->setOptions($options);$heartBeat = new DragonBeViesHeartBeat('tcp://' . $options['proxy_host'], $options['proxy_port']);$vies->setHeartBeat($heartBeat );$isAlive = $vies->getHeartBeat()->isAlive();
Da wir nun wissen, dass der Dienst aktiv ist, können wir mit der Validierung der Umsatzsteuer-Identifikationsnummern beginnen
$vatResult = $vies->validateVat('BE', // Ländercode des Händlers '0203430576', // Umsatzsteuer-Identifikationsnummer des Händlers'BE', // Ländercode des Antragstellers '0811231190' // Umsatzsteuer-ID des Antragstellers);
$vatResult = $vies->validateVat('BE', // Ländercode des Händlers '0203430576', // Umsatzsteuer-Identifikationsnummer des Händlers'BE', // Ländercode des Antragstellers '0811231190' // Umsatzsteuer-ID des Antragstellers'B-Rail', // Name des Händlers „NV“, // Firmentyp des Händlers „Frankrijkstraat 65“, // Straße des Händlers „1060“, // Händler Postleitzahl'Sint-Gillis' // Händlerstadt );
Die wichtigste Funktionalität besteht darin, festzustellen, ob die Umsatzsteuer-ID gültig ist
echo ($vatResult->isValid() ? 'Valid' : 'Nicht gültig') . PHP_EOL;// Ergebnis: Gültig
echo 'Bezeichner: ' . $vatResult->getIdentifier() . PHP_EOL;// Ergebnis: Bezeichner: WAPIAAAAWaXGj4Ra
Hinweis: Der VIES-Dienst gibt Datum und Zeitzone zurück, aber keine Uhrzeit
echo 'Datum und Uhrzeit: ' . $vatResult->getRequestDate()->format('r') . PHP_EOL;// Ergebnis: Datum und Uhrzeit: Sa, 31. Aug. 2019 00:00:00 +0200
echo 'Firmenname: ' . $vatResult->getName() . PHP_EOL;// Ergebnis: Firmenname: NV OR NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN
echo 'Firmenadresse: ' . $vatResult->getAddress() . PHP_EOL;// Ergebnis: Firmenadresse: FRANKRIJKSTRAAT 56 1060 SINT-GILLIS (BIJ-BRUSSEL)
echo 'Übereinstimmung des Händlernamens: ' . $vatResult->getNameMatch() . PHP_EOL;// Ergebnis: Übereinstimmung des Händlernamens:
echo 'Händler-Firmentyp-Übereinstimmung: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;// Ergebnis: Übereinstimmung mit dem Unternehmenstyp des Händlers:
echo 'Trader Street Match: ' . $vatResult->getStreetMatch() . PHP_EOL;// Ergebnis: Händler-Straßenübereinstimmung:
echo 'Händler-Postleitzahl-Übereinstimmung: ' . $vatResult->getPostcodeMatch() . PHP_EOL;// Ergebnis: Übereinstimmung mit der Postleitzahl des Händlers:
echo 'Trader City Match: ' . $vatResult->getCityMatch() . PHP_EOL;// Ergebnis: Übereinstimmung mit Händlerstadt:
<?phpuse DragonBeViesVies;use DragonBeViesViesException;use DragonBeViesViesServiceException;require_once dirname(__DIR__) . '/vendor/autoload.php';$vies = new Vies();$company = [ 'country_code' => 'BE', 'vat_id' => '0203430576', 'trader_name' => 'B-Rail', 'trader_company_type' => 'NV', 'trader_street' => 'Frankrijkstraat 65', 'trader_postcode' => '1060', 'trader_city' => 'Sint-Gillis', ];try {$vatResult = $vies->validateVat($company['country_code'], // Ländercode des Händlers$company['vat_id'], // Umsatzsteuer-ID des Händlers'BE', // Ländercode des Antragstellers (Ihre Ländercode)'0811231190', // Umsatzsteuer-ID des Antragstellers (Ihre Umsatzsteuer-ID)$company['trader_name'], // Händler name$company['trader_company_type'], // Unternehmenstyp des Händlers$company['trader_street'], // Straße des Händlers, Adresse$company['trader_postcode'], // Postleitzahl des Händlers$company['trader_city'] // Stadt des Händlers ); } Catch (ViesException $viesException) {echo 'Die Mehrwertsteuervalidierung kann nicht verarbeitet werden: ' . $viesException->getMessage();exit (2); } Catch (ViesServiceException $viesServiceException) {echo 'Die Mehrwertsteuervalidierung kann nicht verarbeitet werden: ' . $viesServiceException->getMessage();exit (2); }echo ($vatResult->isValid() ? 'Valid' : 'Nicht gültig') . PHP_EOL;echo 'Bezeichner: ' . $vatResult->getIdentifier() . PHP_EOL;echo 'Datum und Uhrzeit: ' . $vatResult->getRequestDate()->format('d/m/Y H:i') . PHP_EOL;echo 'Firmenname: ' . $vatResult->getName() . PHP_EOL;echo 'Firmenadresse: ' . $vatResult->getAddress() . PHP_EOL;echo 'Übereinstimmung des Händlernamens: ' . $vatResult->getNameMatch() . PHP_EOL;echo 'Übereinstimmung mit dem Unternehmenstyp des Händlers: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;echo 'Händler-Straßenübereinstimmung: ' . $vatResult->getStreetMatch() . PHP_EOL;echo 'Übereinstimmung mit der Postleitzahl des Händlers: ' . $vatResult->getPostcodeMatch() . PHP_EOL;echo 'Händlerstadt-Übereinstimmung: ' . $vatResult->getCityMatch() . PHP_EOL;echo PHP_EOL;
Wenn Sie dies ausführen, erhalten Sie das folgende Ergebnis:
Valid Identifier: WAPIAAAAWaYR0O8D Date and time: 21/10/2018 02:00 Company name: NV OR NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN Company address: FRANKRIJKSTRAAT 56 1060 SINT-GILLIS (BIJ-BRUSSEL) Trader name match: Trader company type match: Trader street match: Trader postcode match: Trader city match:
Hier ist eine Liste der Produkte oder Projekte, die dieses VIES-Paket enthalten
Symfony-Bundle von MyOnlineStore
Sandwich/Vies-Bündel
Wenn Sie ein Produkt oder ein Projekt haben, das dieses Paket verwendet, und Sie eine Namensnennung für Ihre Arbeit wünschen, senden Sie mir eine E-Mail oder pingen Sie mich auf Twitter oder Facebook an.
Wenn Sie Docker-Container haben möchten, können Sie jetzt einen für diesen Zweck entwickelten Container verwenden.
docker run --rm -d -p 8000:18080 Dragonbe/vies-web
Richten Sie Ihren Browser auf „localhost:8000“, um die Weboberfläche zur Validierung der Mehrwertsteuer zu verwenden.
Microsoft Dynamics GP – Dynamics GP-Echtzeitvalidierung der EU-Steuerregistrierungsnummer mithilfe von MIAS
Beliebte RIA Law EU-Projekte
PHP-Codebeispiele – HotExamples.com
Für Griechenland lautet der internationale Länder-ISO-Code GR , für Umsatzsteuer-IDNs wird jedoch das Präfix EL verwendet. Vielen Dank an Johan Wilfer für die Meldung.
Seit dem 1. Januar 2021 ist das Vereinigte Königreich nicht mehr Mitglied der Europäischen Union und daher validiert der von der Europäischen Kommission bereitgestellte MIAS-Dienst keine Umsatzsteuer-Identifikationsnummern mehr für das Vereinigte Königreich. Es gibt jedoch eine Ausnahme, und zwar für Nordirland (XI), wo die Umsatzsteuer-Identifikationsnummern mithilfe dieser Bibliothek und des EC-MIAS-Dienstes validiert werden können.
DragonBeVies wird unter der MIT-Lizenz veröffentlicht. Einzelheiten finden Sie in der mitgelieferten LICENSE-Datei.