Publicado el 5 de mayo de 2026·7 min de lectura

Validar CUIT en Argentina: algoritmo, formato y API

Probalo — validá un CUIT

La validación corre en tu navegador. Ningún dato sale de tu dispositivo.

Valida localmente — tus datos nunca salen de tu navegador. Sin tracking sobre el input.

El CUIT (Clave Única de Identificación Tributaria) es el identificador fiscal universal en Argentina. Lo emite AFIP (ahora ARCA) y lo necesita cualquier persona o empresa que opere dentro del sistema tributario argentino. Si estas construyendo un sistema de facturación, un flujo de onboarding para empresas argentinas, o una integracion con AFIP, validar el CUIT correctamente es uno de los primeros problemas que vas a tener que resolver. Esta guia cubre la estructura, los prefijos, el algoritmo de digito verificador con un ejemplo numerico completo, y como validar CUITs en produccion usando la API de Normadata.

Que es el CUIT

El CUIT es el número de identificación fiscal de Argentina, equivalente al RFC en México o el EIN en Estados Unidos. Se usa en facturas, declaraciones impositivas, inscripciones en registros públicos, y transacciones bancarias. Toda empresa registrada en Argentina tiene un CUIT. Las personas fisicas que trabajan en relacion de dependencia o de forma autonoma tambien tienen uno asignado. A diferencia del DNI (Documento Nacional de Identidad), el CUIT incluye un prefijo de tipo y un digito verificador, lo que permite validarlo matematicamente sin consultar ninguna base de datos externa.

El CUIL (Clave Única de Identificación Laboral) usa exactamente el mismo formato y el mismo algoritmo que el CUIT. La diferencia es administrativa: el CUIL se usa en sistemas laborales y de seguridad social, el CUIT en sistema impositivo. Para propositos de validación, son identicos.

Estructura del CUIT

Un CUIT tiene 11 digitos escritos en el formato XX-XXXXXXXX-X, divididos en tres partes:

  • Prefijo (2 digitos): indica el tipo de entidad
  • Cuerpo (8 digitos): el DNI de la persona o un número asignado por AFIP para empresas
  • Digito verificador (1 digito): calculado con el algoritmo modulo 11

Los prefijos posibles son: 20 (persona fisica masculina), 23 (masculina alternativa), 24 (masculina segunda alternativa), 27 (persona fisica femenina), 30 (persona juridica / empresa), 33 (juridica alternativa), 34 (juridica segunda alternativa). Los prefijos alternativos (23, 24, 33, 34) existen para los casos en que el prefijo primario produce un digito verificador igual a 10, que es invalido segun el algoritmo.

El algoritmo modulo 11

El digito verificador del CUIT se calcula con el algoritmo modulo 11. Funciona asi:

  1. Escribir los 10 primeros digitos del CUIT (prefijo + cuerpo).
  2. Asignar los pesos [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] a cada posicion respectivamente.
  3. Multiplicar cada digito por su peso correspondiente.
  4. Sumar todos los productos.
  5. Calcular el resto de la suma dividida por 11 (sum mod 11).
  6. Restar el resto a 11: check = 11 - (sum mod 11).
  7. Si el resultado es 11, el digito verificador es 0.
  8. Si el resultado es 10, el CUIT es invalido con ese prefijo (AFIP lo re-emite con uno alternativo).

Ejemplo completo con 20-31456789-?. Digitos: 2, 0, 3, 1, 4, 5, 6, 7, 8, 9. Pesos: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2. Productos: 10, 0, 9, 2, 28, 30, 30, 28, 24, 18. Suma: 179. 179 mod 11 = 3. 11 - 3 = 8. El CUIT completo es 20-31456789-8.

Errores comunes en produccion

Estos son los problemas más frecuentes que encontramos en integraciones reales:

  • Tratar el CUIT como entero — Al convertirlo a número se pierden ceros iniciales del cuerpo. Siempre almacenar y transmitir como string.
  • No normalizar los separadores — Los sistemas almacenan CUITs con guiones, sin guiones, con espacios, o con puntos. Siempre remover caracteres no numericos antes de validar.
  • Asumir que prefijo 20 = masculino y 30 = empresa — Los prefijos alternativos (23, 24, 33, 34) son validos y frecuentes. No rechazar un CUIT solo porque su prefijo no es 20 o 30.
  • No manejar el resultado 10 — Si el algoritmo produce 10 como check, no es que el digito verificador sea 10. El CUIT es invalido con ese prefijo.
  • Confundir CUIT con CUIL — Son validados con el mismo algoritmo pero existen en sistemas separados. Un número valido como CUIL es valido como CUIT matematicamente.

Validar CUIT con la API de Normadata

En lugar de implementar el algoritmo manualmente y manejar todos los edge cases, podes validar CUITs con una sola llamada a la API de Normadata. La API normaliza el input, verifica el formato y el checksum, y devuelve metadatos estructurados incluyendo el tipo de entidad y el valor formateado.

cURL
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
  -H "X-API-Key: nd_tu_clave" \
  -H "Content-Type: application/json" \
  -d {
    "value": "20-31456789-8",
    "country": "AR",
    "type": "cuit"
  }
Python
import requests

response = requests.post(
    "https://api.normadata.io/v1/validate/tax-ids",
    headers={"X-API-Key": "nd_tu_clave"},
    json={
        "value": "20-31456789-8",
        "country": "AR",
        "type": "cuit"
    }
)
data = response.json()
print(data["valid"])  # True
Respuesta — CUIT valido
{
  "valid": true,
  "country": "AR",
  "type": "cuit",
  "value": {
    "raw": "20314567898",
    "formatted": "20-31456789-8"
  },
  "metadata": {
    "prefix": "20",
    "entity_type": "persona_fisica_masculino",
    "dni": "31456789",
    "check_digit": "8"
  }
}

Proximos pasos

Ahora que entendes la estructura y el algoritmo del CUIT, podes integrarlo en tu flujo de onboarding, sistema de facturación, o pipeline de compliance. La API de Normadata cubre no solo el CUIT sino tambien CUIL, CBU, y otros identificadores argentinos, ademas de los tax IDs de 8 otros países sudamericanos con el mismo endpoint consistente. Ver la cobertura completa en /coverage o unirse a la lista de espera en /waitlist para obtener acceso a la API.

¿Listo para empezar a construir?

Solicitá tu accesoLeer documentación

Artículos relacionados

5 de mayo de 2026Tax IDs en Latinoamérica: guía para desarrolladores5 de mayo de 2026Validación de CPF: algoritmo, ejemplos y API REST5 de mayo de 2026RFC vs CURP en México: cuando usar cada uno15 de marzo de 2026Cómo validar un número de CUIT con una API1 de abril de 2026Validación de CPF: Formato, algoritmo e integración con API para Brasil2 de abril de 2026RFC en México: Formato, estructura y validación para desarrolladores10 de marzo de 2026La guía completa de tax IDs en Latinoamérica1 de marzo de 2026Mejores prácticas para integrar APIs de terceros en aplicaciones de LATAM11 de mayo de 2026Cuánto presupuesto KYC se te va en data malformada (y cómo medirlo)16 de mayo de 2026Cómo validar todos los tax IDs de LATAM con una sola API16 de mayo de 2026Por qué pre-validar datos antes del KYC te ahorra dinero — con números16 de mayo de 2026Construyendo un formulario de checkout consciente de LATAM16 de mayo de 2026El costo oculto de los errores de mod-11 en tu onboarding LATAM