Wenn Sie Rechnungen an ausländischen Geschäftspartner stellen, kann es sein, dass dieser keine deutsche Umsatzsteuer bezahlt. Dazu muss er Ihnen seine eigene Umsatzsteuer-Identifiktationsnummer mitteilen, die Sie dann – neben Ihrer eigenen – auf der Rechnung angeben. Das Bundeszentralamt für Steuern bietet einen Internet-Dienst, mit dem Sie die Gültigkeit von Umsatzsteuer-Identifikationsnummern testen können. Dieser Beitrag zeigt, wie Sie diesen Dienst von Access aus aufrufen, um eigene Prüfungen durchzuführen.
Alle Informationen zur Schnittstelle finden Sie unter der Adresse http://evatr.bff-online.de/eVatR/xmlrpc.
Sie müssen keine Daten oder Komponenten für die Abfrage herunterladen, sondern nur die in diesem Beitrag beschriebene Lösung in Ihre eigene Anwendung zu integrieren.
Das Abfragen der Umsatzsteuer-Identifikationsnummer ist kostenlos, Sie benötigen dazu nur eine eigene Umsatzsteuer-Identifikationsnummer sowie die entsprechenden Informationen zum Rechnungsempfänger.
Die Anfrage erfolgt über das HTTP-Protokoll und wird im einfachsten Fall direkt im Browser durchgeführt. Der folgende Aufruf enthält die mindestens anzugebenden Informationen:
http://evatr.bff-online.de/evatrRPCUstId_1=DE111111111&UstId_2=ATU22222222&Firmenname=&Ort=&PLZ=&Strasse=&strStrasse&Druck=
Beachten Sie, dass Sie alle Parameter angeben müssen – auch wenn diese leer sind. Das Ergebnis sieht im Browser eher wild aus (s. Bild 1).
Bild 1: Einfache Anfrage im Browser
Das ist aber kein Problem: Wir wollen es ja nicht selbst auswerten, sondern dies der Access-Lösung dieses Artikels überlassen.
Ein Blick in den Quellcode zeigt, dass die Antwort im XML-Format kommt und somit leicht zu analysieren ist (s. Bild 2). Sie besteht aus einem Hauptelement namens params, das einige param-Elemente enthält. Jedes param-Element enthält ein paar Ebenen tiefer ein Name-Wert-Paar.
Bild 2: Antwort im XML-Format
Beschreibung der Antwort
Die Antwort enthält die folgenden Informationen:
- Datum: Datum der Anfrage (tt.mm.jjjj).
- Uhrzeit: Uhrzeit der Anfrage (hh:mm:ss).
- ErrorCode: Fehlernummer der Anfrage
- UstId_1: Ihre deutsche USt-IdNr.
- UstId_2: Angefragte ausländische USt-IdNr.
- Firmename: Der angefragte Firmenname
- Ort: Der von Ihnen angefragte Ort der Firma
- PLZ: Die angefragte Postleitzahl der Firma
- Strasse: Die von Ihnen angefragte Strasse der Firma
- Gueltig_ab: Beginn der Gültigkeit der ausländischen USt-IdNr (Format: tt.mm.jjjj), wird nur angegeben, wenn der Parameter ErrorCode den Wert 203 oder 204 liefert.
- Gueltig_bis: Ende der Gültigkeit der ausländischen USt-IdNr (Format: tt.mm.jjjj), wird nur angegeben, wenn der Parameter ErrorCode den Wert 204 zurückliefert.
- Druck: Gibt an, ob Sie eine amtliche Bestätigungsmitteilung angefordert haben und kann die Werte ja (Mitteilung angefordert) oder nein (ohne Miteilung) annehmen.
Die Parameter Erg_Name, Erg_Ort, Erg_PLZ und Erg_Str liefern einen der folgenden Werte zurück, der angibt, ob die übergebenen Werte für Firmenname, Ort, PLZ und Straße mit den in der Datenbank gespeicherten Werten übereinstimmen:
- A: stimmt überein
- B: stimmt nicht überein
- C: nicht angefragt
- D: vom EU-Mitgliedsstaat nicht mitgeteilt
Speichern der erhaltenen Daten
Wenn Sie regelmäßig die Umsatzsteuer-Identifikationsnummer prüfen, macht es Sinn, diese in einer Tabelle zu speichern, um unnötige Aufrufe des Internetdienstes zu verhindern. Dazu legen Sie eine Tabelle namens tblRequests an und fügen dieser für jedes Feld des Antwort-XML-Dokuments ein Feld hinzu. Bild 3 zeigt die Entwurfsansicht dieser Tabelle.
Bild 3: Tabelle zum Speichern der ermittelten Informationen zu Umsatzsteuer-Identifikationsnummern
Errorcode
Die im Feld Errorcode gelieferten Zahlenwerte haben konkrete Bedeutungen. Errorcode ist eigentlich auch nicht der richtige Begriff für die in diesem Feld zurückgelieferten Zahlenwerte. Diese geben zwar auch Informationen über eventuell aufgetretene Fehler, jedoch gibt es auch im Erfolgsfall einen Wert im Feld Errorcode. Informationen über den Errorcode finden Sie auf der Webseite des Internetdienstes (s. Bild 4).
Bild 4: Fehlercodes auf der Seite des Anbieters
Nun helfen uns die Beschreibungen der Fehler auf der Internetseite nicht besonders weiter – wir wollen nämlich die nach dem Einlesen im Feld Errorcode der Tabelle tblRequests enthaltenen Zahlenwerte interpretieren können. Also legen wir eine neue Tabelle namens tblResponseIDs mit den beiden Feldern ResponseID und Response an und übertragen die Zahlenwerte und die entsprechenden Beschreibungen in diese Tabelle. Das Resultat sieht dann wie in Bild 5 aus.
Bild 5: Speichern der Fehlerbeschreibungen in einer separaten Tabelle
Formulare zum Einlesen der Prüfungsdaten
Die Grundlage wäre geschaffen, jetzt können Sie sich an den Entwurf der Formulare unserer Lösung heranwagen. Die Daten der zu prüfenden Steuernummer sollen in Textfelder eines Formulars namens frmUstIdNr eingegeben werden, das Ergebnis nach dem Aufruf des Internetdienstes in einem Unterformular namens sfmUstIdNr erscheinen.
Das Unterformular erhält als Datenherkunft die Abfrage qryRequests und sieht wie in Bild 6 aus. Diese Abfrage führt die Daten der beiden Tabellen tblRequests und tblResponseIDs zusammen, damit das Unterformular gleich die den Zahlenwerten des Feldes ErrorCode entsprechenden Texte anzeigen kann.
Bild 6: Entwurfsansicht des Unterformulars zum Anzeigen der Antwort des Internetdienstes
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo