Wolna encyklopedia

decyzja o nadaniu NIP

Numer Identyfikacji Podatkowej (NIP) — dziesięciocyfrowy kod, służący do identyfikacji podmiotów płacących podatki w Polsce. Nadawany jest przez urzędy skarbowe.

Spis treści

Znaczenie numeru

Trzy pierwsze cyfry każdego NIP-u oznaczają kod urzędu skarbowego, który nadał dany numer. W kodzie tym występują wyłącznie cyfry od 1 do 9 - teoretycznie cyfra 0 nie powinna być w nim generowana. W wyjątkowych przypadkach kod urzędu skarbowego może zawierać jednak cyfrę 0 na drugiej pozycji, gdyż w roku 2004 dla kilkudziesięciu urzędów skarbowych uczyniono wyjątek od dotychczasowej reguły, i tak np. kod 106 oznacza Małopolski Urząd Skarbowy w Krakowie, więc nadany przez niego NIP 106-00-00-062 jest prawidłowy. Zwyczajowo NIP zapisuje się, oddzielając grupy cyfr łącznikiem. Dla osób fizycznych numer dzielony jest na grupy 123-456-78-90, a dla firm na grupy 123-45-67-890. Firmy będące własnością osoby fizycznej mają zwykle NIP swojego właściciela.

Dziesiąta cyfra NIP-u jest cyfrą kontrolną, obliczaną według specjalnego algorytmu:

1. Pomnożyć każdą z pierwszych dziewięciu cyfr odpowiednio przez wagi: 6, 5, 7, 2, 3, 4, 5, 6, 7.
2. Zsumować wyniki mnożenia.
3. Obliczyć resztę z dzielenia przez 11 (operacja modulo 11).

NIP jest tak generowany, aby nigdy w wyniku tego dzielenia nie wyszła liczba 10.

Przykład

NIP 123-456-32-18

CK SUMA MOD11
NIP 1 2 3 4 5 6 3 2 1
wagi 6 5 7 2 3 4 5 6 7
1. 6 10 21 8 15 24 15 12 7
2. 118
3. 8 8

Implementacja algorytmu w języku Python

def check_NIP(nip):
    weights = (6, 5, 7, 2, 3, 4, 5, 6, 7, -1)
 
    if len(nip) != len(weights):
        return False
 
    try:
        nip = [int(n) for n in nip]
    except:
        return False
 
    checksum = sum(n * w for n, w in zip(nip, weights))
    if checksum % 11 % 10 != 0:
        return False
 
    return True

Implementacja algorytmu w języku PHP

function isNipValid($pNip) {
	$weights = array(6, 5, 7, 2, 3, 4, 5, 6, 7);
	$nip = preg_replace('/[\s-]/', '', $pNip);
 
	if (!(strlen($nip) == 10 && is_numeric($nip))) {
		return false;
	}
 
	for($x=0; $x<=8; $x++) {
		$sum += $nip[$x] * $weights[$x];
	}
 
	if (($sum % 11) == $nip[9]) {
		return true;
	} else {
		return false;
	}
}

Bibliografia

Linki zewnętrzne

Zobacz też

Źródło: „haslo,NIP