Przejdź do głównej zawartości

NIP na kasie

Klienci firmowi potrzebują pola NIP na kasie, by otrzymać fakturę VAT. Wtyczka Polski for WooCommerce dodaje pole NIP z walidacją sumy kontrolnej i weryfikacją w bazie GUS REGON. Dane firmy uzupełniają się automatycznie.

Moduł NIP weryfikuje numer na trzech poziomach:

  1. Walidacja formatu - sprawdzenie, czy numer składa się z 10 cyfr
  2. Walidacja sumy kontrolnej - algorytm weryfikacji cyfry kontrolnej NIP
  3. Weryfikacja GUS REGON - sprawdzenie w bazie Głównego Urzędu Statystycznego z automatycznym pobraniem danych firmy

Włącz moduł w Polski > Moduły i rozwiń jego ustawienia.

Moduł ma trzy ustawienia, wszystkie w Polski > Moduły > NIP.

Ustawienie Domyślna wartość Opis
NIP wymagany przy zamówieniu Nie Czyni pole NIP obowiązkowym. Wyłączone, pole jest opcjonalne.
Środowisko API GUS Testowe Testowe używa klucza piaskownicy GUS, Produkcyjne Twojego własnego.
Klucz API GUS (produkcja) puste Do pobrania na stronie stat.gov.pl.

Walidacja sumy kontrolnej działa zawsze i nie jest ustawieniem. Dane firmy są pobierane z GUS po wpisaniu poprawnego NIP-u, o ile skonfigurowany jest działający klucz.

Gdzie pojawia się pole i skąd bierze się nazwa firmy

Dział zatytułowany „Gdzie pojawia się pole i skąd bierze się nazwa firmy”

Włączenie modułu dodaje jedno pole, NIP, i nic poza tym. Nie ma ustawienia, które pokazywałoby je warunkowo: jest obecne w kasie dla każdego klienta, opcjonalne dopóki nie uczynisz go wymaganym.

Nazwa firmy to własne pole rozliczeniowe WooCommerce, nie nasze. Pokażesz je lub ukryjesz w WooCommerce > Ustawienia > Konta i prywatność, a przy kasie blokowej w ustawieniach bloku Kasa, gdzie “Firma” przyjmuje wartość ukryte, opcjonalne lub wymagane. Polski czyta to, co WooCommerce tam zapisuje, i tego nie nadpisuje.

NIP jest walidowany systemem wag. Ostatnia cyfra (kontrolna) musi pasować do wyniku obliczeń z dziewięciu poprzednich cyfr.

Wagi dla kolejnych cyfr NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7

NIP: 1234567890
Suma = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214
Reszta = 214 mod 11
Jeśli reszta == ostatnia cyfra NIP > NIP poprawny

Wtyczka waliduje NIP po stronie klienta (JavaScript) i serwera (PHP). Walidacja serwerowa jest zawsze aktywna - nie da się jej obejść.

Wtyczka akceptuje NIP w różnych formatach:

  • 1234567890 - same cyfry
  • 123-456-78-90 - z myślnikami
  • 123 456 78 90 - ze spacjami
  • PL1234567890 - z prefiksem kraju

Wszystkie formaty są normalizowane do 10 cyfr przed walidacją.

API GUS REGON wymaga klucza dostępowego. Wtyczka obsługuje dwa środowiska:

Środowisko URL Klucz Zastosowanie
Testowe https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svc abcde12345abcde12345 (publiczny klucz testowy) Rozwój i testowanie
Produkcyjne https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svc Własny klucz z GUS Działający sklep
  1. Wejdź na stronę: https://api.stat.gov.pl/Home/BirIndex
  2. Zarejestruj się i zaloguj
  3. Złóż wniosek o dostęp do API REGON
  4. Klucz zostanie przesłany na podany adres e-mail (czas oczekiwania: 1-3 dni robocze)
  1. Przejdź do Polski > Moduły > NIP
  2. Włącz Weryfikacja GUS REGON
  3. Wybierz środowisko: Testowe lub Produkcyjne
  4. Wklej klucz API (dla środowiska produkcyjnego)
  5. Zapisz ustawienia

Tryb testowy korzysta z publicznego klucza GUS. Baza testowa zawiera fikcyjne dane - nie weryfikujesz w niej prawdziwych NIP-ów. Używaj go tylko podczas tworzenia i testowania sklepu.

Po weryfikacji NIP wtyczka automatycznie uzupełnia pola formularza:

Pole WooCommerce Dane z GUS
Firma (company) Nazwa firmy
Adres 1 Ulica i numer
Miasto Miejscowość
Kod pocztowy Kod pocztowy
Województwo Województwo

Klient widzi uzupełnione dane i może je poprawić przed zamówieniem.

  • Pola są uzupełniane tylko jeśli są puste lub zawierają wcześniej pobrane dane z GUS
  • Jeśli klient ręcznie zmienił dane, plugin nie nadpisuje zmian
  • Klient jest informowany komunikatem o pobraniu danych

Numer NIP jest zapisywany jako metadane zamówienia:

  • klucz: _billing_nip
  • widoczny w panelu administracyjnym zamówienia
  • dostępny w szablonach e-maili
  • eksportowalny w raportach

NIP jest automatycznie wyświetlany:

  • w szczegółach zamówienia (panel administracyjny)
  • w e-mailu potwierdzenia zamówienia
  • na stronie “Moje konto > Zamówienia”
$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 {
// Dodatkowa logika walidacji
// np. sprawdzenie na liście zablokowanych NIP-ów
$blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) {
return false;
}
return $is_valid;
}, 10, 2);
  1. Sprawdź, czy klucz API jest poprawny i aktywny
  2. Zweryfikuj, czy serwer może nawiązać połączenie HTTPS z api.stat.gov.pl
  3. API GUS bywa niedostępne - plugin obsługuje timeout i wyświetla odpowiedni komunikat
  4. Upewnij się, że rozszerzenie PHP SOAP jest zainstalowane na serwerze
  1. Sprawdź, czy moduł NIP jest włączony
  2. Zweryfikuj ustawienie wyświetlania warunkowego
  3. Wyczyść cache (wtyczki cache mogą cachować formularz kasy)
  1. Sprawdź konsolę przeglądarki pod kątem błędów AJAX
  2. Zweryfikuj, czy endpoint REST API pluginu jest dostępny
  3. Upewnij się, że NIP jest poprawny i firma istnieje w bazie GUS
Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.