UID-Nummer prüfen in WooCommerce
Wer in der Schweiz an Firmen verkauft, fragt im Checkout oder im Offertformular nach der Unternehmens-Identifikationsnummer, kurz UID. Ob die eingetippte Nummer stimmt und ob es die Firma noch gibt, lässt sich in drei Schritten prüfen: Format, Prüfziffer und Eintrag im UID-Register des Bundes. Diese Anleitung zeigt alle drei, von Hand und im WooCommerce-Shop.
Was eine Schweizer UID ist
Die UID ist die einheitliche Nummer, unter der ein Unternehmen bei Schweizer Behörden geführt wird. Sie wird vom Bundesamt für Statistik (BFS) vergeben und steht im UID-Register. Meldet eine Behörde ein neues Unternehmen, erhält es dort seine UID. Das Register kennt auch Unternehmen, die nicht im Handelsregister stehen, etwa viele Einzelunternehmen und Vereine.
Die Nummer besteht aus dem Präfix «CHE» und neun Ziffern, geschrieben als CHE-123.456.789. Die letzte Ziffer ist eine Prüfziffer. Ist ein Unternehmen mehrwertsteuerpflichtig, steht auf Rechnungen dieselbe Nummer mit dem Zusatz «MWST», auf Französisch «TVA», auf Italienisch «IVA».
Schritt 1: Format prüfen
Kunden tippen die UID auf viele Arten ein. Eine Prüfung sollte alle annehmen, die dieselbe Nummer meinen, und sie danach einheitlich speichern:
- mit Punkten und Bindestrich: CHE-353.272.857
- ohne Trenner: CHE353272857
- mit Leerzeichen: CHE 353 272 857
- mit Zusatz der Mehrwertsteuer: CHE-353.272.857 MWST
Erlaubt sind also das Präfix CHE, danach genau neun Ziffern, dazwischen höchstens Punkte, Bindestriche oder Leerzeichen, am Ende optional MWST, TVA oder IVA. Gespeichert wird immer in der Form CHE-353.272.857, damit dieselbe Firma nicht zweimal unter verschiedenen Schreibweisen im System landet.
Schritt 2: Prüfziffer rechnen
Die neunte Ziffer ergibt sich aus den ersten acht, nach dem Verfahren Modulo 11. So erkennt die Prüfung die meisten Tippfehler, ohne das Register zu fragen:
- Die ersten acht Ziffern mit den Gewichten 5, 4, 3, 2, 7, 6, 5, 4 multiplizieren und addieren.
- Die Summe durch 11 teilen und den Rest nehmen.
- Die Prüfziffer ist 11 minus diesen Rest. Ergibt das 11, ist die Prüfziffer 0. Ergibt es 10, ist die Nummer keine gültige UID.
Ein Beispiel mit den Ziffern 1 2 3 4 5 6 7 8: 1·5 + 2·4 + 3·3 + 4·2 + 5·7 + 6·6 + 7·5 + 8·4 ergibt 168. 168 geteilt durch 11 lässt den Rest 3, die Prüfziffer ist also 11 − 3 = 8. Die Nummer CHE-123.456.788 hat damit ein gültiges Format. Die oft als Muster verwendete CHE-123.456.789 dagegen nicht.
Eine korrekte Prüfziffer heisst noch nicht, dass es die Firma gibt. Das sagt erst das Register.
Schritt 3: Im UID-Register nachschlagen
Von Hand geht das auf uid.admin.ch: UID oder Firmenname eingeben, das Register zeigt Name, Rechtsform, Adresse, Status und den Eintrag im Mehrwertsteuerregister.
Für einen Shop gibt es den UID-Webservice des BFS. Seine «PublicServices» sind ohne Login
öffentlich nutzbar, in eingeschränkter Form, und kosten nichts. Der Webservice spricht SOAP,
die Daten folgen dem Standard eCH-0108. Die Abfrage einer einzelnen Nummer heisst GetByUID:
POST https://www.uid-wse.admin.ch/V5.0/PublicServices.svc
SOAPAction: "http://www.uid.admin.ch/xmlns/uid-wse/IPublicServices/GetByUID"
<uid:GetByUID>
<uid:uid>
<ech:uidOrganisationIdCategorie>CHE</ech:uidOrganisationIdCategorie>
<ech:uidOrganisationId>353272857</ech:uidOrganisationId>
</uid:uid>
</uid:GetByUID>
In der Antwort stehen Name, Rechtsform, Adresse und der Status. Als aktiv gelten die Statuswerte 3 (definitiv) und 4 (in Mutation); 5 und 6 bedeuten gelöscht, 7 annulliert. Fehlt die Organisation in der Antwort, ist die Nummer nicht im Register eingetragen.
UID-Register oder Zefix?
Zefix ist der zentrale Firmenindex des Handelsregisters. Dort stehen nur Firmen mit Handelsregistereintrag, dafür mit Zweck, Kapital und den Publikationen im Handelsamtsblatt. Für die Frage «Gibt es diese UID, und ist die Firma aktiv?» ist das UID-Register die bessere Quelle: Es kennt mehr Unternehmen und lässt sich ohne Zugangsdaten abfragen. Die Zefix-Schnittstelle braucht ein Konto. Wie sie funktioniert, steht im Ratgeber zur Zefix API.
Was im Shop schiefgeht
Ohne Prüfung landen im Shop Nummern, mit denen später niemand etwas anfangen kann:
- Tippfehler und vertauschte Ziffern, die erst bei der Rechnung oder beim Mahnlauf auffallen
- dieselbe Firma mehrfach, weil die UID einmal mit Punkten und einmal ohne gespeichert ist
- Bestellungen auf Rechnung von Firmen, die im Register längst gelöscht sind
- Plugins für die EU-Umsatzsteuer-ID, die über das EU-System VIES prüfen: VIES kennt keine Schweizer UID, die Prüfung läuft ins Leere
- ein Ausfall des Registers, der den ganzen Checkout blockiert, obwohl die Nummer stimmt
Eine gute Prüfung prüft deshalb Format und Prüfziffer sofort im Shop, fragt erst danach das Register, speichert die Antwort eine Weile zwischen und lässt eine Nummer mit korrekter Prüfziffer durch, wenn das Register gerade nicht antwortet.
Anleitung: UID-Prüfung im WooCommerce-Checkout einrichten
Genau das macht mein Gratis-Plugin «Strainovic UID Check Schweiz» aus dem WordPress-Plugin-Verzeichnis:
- Im WordPress-Backend unter «Plugins → Installieren» nach «Strainovic UID Check Schweiz» suchen und installieren.
- Aktivieren. Das Feld «UID» erscheint im WooCommerce-Checkout von selbst, im Checkout-Block im Kontaktbereich, im klassischen Checkout nach dem Firmennamen. Es ist freiwillig und wird geprüft, sobald es ausgefüllt ist.
- Für Contact Form 7 ein Textfeld mit dem Namen
uidins Formular setzen, etwa[text uid], oder[text* uid]als Pflichtfeld. - Testen: Mit CHE-123.456.789 meldet das Formular eine ungültige Nummer, mit einer gelöschten Firma eine Absage, mit einer aktiven Firma geht die Bestellung durch.
Das Plugin braucht kein Konto und keinen Schlüssel. An das Register gehen nur die neun Ziffern, vom Server des Shops aus, nie Name oder Adresse des Kunden. Jede Antwort bleibt einen Tag gespeichert, dieselbe Nummer wird also höchstens einmal am Tag abgefragt.
Prüfergebnis in bexio
Wer seine Kunden in bexio führt, braucht das Ergebnis meist dort. Die Version UID-Check für bexio fragt das Register bei jeder Bestellung neu ab, speichert das Ergebnis mit Zeitpunkt an der Bestellung und legt Kontakt und Prüfnotiz in bexio an.