Abrir menu principal

Número de identificação fiscal

(Redirecionado de NIPC)

O número de identificação fiscal (NIF) tem como finalidade identificar em Portugal uma entidade fiscal, contribuinte, por exemplo, em declarações de IRS ou outros impostos ou transações financeiras

É atribuído pela Autoridade Tributária e Aduaneira, organismo do Ministério das Finanças e da Administração Pública, no caso de pessoas singulares e pessoas colectivas não sujeitas a registo no Registo Nacional de Pessoas Colectivas (RNPC).

É atribuído pelo Registo Nacional de Pessoas Colectivas no caso de entidades sujeitas a registo.

Foi instituído pelo Decreto-Lei n.º 463/79, de 30 de Novembro. O Decreto-lei n.º 463/79 foi revogado a partir de 27 de Fevereiro de 2013 pelo Decreto-lei n.º 14/2013, de 28 de Janeiro, que procede à sistematização e harmonização da legislação referente ao Número de Identificação Fiscal.

Este número é ainda utilizado, dentro da União Europeia, para identificar as entidades económicas para efeitos de IVA (VAT identification Number).

DefiniçãoEditar

Artigo 2.º do Decreto-lei n.º 14/2013, de 28 de Janeiro:

"O Número de Identificação Fiscal, abreviadamente designado por NIF, é um número sequencial destinado exclusivamente ao tratamento de informação de índole fiscal e aduaneira, devendo ser gerado de forma automática em conformidade com as disposições constantes do presente diploma."

NIF das EmpresasEditar

O NIF das Empresas é o número fiscal utilizado em Portugal para identificar uma entidade em transacções financeiras e pagamento de impostos (IRC). O termo usado geralmente é NIF (Número de Identificação Fiscal), no entanto o termo correcto é NIPC (Número de Identificação de Pessoa Colectiva).

Constituição e interpretaçãoEditar

É constituído por nove dígitos, sendo os oito primeiros sequenciais e o último um dígito de controlo.

O NIF pode pertencer a uma de várias gamas de números, definidas pelos dígitos iniciais, com as seguintes interpretações[1]:

  • 1 a 3: Pessoa singular, a gama 3 começou a ser atribuída em julho de 2019;[2]
  • 45: Pessoa singular. Os algarismos iniciais "45" correspondem aos cidadãos não residentes que apenas obtenham em território português rendimentos sujeitos a retenção na fonte a título definitivo;[3]
  • 5: Pessoa colectiva obrigada a registo no Registo Nacional de Pessoas Colectivas;[4]
  • 6: Organismo da Administração Pública Central, Regional ou Local;
  • 70, 74 e 75: Herança Indivisa, em que o autor da sucessão não era empresário individual, ou Herança Indivisa em que o cônjuge sobrevivo tem rendimentos comerciais;
  • 71: Não residentes colectivos sujeitos a retenção na fonte a título definitivo;
  • 72: Fundos de investimento;
  • 77: Atribuição Oficiosa de NIF de sujeito passivo (entidades que não requerem NIF junto do RNPC);
  • 78: Atribuição oficiosa a não residentes abrangidos pelo processo VAT REFUND;
  • 79: Regime excepcional - Expo 98;
  • 8: "empresário em nome individual" (actualmente obsoleto, já não é utilizado nem é válido);
  • 90 e 91: Condomínios, Sociedade Irregulares, Heranças Indivisas cujo autor da sucessão era empresário individual;
  • 98: Não residentes sem estabelecimento estável;
  • 99: Sociedades civis sem personalidade jurídica.

O nono e último dígito é o dígito de controlo. É calculado utilizando o algoritmo módulo 11.

Obter dígito de controloEditar

O NIF tem 9 dígitos, sendo o último o digito de controlo. Para ser calculado o digito de controlo:

  1. Multiplique o 8.º dígito por 2, o 7.º dígito por 3, o 6.º dígito por 4, o 5.º dígito por 5, o 4.º dígito por 6, o 3.º dígito por 7, o 2.º dígito por 8 e o 1.º dígito por 9;
  2. Some os resultados;
  3. Calcule o resto da divisão do número por 11;
  4. Se o resto for 0 (zero) ou 1 (um) o dígito de controlo será 0 (zero);
  5. Se for outro qualquer algarismo X, o dígito de controlo será o resultado da subtracção 11 - X.

Exemplo de cálculo do dígito de controlo em PythonEditar

import doctest

def check_digit(string_num):
    """ Calcula o digito de controle de um NIF 
        Ex. 99999999[0]
      >>> check_digit('99999999')
      '0'
      >>> check_digit('74089837')
      '9'
      >>> check_digit('28702400')
      '8'
    """
    if not string_num.isdigit():
        raise ValueError
    soma = sum([int(digito) * (9 - pos) for pos, digito in enumerate(string_num)])
    resto = soma % 11
    if resto == 0:
        return '0'
    if resto == 1:
        return '0'
    return str(11 - resto)

if __name__ == '__main__':
    doctest.testmod()

