Código Único de Identificación Tributaria
La Clave Única de Identificación Tributaria (CUIT) es una clave única que se utiliza en el sistema tributario argentino para poder identificar inequívocamente a las personas físicas o jurídica autónomas, susceptible de tributar. Es asignada por la Administración Federal de Ingresos Públicos, para poder confeccionar el registro o censo de las mismas, para efectos administrativo-tributarios.
Contenido |
[editar] Composición
Consta de un total de once (11) cifras: dos dígitos iniciales que indican el tipo global, seguido por ocho dígitos que corresponden, en el caso de personas físicas, al número de Documento Nacional de Identidad, y en el caso de empresas a un número de sociedad asignado por la AFIP, y finalmente un dígito verificador.
[editar] Otros nombres
Para quienes trabajan en relación de dependencia, el mismo código toma el nombre de CUIL: Clave Única de Identificación Laboral.
Quienes necesitan realizar operaciones que implican el pago de tributos (tal como varios tipos de compraventas registradas), pero que no clasifican como empleados o trabajadores autónomos, también pueden obtener de la misma agencia una CDI o Clave de Identificación.
[editar] Procedimiento para obtener el dígito verificador
El CUIT o CUIL consta de tres partes, el tipo, el número y el dígito verificador separados por guion. En el siguiente ejemplo se toma como CUIT el número ##-12345678-X, donde ## es el tipo, 12345678 es el número de DNI o numero de sociedad y X es el dígito verificador.
Tipo: Físicas (Hombres, Mujeres) o Jurídicas
- 27 significa que es mujer
- 20 hombre
- 23 puede ser ambos (se usa cuando hay otro número igual)
- 30 empresas
Para obtener el dígito verificador que no conocemos o que queremos calcular:
- Se procede a tomar el número de 10 digitos compuesto por los 2 primeros mas los 8 digitos siguientes, de derecha a izquierda, multiplicando cada dígito por los números que componen la serie numérica 2,3,4,5,6,7; y sumando el resultado de estos productos, como se muestra a continuación (si se ha aplicado la serie hasta el 7 y quedan dígitos por multiplicar, se comienza la serie nuevamente):
En el ejemplo:
8 × 2 = 16,
7 × 3 = 21,
6 × 4 = 24,
5 × 5 = 25,
4 × 6 = 24,
3 × 7 = 21,
2 × 2 = 4,
1 × 3 = 3,
0 × 4 = 0,
2 × 5 = 10, entonces la suma de los productos es: 16+21+24+25+24+21+4+3+0+10 = SUMA_P
- Al número obtenido por la suma del producto de cada dígito por la serie ya mencionada, se le aplica módulo 11, o sea, se divide por 11 y se determina el resto de la división.
En el ejemplo:
SUMA_MOD11 = SUMA_P modulo 11
Queda en SUMA_MOD11 el resto de dividir por 11
Ahora se hace 11 menos SUMA_MOD11
ONCEMENOS = 11 - SUMA_MOD11
- Si el resultado es 11, el dígito verificador será 0.
- Si el resultado es 10, el dígito verificador será 9.
- En otro caso el resultado será el dígito verificador.
Pseudocodigo:
DIGITO = ONCEMENOS
IF ONCEMENOS = 11 THEN
DIGITO = 0
ELSE IF ONCEMENOS = 10 THEN
DIGITO = 9
END IF
Ejemplo Macro en Visual Basic MS Excel
Public Function DigitoCuit(ByVal Cuit As String) As integer
Dim Posicion as Integer
Dim Multiplicador As Integer
Dim Acumulado As Integer
Dim OnceMenos as integer
Dim Digito As Integer
Posicion = 11
Multiplicador = 2
Acumulado = 0
While Posicion > 0
if mid$(CUIT,Posicion,1)<>"-" then
Acumulado = Acumulado + val(mid$(CUIT,Posicion,1)) * Multiplicador
Multiplicador = Multiplicador + 1
If Multiplicador > 7 Then
Multiplicador = 2
End If
End If
Posicion = Posicion - 1
Wend
OnceMenos = 11 - (Acumulado Mod 11)
Digito = OnceMenos
If Digito = 11 Then Digito = 0
If Digito = 10 Then Digito = 9
DigitoCuit = Digito
End Function
Código Java
private boolean validarCuit(long numero) { this.sexo = numero / (long) Math.pow(10, 9); this.dni = numero / 10 - this.sexo * (long) Math.pow(10, 8); this.verificador = numero % 10; String serie = "2345672345"; String numero = String.valueOf(this.sexo) + String.valueOf(this.dni); long suma = 0; for (int i = 0; i < 10; i++) { suma += (numero.charAt(i)- '0') * (serie.charAt(9 - i) - '0'); } long digito = 11 - suma % 11; digito = digito == 11 ? 0 : digito; digito = digito == 10 ? 9 : digito; return this.verificador == digito; }
Código Javascript
function validarCuit(cuit) { if(cuit.length != 11) { return false; } var acumulado = 0; var digitos = cuit.split(""); var digito = digitos.pop(); for(var i = 0; i < digitos.length; i++) { acumulado += digitos[9 - i] * (2 + (i % 6)); } var verif = 11 - (acumulado % 11); if(verif == 11) { verif = 0; } else if(verif == 10) { verif = 9; } return digito == verif; }
Código Python
def esCUITValida(cuit): cuit = str(cuit) cuit = cuit.replace("-", "") cuit = cuit.replace(" ", "") cuit = cuit.replace(".", "") if len(cuit) != 11: return False if not cuit.isdigit(): return False base = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] aux = 0 for i in xrange(10): aux += int(cuit[i]) * base[i] aux = 11 - (aux % 11) if aux == 11: aux = 0 elif aux == 10: aux = 9 if int(cuit[10]) == aux: return True else: return False