Pole NIP dodasz w WooCommerce wtyczką albo kilkoma linijkami kodu. Najpierw sprawdź, czy Twój sklep używa zamówienia klasycznego, czy blokowego, bo od tego zależy, które rozwiązanie w ogóle się wyświetli. Od WooCommerce 8.3 (listopad 2023) nowe sklepy dostają zamówienie blokowe, a sklepy założone wcześniej po aktualizacji zostają przy klasycznym.
Aktualizacja 19 października 2026: przepisałem wpis pod oba rodzaje zamówienia, dodałem kod oparty na oficjalnym API WooCommerce, ostrzeżenie o zamkniętej wtyczce i sposób sprawdzenia, czy NIP trafia na fakturę.

Najpierw sprawdź, jakie masz zamówienie: klasyczne czy blokowe
Wejdź w Strony i otwórz stronę zamówienia (zwykle „Zamówienie” albo „Checkout”). Jeśli w edytorze widzisz blok „Zamówienie” z sekcjami formularza, masz zamówienie blokowe. Jeśli widzisz tylko shortcode [woocommerce_checkout], masz klasyczne.
To rozróżnienie jest ważne, bo większość starszych poradników i części wtyczek działa tylko z zamówieniem klasycznym. Pole dodane filtrem woocommerce_billing_fields nie pojawi się w zamówieniu blokowym i to najczęstszy powód, dla którego „pole NIP się nie wyświetla”.
Sposób 1: wtyczka, bez pisania kodu
Najprościej dodać pole wtyczką do edycji pól zamówienia. Popularna jest Flexible Checkout Fields od WP Desk: darmowa wersja wystarczy do dodania pola NIP, a płatna dodaje między innymi warunkowe wyświetlanie pól. Link do WP Desk jest linkiem partnerskim.
Uwaga na rodzaj zamówienia: Flexible Checkout Fields obsługuje zamówienie klasyczne. Do zamówienia blokowego WP Desk ma osobną wtyczkę, Flexible Checkout Fields For Blocks. Przed instalacją sprawdź w opisie każdej wtyczki, z którym zamówieniem działa.

Dwie rzeczy, o które pytają mnie najczęściej:
- Jedno pole NIP, nie dwa. Wtyczki do faktur często dodają własne pole NIP. Jeśli doinstalujesz drugą wtyczkę z tym samym polem, klient zobaczy NIP dwa razy, a na fakturę trafi tylko jedno z nich.
- Zamknięta wtyczka. Wtyczka „NIP Field for WooCommerce” została zamknięta w katalogu WordPress.org 4 sierpnia 2026 z powodu naruszenia wytycznych i nie dostaje już aktualizacji. Jeśli jej używasz, zaplanuj zamianę na inne rozwiązanie.
Sposób 2: kod dla zamówienia blokowego
Dla zamówienia blokowego WooCommerce ma oficjalne API dodatkowych pól. Pole rejestrujesz funkcją woocommerce_register_additional_checkout_field() na akcji woocommerce_init. Lokalizacja address dodaje pole do formularza adresu, a contact do danych kontaktowych zapisywanych na koncie klienta. Poniżej NIP jako pole nieobowiązkowe, bo osoby prywatne go nie mają, z czyszczeniem i prostą walidacją 10 cyfr.
add_action( 'woocommerce_init', function () {
if ( ! function_exists( 'woocommerce_register_additional_checkout_field' ) ) {
return; // starsza wersja WooCommerce bez API pól zamówienia
}
woocommerce_register_additional_checkout_field(
array(
'id' => 'moj-sklep/nip',
'label' => 'NIP (do faktury na firmę)',
'location' => 'address',
'type' => 'text',
'required' => false,
'sanitize_callback' => function ( $value ) {
return preg_replace( '/[^0-9]/', '', (string) $value );
},
'validate_callback' => function ( $value ) {
if ( '' !== $value && ! preg_match( '/^[0-9]{10}$/', $value ) ) {
return new WP_Error( 'nip_niepoprawny', 'NIP powinien mieć 10 cyfr.' );
}
},
)
);
} );
Kod wklej do własnej wtyczki albo do pliku functions.php motywu potomnego i najpierw sprawdź go na kopii sklepu. Zapisaną wartość odczytasz w kodzie przez klasę CheckoutFields (metoda get_field_from_object()), zgodnie z dokumentacją WooCommerce.
Sposób 3: kod dla zamówienia klasycznego
W zamówieniu klasycznym wystarczy filtr pól rozliczeniowych. WooCommerce zapisze wartość w zamówieniu jako _billing_nip, czyli tak samo jak pozostałe pola adresu do faktury.
add_filter( 'woocommerce_billing_fields', function ( $fields ) {
$fields['billing_nip'] = array(
'label' => 'NIP (do faktury na firmę)',
'required' => false,
'class' => array( 'form-row-wide' ),
'priority' => 35, // zaraz po nazwie firmy
);
return $fields;
} );
Przy włączonym HPOS nie czytaj tej wartości bezpośrednio z tabeli wpisów. Użyj $order->get_meta( '_billing_nip' ), wtedy kod działa niezależnie od sposobu przechowywania zamówień.
NIP na fakturze: połącz pole z systemem księgowym
Samo pole niczego nie załatwia, jeśli NIP nie trafia na fakturę. Integracja z programem księgowym musi czytać ten sam klucz pola, który dodałeś. Najprościej użyć pola, które dodaje sama wtyczka do faktur, i nie dokładać własnego.
Jak to wygląda w popularnych programach:
Porównanie wtyczek do faktur znajdziesz we wpisie o wystawianiu faktur w WooCommerce.
Dane firmy z GUS po wpisaniu NIP
W sklepach B2B często wdrażam pobieranie danych firmy z rejestru GUS: klient wpisuje NIP, a nazwa firmy i adres uzupełniają się same. Mniej literówek w danych do faktury i krótszy formularz. W katalogu WordPress.org są do tego gotowe wtyczki, na przykład Nip Finder (pobiera dane z GUS, wymaga klucza do API GUS) i Polonizer for WooCommerce (sprawdzanie w Białej liście i GUS w wersji PRO). Przed wyborem sprawdź, czy wtyczka działa z Twoim rodzajem zamówienia i kiedy była ostatnio aktualizowana.
Jak sprawdzam pole NIP po wdrożeniu
Nie kończę na tym, że pole widać w formularzu. Przechodzę całą ścieżkę tak, jak zrobi to klient:
- składam zamówienie testowe z NIP-em, od koszyka do opłacenia, i sprawdzam, czy płatność zaktualizowała status zamówienia;
- sprawdzam, czy automat do faktur wystawił właściwy dokument i czy NIP jest na fakturze, a nie tylko w zamówieniu;
- sprawdzam, czy maile do klienta i do sklepu faktycznie wyszły, zaglądając do logów wtyczki SMTP. Brak maila to najczęstszy niewidoczny błąd.
Ten sam test powtarzam bez NIP-u, jako osoba prywatna. Pole nieobowiązkowe nie może blokować zakupu klientom, którzy faktury na firmę nie potrzebują.

