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.
Funkcjonalności
Dział zatytułowany „Funkcjonalności”Moduł NIP weryfikuje numer na trzech poziomach:
- Walidacja formatu - sprawdzenie, czy numer składa się z 10 cyfr
- Walidacja sumy kontrolnej - algorytm weryfikacji cyfry kontrolnej NIP
- Weryfikacja GUS REGON - sprawdzenie w bazie Głównego Urzędu Statystycznego z automatycznym pobraniem danych firmy
Konfiguracja
Dział zatytułowany „Konfiguracja”Przejdź do WooCommerce > Ustawienia > Polski > Kasa i skonfiguruj sekcję “NIP”.
Ustawienia podstawowe
Dział zatytułowany „Ustawienia podstawowe”| Ustawienie | Domyślna wartość | Opis |
|---|---|---|
| Włącz pole NIP | Tak | Dodaje pole NIP na stronie kasy |
| Pole wymagane | Nie | Czy NIP jest obowiązkowy |
| Pozycja pola | Po polu firmy | Gdzie wyświetlić pole NIP |
| Walidacja sumy kontrolnej | Tak | Sprawdza poprawność numeru NIP |
| Weryfikacja GUS REGON | Nie | Weryfikuje NIP w bazie GUS |
| Automatyczne uzupełnianie | Tak | Pobiera dane firmy z GUS |
Wyświetlanie warunkowe
Dział zatytułowany „Wyświetlanie warunkowe”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.
Walidacja sumy kontrolnej
Dział zatytułowany „Walidacja sumy kontrolnej”NIP jest walidowany systemem wag. Ostatnia cyfra (kontrolna) musi pasować do wyniku obliczeń z dziewięciu poprzednich cyfr.
Algorytm
Dział zatytułowany „Algorytm”Wagi dla kolejnych cyfr NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7
NIP: 1234567890Suma = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214Reszta = 214 mod 11Jeśli reszta == ostatnia cyfra NIP → NIP poprawnyWtyczka waliduje NIP po stronie klienta (JavaScript) i serwera (PHP). Walidacja serwerowa jest zawsze aktywna - nie da się jej obejść.
Obsługa formatów wejściowych
Dział zatytułowany „Obsługa formatów wejściowych”Wtyczka akceptuje NIP w różnych formatach:
1234567890- same cyfry123-456-78-90- z myślnikami123 456 78 90- ze spacjamiPL1234567890- z prefiksem kraju
Wszystkie formaty są normalizowane do 10 cyfr przed walidacją.
Weryfikacja GUS REGON
Dział zatytułowany „Weryfikacja GUS REGON”Konfiguracja API
Dział zatytułowany „Konfiguracja API”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 |
Uzyskanie klucza produkcyjnego
Dział zatytułowany „Uzyskanie klucza produkcyjnego”- Wejdź na stronę: https://api.stat.gov.pl/Home/BirIndex
- Zarejestruj się i zaloguj
- Złóż wniosek o dostęp do API REGON
- Klucz zostanie przesłany na podany adres e-mail (czas oczekiwania: 1-3 dni robocze)
Konfiguracja w pluginie
Dział zatytułowany „Konfiguracja w pluginie”- Przejdź do WooCommerce > Ustawienia > Polski > Kasa > NIP
- Włącz Weryfikacja GUS REGON
- Wybierz środowisko: Testowe lub Produkcyjne
- Wklej klucz API (dla środowiska produkcyjnego)
- Zapisz ustawienia
Tryb testowy
Dział zatytułowany „Tryb testowy”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.
Automatyczne pobieranie danych firmy
Dział zatytułowany „Automatyczne pobieranie danych firmy”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.
Zachowanie przy automatycznym uzupełnianiu
Dział zatytułowany „Zachowanie przy automatycznym uzupełnianiu”- 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
Przechowywanie NIP
Dział zatytułowany „Przechowywanie NIP”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
Wyświetlanie NIP w zamówieniu
Dział zatytułowany „Wyświetlanie NIP w zamówieniu”NIP jest automatycznie wyświetlany:
- w szczegółach zamówienia (panel administracyjny)
- w e-mailu potwierdzenia zamówienia
- na stronie “Moje konto > Zamówienia”
Programistyczny dostęp
Dział zatytułowany „Programistyczny dostęp”Pobieranie NIP z zamówienia
Dział zatytułowany „Pobieranie NIP z zamówienia”$order = wc_get_order($order_id);$nip = $order->get_meta('_billing_nip');Walidacja NIP w PHP
Dział zatytułowany „Walidacja NIP w PHP”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];}Hook walidacji
Dział zatytułowany „Hook walidacji”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);Najczęstsze problemy
Dział zatytułowany „Najczęstsze problemy”Weryfikacja GUS zwraca błąd
Dział zatytułowany „Weryfikacja GUS zwraca błąd”- Sprawdź, czy klucz API jest poprawny i aktywny
- Zweryfikuj, czy serwer może nawiązać połączenie HTTPS z api.stat.gov.pl
- API GUS bywa niedostępne - plugin obsługuje timeout i wyświetla odpowiedni komunikat
- Upewnij się, że rozszerzenie PHP SOAP jest zainstalowane na serwerze
Pole NIP nie wyświetla się
Dział zatytułowany „Pole NIP nie wyświetla się”- Sprawdź, czy moduł NIP jest włączony
- Zweryfikuj ustawienie wyświetlania warunkowego
- Wyczyść cache (wtyczki cache mogą cachować formularz kasy)
Dane firmy nie uzupełniają się automatycznie
Dział zatytułowany „Dane firmy nie uzupełniają się automatycznie”- Sprawdź konsolę przeglądarki pod kątem błędów AJAX
- Zweryfikuj, czy endpoint REST API pluginu jest dostępny
- Upewnij się, że NIP jest poprawny i firma istnieje w bazie GUS