Skip to content

NIP at checkout

Geschäftskunden benötigen an der Kasse ein NIP-Feld, um eine Umsatzsteuerrechnung zu erhalten. Polski for WooCommerce fügt ein NIP-Feld mit Prüfsummenvalidierung und GUS-REGON-Verifizierung hinzu. Die Firmendaten werden automatisch ausgefüllt.

Das NIP-Modul verifiziert die Nummer auf drei Ebenen:

  1. Formatvalidierung - Prüfung, ob die Nummer aus 10 Ziffern besteht
  2. Prüfsummenvalidierung - Algorithmus zur Verifizierung der NIP-Prüfziffer
  3. GUS-REGON-Verifizierung - Prüfung in der Datenbank des Statistischen Hauptamtes mit automatischem Abruf der Firmendaten

Gehen Sie zu WooCommerce > Einstellungen > Polski > Kasse und konfigurieren Sie den Abschnitt “NIP”.

EinstellungStandardwertBeschreibung
NIP-Feld aktivierenJaFügt der Kassenseite ein NIP-Feld hinzu
Feld erforderlichNeinOb NIP obligatorisch ist
FeldpositionNach dem FirmenfeldWo das NIP-Feld angezeigt wird
PrüfsummenvalidierungJaPrüft die Korrektheit der NIP-Nummer
GUS-REGON-VerifizierungNeinVerifiziert NIP in der GUS-Datenbank
Automatisches AusfüllenJaRuft die Firmendaten aus GUS ab

Das NIP-Feld kann angezeigt werden:

  • Immer - für alle Kunden sichtbar
  • Nach dem Anhaken von “Ich möchte eine Rechnung” - erscheint nach dem Anhaken
  • Nach der Eingabe eines Firmennamens - erscheint, wenn das Feld “Firma” ausgefüllt ist

Die empfohlene Option ist die Anzeige nach dem Anhaken von “Ich möchte eine Rechnung” - dies ist für den Kunden am übersichtlichsten.

Der NIP-Validierungsalgorithmus basiert auf einem Gewichtungssystem. Die Prüfziffer (letzte, zehnte Ziffer) wird auf Basis der neun vorangehenden Ziffern berechnet.

Gewichte für die aufeinanderfolgenden NIP-Ziffern: 6, 5, 7, 2, 3, 4, 5, 6, 7

NIP: 1234567890
Sum = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214
Remainder = 214 mod 11
If remainder == last NIP digit -> NIP is valid

Das Plugin validiert sowohl clientseitig (JavaScript) als auch serverseitig (PHP). Die serverseitige Validierung ist immer aktiv.

Das Plugin akzeptiert NIP in verschiedenen Formaten:

  • 1234567890 - nur Ziffern
  • 123-456-78-90 - mit Bindestrichen
  • 123 456 78 90 - mit Leerzeichen
  • PL1234567890 - mit Länderpräfix

Alle Formate werden vor der Validierung auf 10 Ziffern normalisiert.

Die GUS-REGON-API erfordert einen Zugangsschlüssel. Das Plugin unterstützt zwei Umgebungen:

UmgebungURLSchlüsselVerwendung
Testhttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svcabcde12345abcde12345 (öffentlicher Testschlüssel)Entwicklung und Tests
Produktionhttps://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svcIhr eigener Schlüssel von GUSLive-Shop
  1. Gehen Sie zu: https://api.stat.gov.pl/Home/BirIndex
  2. Registrieren Sie sich und melden Sie sich an
  3. Reichen Sie einen Antrag auf Zugang zur REGON-API ein
  4. Der Schlüssel wird an die angegebene E-Mail-Adresse gesendet (Wartezeit: 1-3 Werktage)
  1. Gehen Sie zu WooCommerce > Einstellungen > Polski > Kasse > NIP
  2. Aktivieren Sie GUS-REGON-Verifizierung
  3. Wählen Sie die Umgebung: Test oder Produktion
  4. Fügen Sie den API-Schlüssel ein (für die Produktionsumgebung)
  5. Speichern Sie die Einstellungen

Im Testmodus verwendet das Plugin den öffentlichen GUS-Testschlüssel. Die Testdatenbank enthält fiktive Daten. Verwenden Sie sie nur während der Entwicklung und beim Testen.

Nach der Verifizierung von NIP in GUS REGON füllt das Plugin automatisch die Formularfelder aus:

WooCommerce-FeldGUS-Daten
FirmaFirmenname
Adresse 1Straße und Nummer
StadtStadt
PostleitzahlPostleitzahl
Bundesland/RegionWoiwodschaft

Der Kunde sieht die ausgefüllten Daten und kann sie vor der Bestellung korrigieren.

  • Felder werden nur ausgefüllt, wenn sie leer sind oder zuvor abgerufene GUS-Daten enthalten
  • Wenn der Kunde die Daten manuell geändert hat, überschreibt das Plugin die Änderungen nicht
  • Der Kunde wird mit einer Meldung über den Datenabruf informiert

Die NIP-Nummer wird als Bestellmetadaten gespeichert:

  • Schlüssel: _billing_nip
  • sichtbar in der Bestellansicht im Admin-Bereich
  • verfügbar in E-Mail-Vorlagen
  • exportierbar in Berichten

NIP wird automatisch angezeigt:

  • in den Bestelldetails (Admin-Bereich)
  • in der Bestellbestätigungs-E-Mail
  • auf der Seite “Mein Konto > Bestellungen”
$order = wc_get_order($order_id);
$nip = $order->get_meta('_billing_nip');
function validate_nip(string $nip): bool {
$nip = preg_replace('/[^0-9]/', '', $nip);
if (strlen($nip) !== 10) {
return false;
}
$weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];
$sum = 0;
for ($i = 0; $i < 9; $i++) {
$sum += (int) $nip[$i] * $weights[$i];
}
return ($sum % 11) === (int) $nip[9];
}
add_filter('polski/checkout/validate_nip', function (bool $is_valid, string $nip): bool {
// Additional validation logic
// e.g. checking against a blocked NIP list
$blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) {
return false;
}
return $is_valid;
}, 10, 2);

GUS-Verifizierung gibt einen Fehler zurück

Section titled “GUS-Verifizierung gibt einen Fehler zurück”
  1. Prüfen Sie, ob der API-Schlüssel korrekt und aktiv ist
  2. Verifizieren Sie, ob der Server eine HTTPS-Verbindung zu api.stat.gov.pl herstellen kann
  3. Die GUS-API kann nicht verfügbar sein - das Plugin behandelt Timeouts und zeigt eine entsprechende Meldung an
  4. Stellen Sie sicher, dass die PHP-SOAP-Erweiterung auf dem Server installiert ist
  1. Prüfen Sie, ob das NIP-Modul aktiviert ist
  2. Verifizieren Sie die Einstellung der bedingten Anzeige
  3. Leeren Sie den Cache (Caching-Plugins können das Kassenformular zwischenspeichern)

Firmendaten werden nicht automatisch ausgefüllt

Section titled “Firmendaten werden nicht automatisch ausgefüllt”
  1. Prüfen Sie die Browser-Konsole auf AJAX-Fehler
  2. Verifizieren Sie, ob der REST-API-Endpunkt des Plugins erreichbar ist
  3. Stellen Sie sicher, dass die NIP korrekt ist und die Firma in der GUS-Datenbank existiert
Diese Seite dient ausschließlich zu Informationszwecken und stellt keine Rechtsberatung dar. Konsultieren Sie vor der Umsetzung einen Anwalt. Polski for WooCommerce ist eine Open-Source-Software (GPLv2), die ohne Gewährleistung bereitgestellt wird.