Die Prüfung einer innergemeinschaftlichen USt-IdNr. beim europäischen VIES-Dienst ist auf dem Papier einfach: ein Aufruf, eine gültige oder ungültige Antwort. Im Livebetrieb trifft sie auf einen Dienst, dessen Verfügbarkeit je nach Mitgliedstaat variiert, auf heterogene Nummernformate und auf einen Kunden, der auf eine Antwort wartet, während die Seite lädt.
Dieser Artikel behandelt die Implementierung. Die steuerlichen Voraussetzungen der Befreiung sind ein anderes Thema, und die Prüfung ist nur eine von vieren.
Wo das Feld platzieren
Zwei mögliche Stellen, mit unterschiedlichen Folgen.
Bei der Registrierung, im Formular zur Erstellung eines Geschäftskontos. Die Prüfung erfolgt einmal, das Ergebnis wird am Kunden gespeichert, und der Checkout bleibt flüssig. Das ist der empfohlene Ansatz, sobald Sie Geschäftskonten validieren.
Im Checkout, im Formular der Rechnungsadresse. Flexibler für Kunden, die ohne Konto bestellen, aber die Prüfung kommt zum denkbar schlechtesten Zeitpunkt: eine Verzögerung oder ein Fehler an dieser Stelle kostet eine Bestellung.
In beiden Fällen gehört das Feld zur Rechnungsadresse, niemals zur Lieferadresse. Die Nummer gehört der kaufenden Einheit, nicht dem Ort, an dem das Paket ankommt.
Die Formate, erste Fehlerquelle
Eine innergemeinschaftliche USt-IdNr. beginnt mit einem zweibuchstabigen Ländercode, gefolgt von einer Zeichenkette, deren Länge und Zusammensetzung von Staat zu Staat variiert. Frankreich verwendet zwei Prüfzeichen und dann neun Ziffern, Deutschland neun Ziffern, Spanien eine Kombination aus Buchstaben und Ziffern, Irland lässt mehrere historische Formate zu.
Drei Schritte vor jedem Aufruf.
- Die Eingabe normalisieren. Leerzeichen, Punkte und Bindestriche entfernen und in Großbuchstaben umwandeln. Jeder dritte Kunde gibt seine Nummer mit Trennzeichen ein.
- Den Ländercode vom Rest trennen. Der Dienst erwartet beides getrennt, und der Kunde tippt oft alles in einem Block.
- Die Form vor dem Aufruf validieren. Eine Formatprüfung pro Land vermeidet Anfragen an den Dienst bei offensichtlich fehlerhafter Eingabe und erlaubt eine sofortige Meldung.
Vorsicht beim Fall Griechenland, dessen USt-Ländercode von seinem ISO-Ländercode abweicht, und beim Fall Nordirland, das seit dem Austritt des Vereinigten Königreichs über ein eigenes Präfix verfügt.
Innergemeinschaftliche USt. VIES-Prüfung & B2B Reverse-ChargeInnergemeinschaftliche USt. geprüft, Reverse-Charge automatisiert, Prüfnachweise zeitgestempelt.79,00€
Der Aufruf des Dienstes
Der europäische Dienst fragt für jede Anfrage die nationale Datenbank des betroffenen Staates ab. Zwei direkte Folgen.
Die Latenz variiert stark je nach abgefragtem Land. Eine deutsche Prüfung antwortet in der Regel schnell, andere Verwaltungen sind deutlich langsamer.
Die Verfügbarkeit ist von Staat zu Staat unabhängig. Der Dienst kann für Belgien funktionieren und gleichzeitig für Italien ausgefallen sein. Ein erfolgreicher Test garantiert also nicht, dass alle Prüfungen durchgehen.
Setzen Sie eine maximale Wartezeit, fünf bis zehn Sekunden, ab der Sie den Dienst als nicht verfügbar betrachten. Ein Aufruf ohne Zeitlimit blockiert die Seite.
Das degradierte Verhalten
Das ist der Punkt, der eine brauchbare Implementierung von einer fragilen unterscheidet. Drei Zustände sind zu unterscheiden, nicht zwei.
Gültige Nummer. Sie speichern das Ergebnis, den Zeitstempel, und wenden Ihre Steuerregeln an.
Ungültige Nummer. Klare Meldung an den Kunden, mit der Möglichkeit zur Korrektur. Blockieren Sie die Bestellung nicht: der Kunde kann mit Umsatzsteuer kaufen und später regularisieren.
Dienst nicht verfügbar. Der am schlechtesten behandelte Fall. Die Bestellung muss durchgehen, mit angewandter Umsatzsteuer, und die Prüfung muss für einen erneuten Versuch in eine Warteschlange. Nichtverfügbarkeit wie Ungültigkeit zu behandeln kostet Bestellungen; sie wie Gültigkeit zu behandeln setzt Sie steuerlich einem Risiko aus.
Eine Nachprüfungswarteschlange, die ungeprüfte Nummern einige Stunden später automatisch erneut durchläuft, löst diesen Fall ohne Eingriff.
Die Meldungen an den Kunden
Sie zählen genauso viel wie die Mechanik. Drei Formulierungen vorbereiten.
Bei einer ungültigen Nummer erklären Sie, was die Ablehnung erklären kann: eine neue Nummer, die noch nicht in der europäischen Datenbank registriert ist, ein nicht steuerpflichtiges Unternehmen oder ein Tippfehler. Ein bloßes „Nummer ungültig“ lässt den Kunden ohne Ausweg.
Bei einer Nichtverfügbarkeit sagen Sie die Wahrheit: die Prüfung konnte nicht abgeschlossen werden, die Bestellung kann mit Umsatzsteuer aufgegeben werden, und Sie melden sich. Das ist beruhigender als eine technische Fehlermeldung.
Bei einem Erfolg bestätigen Sie visuell, mit dem vom Dienst zurückgegebenen Firmennamen, wenn er verfügbar ist. Diese Bestätigung reduziert Tippfehler bei einer Nummer, die einem anderen Unternehmen gehört.
Den Nachweis aufbewahren
Der europäische Dienst liefert für jede Anfrage eine Konsultationsnummer. Speichern Sie sie, mit Datum, Uhrzeit, geprüfter Nummer und vollständiger Antwort.
Es ist diese Spur, mit der Sie zwei Jahre später nachweisen können, dass die Nummer zum Zeitpunkt des Verkaufs gültig war. Ohne sie können Sie eine Befreiung nicht rechtfertigen, selbst wenn die Prüfung tatsächlich stattgefunden hat.
Hängen Sie diesen Nachweis an die Bestellung, nicht nur an den Kunden: ein Kunde kann die Nummer wechseln, und es zählt der Zustand zum Zeitpunkt der Transaktion.
Cache und Nachprüfung
Zwei sich ergänzende Einstellungen.
Rufen Sie den Dienst nicht auf jeder Seite erneut auf. Eine erfolgreiche Prüfung kann gefahrlos einige Tage aufbewahrt werden, was Anfragen bei jedem Neuladen des Warenkorbs vermeidet.
Prüfen Sie wiederkehrende Kunden regelmäßig nach. Eine im Laufe des Jahres entzogene Nummer bleibt in Ihrer Datenbank gültig, wenn niemand nachprüft. Eine monatliche Nachprüfung der aktiven Konten genügt.
Das Modul VIES-Validierung der innergemeinschaftlichen USt-IdNr. übernimmt diese Kette auf PrestaShop 8 und 9: Normalisierung und Formatprüfung pro Land, Dienstaufruf mit maximaler Wartezeit, degradiertes Verhalten mit Nachprüfungswarteschlange, Speicherung der Konsultationsnummer und regelmäßige Nachprüfung der Konten.