Najczęstsze problemy z polem NIP
- Pola nie widać w formularzu. Najczęściej wtyczka albo kod działa tylko z zamówieniem klasycznym, a sklep ma blokowe (albo odwrotnie).
- NIP pojawia się dwa razy. Pole dodają dwie wtyczki, zwykle wtyczka do faktur i edytor pól zamówienia. Zostaw jedno.
- NIP jest w zamówieniu, ale nie na fakturze. Integracja z programem księgowym czyta inny klucz pola. Użyj pola z wtyczki do faktur albo ustaw w niej, skąd ma brać NIP.
- Klienci wpisują NIP z myślnikami albo prefiksem PL. Czyść wartość przy zapisie (jak w przykładzie dla zamówienia blokowego), zanim trafi do faktury.
Najczęściej zadawane pytania
Czy pole NIP w WooCommerce powinno być obowiązkowe?
Zwykle nie. Jeśli sprzedajesz także osobom prywatnym, obowiązkowe pole NIP zablokuje im zakup. Obowiązkowe ma sens tylko w sklepie wyłącznie dla firm.
Dlaczego pole NIP dodane w functions.php nie wyświetla się w zamówieniu?
Najpewniej masz zamówienie blokowe, a kod korzysta z filtra dla zamówienia klasycznego. Dla zamówienia blokowego użyj funkcji woocommerce_register_additional_checkout_field().
Gdzie WooCommerce zapisuje NIP z formularza zamówienia?
W zamówieniu klasycznym pole dodane jako billing_nip trafia do danych zamówienia pod kluczem _billing_nip. W zamówieniu blokowym wartość odczytujesz przez klasę CheckoutFields. Wtyczki mogą używać własnych kluczy, więc sprawdź to w ich dokumentacji.
Czy mogę pobierać dane firmy z GUS po wpisaniu NIP?
Tak, służą do tego gotowe wtyczki, na przykład Nip Finder albo Polonizer for WooCommerce w wersji PRO. Sprawdź ich zgodność z Twoim rodzajem zamówienia.
Budujesz sklep dla klientów firmowych i chcesz, żeby faktury wystawiały się same? Zobacz, jak pracuję przy sklepach internetowych na WooCommerce.


