Przejdź do głównej zawartości

NIP

NIP (Numer Identyfikacji Podatkowej) to 10-cyfrowy numer używany przez osoby fizyczne i prawne do identyfikacji podatkowej w Polsce.

use SlashLab\Numerik\Numerik;
// Szybkie sprawdzenie
Numerik::nip()->isValid('5260250274'); // true
// Pełny obiekt z danymi
$result = Numerik::nip()->validate('5260250274');
$result->isValid; // true
// Parsowanie do obiektu z danymi
$nip = Numerik::nip()->parse('5260250274');
// Null zamiast wyjątku
$nip = Numerik::nip()->tryParse('zły-numer'); // null

Myślniki i spacje są akceptowane jako separatory:

Numerik::nip()->isValid('526-025-02-74'); // true
Numerik::nip()->isValid('526 025 02 74'); // true

parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Nip.

MetodaTyp zwracanyOpis
getRaw()stringOryginalny numer, bez zmian.
getNormalized()stringSame cyfry po usunięciu myślników i spacji.
__toString()stringTo samo co getNormalized().
MetodaTyp zwracanyOpis
getFormatted()stringDomyślnie używany format NNN-NNN-NN-NN.
getFormattedAlternative()stringAlternatywna postać NNN-NN-NN-NNN.
getTaxOfficeCode()stringPierwsze 3 cyfry — kod wystawiającego urzędu skarbowego.
$nip = Numerik::nip()->parse('5260250274');
$nip->getRaw(); // '5260250274'
$nip->getNormalized(); // '5260250274'
$nip->getFormatted(); // '526-025-02-74'
$nip->getFormattedAlternative(); // '526-02-50-274'
$nip->getTaxOfficeCode(); // '526'
// Ze sformatowanym numerem wejściowym
$nip = Numerik::nip()->parse('526-025-02-74');
$nip->getRaw(); // '526-025-02-74'
$nip->getNormalized(); // '5260250274'
PowódWartośćWarunek
InvalidLengthinvalid_lengthNumer nie ma dokładnie 10 cyfr po usunięciu separatorów.
InvalidCharactersinvalid_charactersObecne są znaki inne niż cyfry, myślniki i spacje.
InvalidFormatinvalid_formatPierwsze 3 cyfry to 000 — żaden urząd skarbowy nie ma takiego kodu.
InvalidChecksuminvalid_checksumCyfra kontrolna się nie zgadza.
AllSameDigitall_same_digitWszystkie cyfry są identyczne — tylko w trybie ścisłym.

Wagi: 6, 5, 7, 2, 3, 4, 5, 6, 7

  1. Usuń myślniki i spacje. Wymagaj dokładnie 10 cyfr.
  2. Sprawdź, że pierwsze 3 cyfry to nie 000.
  3. Pomnóż każdą z pierwszych 9 cyfr przez jej wagę i zsumuj. Oblicz mod 11. Wynik musi być równy dziesiątej cyfrze. Wynik równy 10 jest niemożliwy do zakodowania jako pojedyncza cyfra — każdy taki numer oznacza błąd InvalidChecksum.

Pełna dokumentacja w sekcji Algorytmy.

If this saved you time → ☕ Buy me a coffee