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

Przejdź do WooCommerce > Ustawienia > Polski > Kasa i skonfiguruj sekcję “NIP”.

UstawienieDomyślna wartośćOpis
Włącz pole NIPTakDodaje pole NIP na stronie kasy
Pole wymaganeNieCzy NIP jest obowiązkowy
Pozycja polaPo polu firmyGdzie wyświetlić pole NIP
Walidacja sumy kontrolnejTakSprawdza poprawność numeru NIP
Weryfikacja GUS REGONNieWeryfikuje NIP w bazie GUS
Automatyczne uzupełnianieTakPobiera dane firmy z GUS

Pole NIP może być wyświetlane:

  • Zawsze - widoczne dla wszystkich klientów
  • Po zaznaczeniu checkboxa “Chcę fakturę” - pojawia się po zaznaczeniu
  • Po wpisaniu nazwy firmy - pojawia się, gdy pole “Firma” jest wypełnione

Zalecana opcja to wyświetlanie po zaznaczeniu checkboxa “Chcę fakturę” - jest to najczytelniejsze dla klienta.

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:

ŚrodowiskoURLKluczZastosowanie
Testowehttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svcabcde12345abcde12345 (publiczny klucz testowy)Rozwój i testowanie
Produkcyjnehttps://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svcWłasny klucz z GUSDział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 WooCommerce > Ustawienia > Polski > Kasa > 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 WooCommerceDane z GUS
Firma (company)Nazwa firmy
Adres 1Ulica i numer
MiastoMiejscowość
Kod pocztowyKod pocztowy
WojewództwoWojewó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.