Brasil identifica a contribuyentes con dos números distintos según quién sea el titular, y esa separación provoca errores constantes en formularios internacionales donde solo hay un campo para el documento. La buena noticia es que los dos esquemas comparten la misma lógica de comprobación, así que quien entiende uno entiende el otro casi sin esfuerzo. Este texto explica qué representa cada número, cómo se comprueba su dígito verificador y por qué superar esa comprobación no equivale a estar al corriente de nada.
¿Qué son el CPF y el CNPJ?
Son dos identificaciones fiscales de ámbito nacional, emitidas por la administración tributaria brasileña. El primero corresponde a personas físicas y el segundo a personas jurídicas, y esa es la diferencia conceptual que hay que retener antes de entrar en detalles técnicos.
Ambos cumplen la misma función: dar a cada contribuyente una etiqueta estable que no cambia con el tiempo ni con la dirección, de modo que las obligaciones y los pagos se puedan asociar sin ambigüedad. Al ser identificadores de uso masivo, se copian a mano en innumerables formularios cada día, y por eso incorporan dígitos verificadores.
Conviene aclarar desde el principio que se trata de identificadores fiscales, no de documentos de identidad civiles. Un formulario que pida el número de identidad de una persona brasileña probablemente esté pidiendo el primero de los dos, pero esa equivalencia no es universal y depende del trámite concreto.
Diferencias estructurales entre los dos números
Aunque la mecánica de control sea la misma, los dos esquemas no son idénticos, y confundirlos es la causa más frecuente de rechazos inexplicables.
| Rasgo | Número de persona física | Número de persona jurídica |
|---|---|---|
| Titular | Persona física | Persona jurídica |
| Tramo inicial | Identifica al contribuyente | Identifica la actividad y la sede |
| Dígitos verificadores | Dos, calculados por separado | Dos, calculados por separado |
| Presentación | Con separadores habituales | Con separadores habituales |
Lo importante para quien programa es que ambos se calculan con una suma ponderada y una operación de módulo, y que cada uno de los dos dígitos de control se obtiene a partir del tramo que lo precede. Es decir, el segundo control depende del primero, y comprobarlos en orden es obligatorio: si se calcula el segundo antes que el primero, el resultado no tiene ningún sentido.
El resto de las particularidades, como la cantidad de posiciones o el reparto interno de los tramos, lo fija la normativa del país y conviene consultarlo en su fuente antes de implementar nada.
La idea del dígito verificador: suma ponderada y módulo
Cada control se obtiene multiplicando las posiciones anteriores por pesos, sumando los productos y dividiendo esa suma entre un módulo para quedarse con el resto. El resto se traduce después a un carácter mediante una regla fija.
Esa descripción es todo lo que hace falta para entender el mecanismo, y es exactamente la misma forma general que comparten otros muchos esquemas. Puede verse desarrollada con más calma en la guía sobre algoritmos de dígito verificador, que compara los distintos miembros de la familia y sus parámetros.
Un detalle que sorprende a quien implementa esto por primera vez es lo poco que hay que saber del país para comprobar un número. La fórmula es pública, no consulta ninguna base de datos y se puede ejecutar sin conexión. Todo el conocimiento necesario cabe en unas pocas líneas y en una tabla de pesos.
¿Por qué se excluyen las secuencias de dígitos repetidos?
Porque una cadena formada por el mismo carácter repetido suele satisfacer la aritmética del módulo sin esfuerzo. Ese comportamiento no es un fallo del algoritmo, sino una propiedad de la operación: cuando todas las posiciones valen lo mismo, la suma ponderada tiende a producir un residuo que encaja con el control que la propia cadena ya contiene.
Como esas cadenas son las que primero se le ocurren a quien quiere rellenar un campo sin pensar, las normas que definen estos números suelen excluirlas de forma explícita. La comprobación correcta, por tanto, tiene dos partes: verificar la aritmética y verificar además que la cadena no pertenece a la lista de casos descartados por la propia norma.
No reproducimos aquí esas listas porque su contenido pertenece a la normativa vigente y puede cambiar; lo que hay que retener es que la aritmética sola no basta. Una comprobación que solo mira los dígitos verificadores aceptará entradas que la norma considera inválidas.
Formato correcto y situación registral son cosas distintas
Superar la comprobación significa que la cadena está bien construida según la fórmula publicada. No significa que el número esté activo, que pertenezca a quien lo está escribiendo ni que esa persona pueda emitir facturas con él.
La distinción importa especialmente en formularios de alta. Un sistema que trate la comprobación aritmética como una validación de identidad está prometiendo una verificación que nunca hizo, y el problema aparecerá más tarde, cuando alguien reclame por un registro asociado a un número que no le corresponde.
La regla general vale aquí igual que en otros esquemas: la comprobación local resuelve los errores de tecleo, y cualquier afirmación sobre la situación del titular exige una consulta a la fuente autorizada, con sus tiempos de espera y sus límites de uso.
Para quien programa: limpieza, máscaras y mensajes de error
Implementar estos dos esquemas sin sorpresas requiere atender unos cuantos puntos prácticos.
- Quita puntos, barras y espacios antes de calcular; los separadores son presentación y no contenido.
- Calcula los dos controles en orden, porque el segundo depende del resultado del primero.
- Rechaza también las cadenas de caracteres repetidos, no solo las que fallan la aritmética.
- No guardes el número con la máscara si luego vas a compararlo; guarda la forma normalizada y presenta la otra.
- Redacta el mensaje de error sin afirmar que el número no existe, porque no has consultado ningún registro.
Si el formulario admite documentos de varios países, conviene leer antes la guía sobre reglas de validación por país, que describe cómo convive un mismo campo con esquemas de estructuras distintas.
Siguientes pasos
Construye a mano dos cadenas de prueba, una de cada tipo, y comprueba cómo cambia el resultado al alterar un solo carácter del tramo inicial. Es la mejor manera de ver que el control depende de todo lo que va delante.
Después, pásalas por el validador de números y observa la diferencia entre una entrada con el control roto y una entrada formada por caracteres repetidos: la primera es no válida y la segunda también, pero por motivos que conviene saber explicar.
Aclaración sobre los ejemplos: las cadenas usadas en esta página son demostraciones creadas para explicar la mecánica del control, no identifican a ninguna persona ni empresa, y no acreditan ninguna situación fiscal ni autorizan ningún trámite.