UStID-Nummer online bei der EU prüfen

Die USt-ID wird benötigt, wenn man z.B. EU-weite Einkäufe/Verkäufe als Unternehmen tätigt. Um zu überprüfen, ob der Käufer “umsatzsteuerpflichtig” ist, kann die Nummer über eine API direkt bei der EU überprüft werden.

Weitere Informationen:

http://ec.europa.eu/taxation_customs/vies/faq.html

Seit FileMaker 16 ist nun möglich über den Scriptschritt Aus URL einfügen cURL-Optionen anzugeben.

Die API (SOAP) fordert und sendet ein XML. Das bedeutet, wir müssen die Anfrage als XML zur API senden.

Nun steht der EU-Webservice aber per SOAP (Simple Object Access Protocol) zur Verfügung. SOAP + XML-Request waren früher beliebte Formate für den Datenaustausch.

Heute verwendet man eher cURL, um s.g. REST-APIs anzusprechen, auf Basis von JSON-Request (forciert seit FileMaker 16).

Das ist aber kein Grund zur Sorge, denn SOAP und cURL sind mehr oder weniger das Selbe. Auch mit cURL können wir eine SOAP-Schnittstelle mit XML ansprechen.

Wenn wir die wsdl (http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl) dieser Vat-API im Browser aufrufen, sehen wir den Funktionsumfang und Parameter, die das System benötigt, um unsere Anfrage verarbeiten zu können und auch welche Daten als Antwort zurück gegeben werden.

 

Der rot umrandete Bereich zeigt, das Schema einer VAT-Prüfung.

  1. Funktionsname “checkVat”
  2. Parameter, die benötigt werden
  3. Werte, die als Response zurück gegeben werden

Die Funktion würde so aussehen: checkVat( countryCode ; vatNumber )

Wir müssen dieser API nun ein XML senden, in der wir die Parameter countryCode und vatNumber übergeben.

<s11:Envelope xmlns:s11='http://schemas.xmlsoap.org/soap/envelope/'>
  <s11:Body>
    <tns1:checkVat xmlns:tns1='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
      <tns1:countryCode>LÄNDERCODE</tns1:countryCode>
      <tns1:vatNumber>VATNUMMER</tns1:vatNumber>
    </tns1:checkVat>
  </s11:Body>
</s11:Envelope>

In FileMaker ersetzen wir LÄNDERCODE und VATNUMMER durch $[$]Variablen ($xml).

Nun muss der cURL-Teil für die Abfrage definiert werden. Für die cURL-Optionen erstelle ich eine Variable: $curl

"-H \"Content-Type: text/xml; charset=utf-8; SOAPAction:checkVat\" -d @$xml"

-H = cURL-Anweisung für einen HEADER

Content-Typ = wir sagen: die Daten, die wir senden sind vom Typ XML und in utf8 codiert.

SOAPAction = Die Funktion, die der Webservice (SOAP) ausführen soll, in unserem Fall die Funktion “checkVat”

-d = die Daten (XML), das gesendet wird. Das @-Zeichen veranlasst FileMaker dazu, den Inhalt aus der zuvor gesetzten Variablen $xml zu holen.

Diese Abfrage müssen wir aber nicht an die wsdl schicken, sondern an:

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

Um zu prüfen, ob die USt-ID gültig ist, muss die Antwort (Response) der API geprüft werden.

Oben im Punkt 3 sehen wir die Parameter, die zurück gegeben werden. Dort gibt es den Parameter “valid” vom Datentyp boolean (wahr oder falsch).

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body><checkVatResponse xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
     <countryCode>DE</countryCode>
     <vatNumber>12345678</vatNumber>
     <requestDate>2018-03-07+01:00</requestDate>
     <valid>false</valid>
     <name>---</name>
     <address>---</address>
   </checkVatResponse>
</soap:Body></soap:Envelope>

Wenn wir diese Parameter nun prüfen, wissen wir “true” = die USt-ID ist gültig oder “false” die USt-ID ist nicht gültig.

Download

  CheckVAT.fmp12 (196,0 KiB, 1.999 hits)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.