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”Włącz moduł w Polski > Moduły i rozwiń jego ustawienia.
Ustawienia podstawowe
Dział zatytułowany „Ustawienia podstawowe”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.
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 Polski > Moduły > 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