Exemplo de validação do NIF em PythonEditar

import doctest

def valida_nif(numero):
    """ Validação do número de identificação fiscal
    
    >>> valida_nif('999999990') 
    True
    >>> valida_nif('999999999') 
    False
    >>> valida_nif('501442600') # IEFP
    True
    """
    EXPECTED_DIGITS = 9
    if not numero.isdigit() or len(numero) != EXPECTED_DIGITS:
        return False
    soma = sum([int(dig) * (EXPECTED_DIGITS - pos) for pos, dig in enumerate(numero)])
    resto = soma % 11
    if (numero[-1] == '0' and resto == 1):
        resto = (soma + 10) % 11
    if resto == 0:
        return True
    else:
        return False

if __name__ == '__main__':
    doctest.testmod()

Exemplo de validação do NIF em JavaScriptEditar

  function validateNIF(value) {
    const nif = typeof value === 'string' ? value : value.toString();
    const validationSets = {
      one: ['1', '2', '3', '5', '6', '8'],
      two: ['45', '70', '71', '72', '74', '75', '77', '79', '90', '91', '98', '99']
    };

    if (nif.length !== 9) {
     return false;
    }

    if (!validationSets.one.includes(nif.substr(0, 1)) && !validationSets.two.includes(nif.substr(0, 2))) {
      return false;
    }

    const total = nif[0] * 9 + nif[1] * 8 + nif[2] * 7 + nif[3] * 6 + nif[4] * 5 + nif[5] * 4 + nif[6] * 3 + nif[7] * 2;
    const modulo11 = (Number(total) % 11);

    const checkDigit = modulo11 < 2 ? 0 : 11 - modulo11;

    return checkDigit === Number(nif[8]);
  }

Exemplo de validação do NIF em PHPEditar

public static function validateNIF($nif)
{
    $nif = trim($nif);
    $nif_split = str_split($nif);
    $nif_primeiros_digito = array(1, 2, 3, 5, 6, 7, 8, 9);
    if (is_numeric($nif) && strlen($nif) == 9 && in_array($nif_split[0], $nif_primeiros_digito)) {
        $check_digit = 0;
        for ($i = 0; $i < 8; $i++) {
            $check_digit += $nif_split[$i] * (10 - $i - 1);
        }
        $check_digit = 11 - ($check_digit % 11);
        $check_digit = $check_digit >= 10 ? 0 : $check_digit;
        if ($check_digit == $nif_split[8]) {
            return true;
        }
    }
    return false;

}

Exemplo de validação do NIF em REditar

validateNIF <- function(nif) {
  if (!grepl("\\D", nif)) {
    mod11 <- strtoi(strsplit(nif,"")[[1]]) %*% c(9:2,0) %% 11
    checkDigit <- ifelse(mod11 == 0, 0, ifelse(mod11 == 1, 9, 11 - mod11))
    (substr(nif, 9, 9) == checkDigit)[1][1]
  }
  else FALSE
}

Exemplo de validação em Rust[5]Editar

fn validate_nif(pnif: &str) -> bool {
    let mut nif = pnif.trim();
    if nif.chars().count() == 11 {
        if &nif[..2] == "PT" {
            nif = &nif[2..];
        } else {
            return false;
        }
    }
    if nif.chars().count() == 9 && nif.parse::<i64>().is_ok() {
        let mut total = 0 as i32;
        for n in 2..10 {
            let ss:String = nif.chars().skip(9-n).take(1).collect();
            total += ss.as_str().parse::<i32>().unwrap() * n as i32;
        }
        let modulo11 = total % 11;
        let check_digit = if modulo11 < 2 { 0 } else { 11 - modulo11};
        
        let s_check_digit:String = nif.chars().skip(8).take(1).collect();
        let p_check_digit = s_check_digit.as_str().parse::<i32>().unwrap();
        
        return check_digit == p_check_digit;
    }
    return false;
}

Em outros paísesEditar

Em Itália, o número de contribuinte é calculado com base no nome, ano de nascimento e outros detalhes particulares, de forma que pode ser determinado pelo próprio contribuinte, sem ser necessário esperar a emissão do documento oficial.

No Brasil, existe o equivalente cadastro de pessoas físicas (CPF), organizado pela Receita Federal.

Referências

  1. Instruções administrativas disponíveis no Portal das Finanças Arquivado em 17 de agosto de 2016, no Wayback Machine..
  2. «Atribuição de Nova Gama de NIF a Pessoas Singulares.». info.portaldasfinancas.gov.pt. Consultado em 7 de agosto de 2019 
  3. PORTUGAL Decreto-lei n.º 14/2013, de 28 de janeiro, artigo 4.º.
  4. PORTUGAL Decreto-lei 14/2013, de 28 de janeiro, n.º 1 do artigo 11.º.
  5. No GitHub: https://github.com/halufa/nif-validator-pt
  Este artigo sobre economia é um esboço. Você pode ajudar a Wikipédia expandindo-o.