Número de Identificación Tributaria

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

El Número de Identificación Tributaria (Colombia), conocido también por el acrónimo NIT, es un número único colombiano que asigna la DIAN (Dirección de Impuestos y Aduanas Nacionales de Colombia) por una sola vez cuando el obligado se inscribe en el RUT (Registro Único Tributario). La conformación del NIT es de competencia de la DIAN. Recordamos que el RUT es el mecanismo único para identificar, ubicar y clasificar a los sujetos de obligaciones administradas y controladas por la DIAN.

El RUT le permite a la DIAN contar con información veraz, actualizada, clasificada y confiable de todos los sujetos obligados a inscribirse en el mismo, para desarrollar una gestión efectiva en materia de recaudo, control y servicio que a su vez facilite el cumplimiento de las obligaciones tributarias, aduaneras y cambiarias así como la simplificación de trámites y reducción de costos.

El RUT puede actualizarse desde hace algún tiempo a través de Internet. Existen diversas guías que explican cómo hacer el registro o actualización a través de Internet como la siguiente: ¿Cómo actualizar el RUT DIAN en Internet a través de www.dian.gov.co? Guía paso a paso.

Tratándose de nuevos obligados, la inscripción deberá efectuarse en forma previa:

  • Al inicio de la actividad económica.
  • Al cumplimiento de obligaciones administradas por la DIAN.
  • A la realización de operaciones en calidad de importador, exportador o usuario aduanero.

El formato del NIT obedece a la forma XXX.XXX.XXX - Y.

El NIT es personal e intransferible.

Cálculo del dígito de verificación[editar]

El algoritmo para calcular el dígito de verificación está definido en la Orden Administrativa 4 de 1989 de la DIAN.

Pseudocódigo para NIT validación

Nota: Solo cubre NIT en formato XXX.XXX.XXX - Y, aunque existen otros en formatos de 8 o incluso 15 dígitos antes del de verificación .[1]

  1. De izquierda a derecha, todas las cifras se multiplican por una secuencia 41 37 29 23 19 17 13 7 3.
  2. La suma de todos los productos que se calcula.
  3. La suma del paso 2 se toma módulo 11.
  4. Si el resultado de la operación del paso 3 es 0 o 1, este valor es el dígito de verificación
  5. Si el resultado del paso 3 es mayor que 1, entonces 11 - el valor del paso 3 es el dígito de verificación
 function ValidateNIT(nit: int[10])
     var v: int[2]
 
     v := 41 x nit[1] + 37 x nit[2] + 29 x nit[3]
     v += 23 x nit[4] + 19 x nit[5] + 17 x nit[6]
     v += 13 x nit[7] + 7  x nit[8] + 3  x nit[9]
     v := v mod 11
     if v >= 2 then
         v := 11 - v
     end if
     /* True si la verificación de dígitos como se esperaba.*/
     return v = nit[10]

c# (limitado al formato XXX.XXX.XXX - Y)

bool IsValidNit(string nit)
       {
            if (nit == null)
                throw new ArgumentNullException(nameof(nit));
            if (nit.Length != 10)
                return false;
            var digitos = new byte[10];
            for (int i = 0; i < nit.Length; i++)
            {
                if (!char.IsDigit(nit[i]))
                    return false;
                digitos[i] = byte.Parse(nit[i].ToString());
            }
            var v = 41 * digitos[0] +
                    37 * digitos[1] +
                    29 * digitos[2] +
                    23 * digitos[3] +
                    19 * digitos[4] +
                    17 * digitos[5] +
                    13 * digitos[6] +
                    7 * digitos[7] +
                    3 * digitos[8];
               v = v % 11;
               if (v >= 2)
                     v = 11 - v;
              return v == digitos[9];
       }

Python3 (recibe nit sin puntos ni rayas para formato XXX.XXX.XXX - Y):

def validar_nit(nit:str):
    """
    Valida si el nit es correcto.
    """
    nit = nit.strip()
    
    if not bool(nit):
        return False
        
    if len(nit) != 10:    
        return False
        
    mult = [41,37,29,23,19,17,13,7,3] # multiplicadores
    v = sum(list(map(lambda x,y: x*y, mult,[int(c) for c in nit[:-1]])))
    v = int(v) % 11
    
    if (v >= 2):
        v = 11 - v
        
    return str(v) == nit[9]


Referencias[editar]

Enlaces externos[editar]