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.
- Funktionsname “checkVat”
- Parameter, die benötigt werden
- 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, 2.206 hits)