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

Validación de CPF: algoritmo, ejemplos y API REST

Probalo — validá un CPF

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 CPF (Cadastro de Pessoas Físicas) es el número de identificación fiscal de Brasil para personas físicas, emitido por la Receita Federal. Si estás construyendo un producto que atiende a usuarios o empresas brasileñas — un sistema de pagos, un flujo de onboarding, o una integración con NF-e — validar CPFs correctamente es uno de los primeros requisitos que tu backend tiene que resolver. Esta guía cubre la estructura completa del CPF, el algoritmo de dígitos verificadores por módulo 11 ponderado en dos pasos con un ejemplo numérico, los casos especiales inválidos, y cómo validar CPFs en producción usando la API de Normadata.

Qué es el CPF

El CPF es emitido por la Receita Federal do Brasil e identifica de forma única a cada ciudadano o residente para fines fiscales. Se usa en declaraciones de impuestos, apertura de cuentas bancarias, contratos, facturas, y prácticamente en toda transacción económica formal en Brasil. El número es vitalicio — no vence ni cambia, salvo en casos excepcionales de fraude documentado. Las empresas usan el CNPJ (Cadastro Nacional da Pessoa Jurídica), que tiene una estructura y un algoritmo distintos.

Estructura del CPF

Un CPF tiene 11 dígitos en el formato XXX.XXX.XXX-DD, divididos en dos partes:

  • Base (9 dígitos): identifican al contribuyente. Los primeros tres dígitos indican la región fiscal de emisión (no es un indicador confiable de la ubicación actual).
  • Dígitos verificadores (2 dígitos): calculados a partir de la base mediante un algoritmo de módulo 11 ponderado en dos pasos.

La representación formateada usa puntos y un guión. Para la transmisión y la validación, siempre normalizar eliminando toda puntuación, resultando en 11 dígitos numéricos.

El algoritmo de validación

La validación del CPF usa dos pasos consecutivos de módulo 11 ponderado para calcular cada dígito verificador.

  1. PASO 1 — Calcular el primer dígito verificador (D1):
  2. - Tomar los 9 dígitos de la base.
  3. - Multiplicar por los pesos [10, 9, 8, 7, 6, 5, 4, 3, 2].
  4. - Sumar los productos.
  5. - Calcular: resto = suma mod 11.
  6. - Si resto < 2, entonces D1 = 0. Si no, D1 = 11 - resto.
  7. PASO 2 — Calcular el segundo dígito verificador (D2):
  8. - Tomar los 9 dígitos de la base más D1 (10 dígitos en total).
  9. - Multiplicar por los pesos [11, 10, 9, 8, 7, 6, 5, 4, 3, 2].
  10. - Sumar los productos.
  11. - Calcular: resto = suma mod 11.
  12. - Si resto < 2, entonces D2 = 0. Si no, D2 = 11 - resto.

Ejemplo con 111.444.777-35. Base: 1,1,1,4,4,4,7,7,7. Paso 1: pesos [10,9,8,7,6,5,4,3,2] -> productos [10,9,8,28,24,20,28,21,14] -> suma = 162 -> 162 mod 11 = 8 -> 11 - 8 = 3 -> D1 = 3. Paso 2: base + D1 = [1,1,1,4,4,4,7,7,7,3], pesos [11,10,9,8,7,6,5,4,3,2] -> productos [11,10,9,32,28,24,35,28,21,6] -> suma = 204 -> 204 mod 11 = 6 -> 11 - 6 = 5 -> D2 = 5. CPF válido: 111.444.777-35.

Casos especiales inválidos

Hay casos en que el algoritmo produce dígitos verificadores correctos pero el CPF sigue siendo inválido:

  • Los CPFs con todos los dígitos iguales son inválidos por definición: de 000.000.000-00 a 999.999.999-99. Pasan el algoritmo pero la Receita Federal nunca los emite. Todo validador correcto debe rechazarlos explícitamente.
  • Los CPFs con menos de 11 dígitos después de eliminar los separadores son inválidos. Algunos sistemas descartan los ceros a la izquierda — nunca tratar un CPF como un entero.

Validar el CPF con la API de Normadata

En lugar de implementar el algoritmo vos mismo, podés validar CPFs con una sola llamada a la API de Normadata. La API normaliza el input, verifica el formato y ambos dígitos verificadores, rechaza los casos especiales inválidos, y devuelve metadatos estructurados.

cURL
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
  -H "X-API-Key: nd_your_key_here" \
  -H "Content-Type: application/json" \
  -d {
    "value": "111.444.777-35",
    "country": "BR",
    "type": "cpf"
  }
Python
import requests

response = requests.post(
    "https://api.normadata.io/v1/validate/tax-ids",
    headers={"X-API-Key": "nd_your_key_here"},
    json={
        "value": "111.444.777-35",
        "country": "BR",
        "type": "cpf"
    }
)
data = response.json()
print(data["valid"])  # True
Respuesta — CPF válido
{
  "valid": true,
  "country": "BR",
  "type": "cpf",
  "value": {
    "raw": "11144477735",
    "formatted": "111.444.777-35"
  },
  "metadata": {
    "check_digits": "35",
    "entity_type": "pessoa_fisica"
  }
}

Próximos pasos

Ahora que entendés la estructura y el algoritmo del CPF, podés integrarlo en tu flujo de onboarding o sistema de pagos. La API de Normadata cubre no solo el CPF sino también el CNPJ (empresas) e identificadores 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 2026Validar CUIT en Argentina: algoritmo, formato y API5 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