Cédula de identidad ecuatoriana y RUC: la guía definitiva

La cédula de identidad ecuatoriana y el número del registro único de contribuyentes -RUC- tienen un algoritmo especial muy sencillo que es conveniente dominar para su implementación efectiva en proyectos informáticos. Su verificación es muy útil para garantizar la calidad de los datos de una manera sencilla. Por ejemplo, cuando se digitan números de cédula de identidad muchas veces se comenten errores de tipeo, los cuales se los podría detectar inmediatamente automatizando su verificación.

Un ejemplo donde conviene realizar esta validación es en las facturas electrónicas, donde antes de remitir la factura al SRI se puede comprobar que esté correcta la cédula o RUC del receptor de la factura.

Estructura del Número de Cédula de Identidad

El Estado Ecuatoriano, a través del Registro Civil, asigna el número de cédula de identidad para identificar de manera única a los ciudadanos. Este número consiste en 10 dígitos con la siguiente estructura:

  • Los dos primeros números corresponden al número de la provincia donde fue generada la cédula de identidad con el certificado de nacido vivo. En caso de extranjeros, el número es 30. Los únicos valores posibles a la fecha son los siguientes:
    01	Azuay
    02	Bolivar
    03	Cañar
    04	Carchi
    05	Cotopaxi
    06	Chimborazo
    07	El Oro
    08	Esmeraldas
    09	Guayas
    10	Imbabura
    11	Loja
    12	Los Ríos
    13	Manabí
    14	Morona Santiago
    15	Napo
    16	Pastaza
    17	Pichincha
    18	Tungurahua
    19	Zamora Chinchipe
    20	Galápagos
    21	Sucumbíos
    22	Orellana
    23	Santo Domingo de los Tsáchilas
    24	Santa Elena
    30	Número reservado para ecuatorianos registrados en el exterior.
  • Cabe señalar que el conjunto de valores posibles cambiará conforme varíe la estructura política de las provincias. En este momento es incorrecto contar con un número de doble cero (00) o mayor a 24, excepto 30 que como se dijo se lo utiliza en números asignados para ecuatorianos en consulados del Ecuador en el exterior.
  • El tercer número puede tener un valor entre el cero (0) y el cinco (5). Algunos de los valores restantes son usados en el RUC (se lo explica más adelante) y otros nunca se los usa. (favor tomar en cuenta la actualización del 14 de julio de 2017, al final del artículo, donde se revisan los casos de cédulas con tercer dígito 6)
  • Del cuarto al noveno dígito es un número secuencial que el Registro Civil lo obtiene de manera automática al momento de generar la cédula de identidad.
  • El décimo dígito es el dígito verificador, el cual se lo obtiene a través de un cálculo especial donde se utiliza el módulo 10.

Algoritmo de Verificación

El décimo dígito es el resultado de un cálculo realizado con los anteriores nueve, de la siguiente manera:

  1. Se agrupan los nueve primeros dígitos en dos conjuntos: los que están en posiciones impares y los que están en pares. Por ejemplo, para la cédula de identidad 1713175071, las posiciones impares serían 1, 1, 1, 5 y 7, mientras que las posiciones pares serían 7, 3, 7 y 0.
  2. A las posiciones impares se multiplican por dos (2). Si el resultado de esta multiplicación es mayor a nueve, se le resta nueve. Por ejemplo, si los números en posiciones impares son 1, 1, 1, 5 y 7, la multiplicación por dos de cada número sería 2, 2, 2, 10 y 14. Ya que algunos resultados son mayores a nueve, se procede a restar nueve a esos valores, quedando así: 2, 2, 2, 1 y 5.
  3. Se suman los dígitos en posiciones pares, más los resultados de las operaciones en las posiciones impares. Por ejemplo, si los dígitos pares son 7, 3, 7 y 0, la suma de dígitos en posiciones pares sería 17. Por otro lado, si el resultado de las operaciones en las posiciones impares es 2, 2, 2, 1 y 5, su suma sería 12. El total de la suma sería 17 + 12 = 29
  4. Se obtiene el módulo 10 de la suma total anterior, es decir, se toma el dígito más a la derecha del resultado de la suma. Por ejemplo, si suma 29, el módulo 10 sería 9.
  5. Si el resultado anterior es cero entonces el dígito verificador es cero, caso contrario al número 10 se le resta el resultado obtenido en el anterior paso. Por ejemplo, si el resultado del paso anterior es 9, la resta sería 10 – 9 = 1, siendo 1 el dígito verificador calculado.

Como se puede verificar, el resultado en el ejemplo del quinto paso (1) es igual al último dígito de la cédula de identidad de ejemplo que consta en el primer paso (1713175071).

Este algoritmo se lo ha automatizado en el siguiente programa, donde es posible ingresar cualquier cédula de identidad para entender cada paso de su verificación:

%CODE1%

Sobre el Registro Único de Contribuyentes (RUC)

El número RUC es el identificador único usado por el Servicio de Rentas Internas para el cobro de impuestos. Este identificador es usado dentro de la estructura del código de autorización de los comprobantes electrónicos del Ecuador, tal y como se lo detalla en este artículo.

Tiene cinco diferencias con el número de cédula:

  1. Consta de 13 dígitos, en lugar de los 10 de la cédula de identidad. Los últimos dígitos son un secuencial que corresponde al número del establecimiento. El número de dígitos usados para este secuencial dependen del tipo de RUC, que se lo explicará más adelante.
  2. El tercer dígito puede ser del 0 al 5, o 6, o 9, dependiendo del tipo de RUC (se explicará más adelante cada caso).
  3. Si para la cédula de identidad el dígito verificador siempre es el décimo, para instituciones públicas es el noveno.
  4. El dígito verificador se lo calcula con módulo 11 para algunos tipos de RUC y con módulo 10 para otros, en lugar del uso exclusivo del módulo 10 en la cédula de identidad.
  5. Para el cálculo del dígito verificador, los coeficientes para la multiplicación pueden ser distintas al simple 2 para las posiciones impares que se usa siempre en la cédula de identidad, dependiendo del tipo de RUC.

El Servicio de Rentas Internas cuenta con un documento donde se explica la manera de validar los números de cédula de identidad y RUC. Adicional, el SRI ha publicado en su sitio una explicación de la estructura del RUC.

Tipos de RUC

Existen tres tipos de RUC según el tipo de contribuyente:

  1. Persona natural: es el mismo número de cédula de identidad de la persona, más el número de sucursal (que por lo general es 001). Ya que no se cambia al número de cédula de identidad, el tercer dígito de este tipo de RUC estará siempre entre cero (0) y cinco (5) (favor tomar en cuenta la actualización del 14 de julio de 2017, al final del artículo, donde se revisan los casos de cédulas de identidad con tercer dígito 6). De igual manera, el dígito verificador se lo calcula con módulo 10, además los coeficientes de multiplicación son 2, 1, 2, 1, 2, 1, 2, 1, 2, es decir es el 2 para las posiciones impares, al igual que en la cédula de identidad.
  2. Persona jurídica y extranjeros sin cédula de identidad: La estructura de los 10 primeros dígitos es similar al de la cédula de identidad, a excepción del tercer dígito que siempre tendrá el valor fijo de nueve (9). Los tres últimos dígitos son el número de establecimiento (el primer establecimiento es 001). A diferencia de la cédula de identidad, el décimo dígito verificador se lo calcula con módulo 11. Los coeficientes de multiplicación para el cálculo del dígito verificador son 4, 3, 2, 7, 6, 5, 4, 3, 2.
  3. Institución Pública: Los dos primeros dígitos son el código de la provincia, al igual que en la cédula de identidad. El tercer dígito siempre tendrá el valor fijo de seis (6) (favor tomar en cuenta la actualización del 14 de julio de 2017, al final del artículo, donde se revisan los casos de cédulas de identidad con tercer dígito 6). Del cuarto al octavo dígito es un secuencial. El dígito verificador se lo calcula con módulo 11 y está en la novena posición. Los coeficientes de multiplicación para el cálculo del dígito verificador son 3, 2, 7, 6, 5, 4, 3, 2. El número de establecimiento son los cuatro últimos dígitos (el primer establecimiento es 0001).

Verificación de RUC

Al igual que para el número de cédula de identidad, se automatizó la verificación del RUC para entender su validación.

Puede probar el validador ingresando alguno de los siguientes ejemplos:

  • Persona natural: 1713175071001
  • RUC de persona jurídica: 1090072923001
  • RUC de persona jurídica con residuo cero: 0992114800001
  • Institución pública: 1768028470001
  • Institución pública con residuo cero: 1260004800001

%CODE_RUC%

Ejemplos de Implementaciones de Validadores

A continuación se mostrarán dos ejemplos de implementación del validador de cédula de identidad, en lenguajes distintos.

Validador para hoja de cálculo

El validador de la cédula de identidad para hoja de cálculo es el siguiente:

=SI(Y(ESNUMERO(A3); LARGO(A3)=10; EXTRAEB(A3;1;2)>0; O(EXTRAEB(A3;1;2)+0<25; EXTRAEB(A3;1;2)+0=30)); SI(RESIDUO(1000 - EXTRAEB(A3;1;1)*2 + SI(EXTRAEB(A3;1;1)*2>9;9;0) - EXTRAEB(A3;3;1)*2 + SI(EXTRAEB(A3;3;1)*2>9;9;0) - EXTRAEB(A3;5;1)*2 + SI(EXTRAEB(A3;5;1)*2>9;9;0) - EXTRAEB(A3;7;1)*2 + SI(EXTRAEB(A3;7;1)*2>9;9;0) - EXTRAEB(A3;9;1)*2 + SI(EXTRAEB(A3;9;1)*2>9;9;0) - EXTRAEB(A3;2;1) - EXTRAEB(A3;4;1) - EXTRAEB(A3;6;1) - EXTRAEB(A3;8;1); 10) + 0 = EXTRAEB(A3;10;1) + 0; VERDADERO; FALSO); FALSO)

El mismo algoritmo pero en inglés, por si la hoja de cálculo esté en ese idioma:

=IF(AND(ISNUMBER(A3); LEN(A3)=10; MIDB(A3; 1; 2)>0;OR(MIDB(A3; 1; 2)+0<25;MIDB(A3; 1; 2)+0=30));IF(MOD(1000-MIDB(A3; 1; 1)*2+IF(MIDB(A3; 1; 1)*2>9; 9; 0)-MIDB(A3; 3; 1)*2+IF(MIDB(A3; 3; 1)*2>9; 9; 0)-MIDB(A3; 5; 1)*2+IF(MIDB(A3; 5; 1)*2>9; 9; 0)-MIDB(A3; 7; 1)*2+IF(MIDB(A3; 7; 1)*2>9; 9; 0)-MIDB(A3; 9; 1)*2+IF(MIDB(A3; 9; 1)*2>9; 9; 0)-MIDB(A3; 2; 1)-MIDB(A3; 4; 1)-MIDB(A3; 6; 1)-MIDB(A3; 8; 1); 10)+0=MIDB(A3; 10; 1)+0; TRUE(); FALSE()); FALSE())

La forma de uso es:

  • Copiar el código en un blog de notas y cambiar las referencias a la celda A3, a la primera posición de la columna donde se tengan los números de cédula de identidad.
  • Luego pegar el texto resultante en una celda contigua a la primera posición, y arrastrar la fórmula a lo largo de la columna hasta el final del listado de cédulas de identidad.

Validador en JavaScript

Para JavaScript, se implementó un validador de cédula de identidad muy sencillo y eficiente, cuyo algoritmo es usado en los ejemplos de este artículo:

function verificarCedula(cedula) {
  if (typeof(cedula) == 'string' && cedula.length == 10 && /^\d+$/.test(cedula)) {
    var digitos = cedula.split('').map(Number);
    var codigo_provincia = digitos[0] * 10 + digitos[1];

    //if (codigo_provincia >= 1 && (codigo_provincia <= 24 || codigo_provincia == 30) && digitos[2] < 6) {

    if (codigo_provincia >= 1 && (codigo_provincia <= 24 || codigo_provincia == 30)) {
      var digito_verificador = digitos.pop();

      var digito_calculado = digitos.reduce(
        function (valorPrevio, valorActual, indice) {
          return valorPrevio - (valorActual * (2 - indice % 2)) % 9 - (valorActual == 9) * 9;
        }, 1000) % 10;
      return digito_calculado === digito_verificador;
}
  }
  return false;
}

Conclusiones y recomendaciones

Es posible realizar una verificación eficiente de la cédula de identidad mediante la comprensión del algoritmo y de los casos especiales. Si requiere algún tipo de personalización o de implementación en otros lenguajes, no dude en contactarnos.

Actualización al 14 de julio de 2017

Gracias a nuestros lectores se detectaron varios casos de cédulas de identidad válidas cuyo tercer dígito es 6. Por ejemplo, nuestro lector Vinicio nos da el caso concreto del número de cédula 0960075455. Se realizó la consulta a dos funcionarios del Registro Civil, quienes concuerdan que la restricción del tercer dígito no consta en ningún instructivo, reglamento o ley de su Institución. Indicaron que esta restricción del tercer dígito no debería ser tomado en cuenta en los algoritmos de verificación, y que el único mecanismo de validación formalmente aceptado es el dígito verificador. También supieron manifestar que si el SRI ha implantado esta restricción para los números RUC (donde el tercer dígito 6 teóricamente es exclusivo para instituciones públicas), no lo ha hecho de manera coordinada con el Registro Civil y es de su exclusiva responsabilidad (problema típico de la ausencia de gestión de interesados en un proyecto). Además, el Reglamento a la Ley del Registro Único de Contribuyentes, en su artículo 3 sobre la estructura del número de registro, no menciona al tercer dígito.

Las implicaciones que se saca de todo esto son al menos dos:

  1. En el Ecuador no existe una especificación formal de la estructura de la cédula de identidad por parte del Registro Civil donde se detallen estos conceptos, por lo que se recomienda no usar el tercer dígito de la cédula de identidad en algoritmos de verificación.
  2. Ya que se han identificado casos reales de números de cédula de identidad con el tercer dígito 6, pueden existir casos de números de RUC de esas personas naturales con el tercer dígito 6 que no corresponden a instituciones públicas, por lo que no se puede confiar en el tercer dígito del RUC para discernir el tipo de contribuyente. Esto abre un gran problema para la verificación, puesto que como se detalló en el artículo, el dígito verificador para personas naturales es el décimo, mientras que para instituciones públicas es el noveno. En esos casos no hay manera definitiva de realizar la validación del RUC. Se requerirá de un dato externo al RUC para saber el tipo de contribuyente, y de esta manera poder aplicar uno u otro algoritmo de verificación.

A todo esto, si se añade el hecho del aparecimiento repentino del código 30 en los dos primeros dígitos para indicar cedulación en el extranjero, la recomendación para implementar validaciones que no dejen de funcionar en el tiempo sería utilizar solamente el dígito verificador. En lo posible.

29 comments

  1. Fernando Ordoñez says:

    Disculpe se que es un tema de hace mucho tiempo pero viendo en el SRI dice que cuando es RUC y el tercer digito es 6 siempre el decimo digito sera cero, la pregunta seria si en el caso de cedula si el tercer digito es 6 hay la posibilidad de que el decimo digito sera cero.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Lo del SRI no se basa en nada, por lo que no hay impedimento en que pueda suceder ese caso.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Gracias por la indicación, tomar en cuenta la observación del mismo artículo que señala que la única manera aceptada por el Registro Civil de verificar la validez de un número de cédula es con el cálculo del dígito verificador.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      No hay forma totalmente confiable de validar el RUC, más referencias en las conclusiones del artículo.

  2. Oliver Cedeño says:

    No se han puesto de acuerdo el registro civil (manejo de cédula de personas naturales, 10 dígitos) con el SRI servicio de rentas internas (manejo de RUC registro único de contribuyentes con 13 dígitos para personas jurídicas y a las personas naturales se les añade 001 a la cédula para obtener su RUC).
    El SRI respeta el tercer dígito 6 para identificar a las entidades del sector público, pero el registro civil no restringe el tercer dígito y hasta los casos visto usa el 6 para extranjeros que obtienen la cédula, y el SRI le añade el 001, pienso que el SRI debería asignarle otro número.
    Para los que quieran validar si el RUC existe pueden entrara a:
    https://declaraciones.sri.gob.ec/sri-en-linea/#/SriRucWeb/ConsultaRuc/Consultas/consultaRuc
    Esto me crea un problema, ya que hasta ahora identificaba a los RUC del sector público con el tercer dígito 6.

    1. Oliver Cedeño says:

      En el link que les di (https://declaraciones.sri.gob.ec/sri-en-linea/#/SriRucWeb/ConsultaRuc/Consultas/consultaRuc), al responder la consulta devuelve algunos campos, entre ellos el tipo contribuyente, en el cual podemos ver que se trata de una persona natural o una sociedad.

      Para el RUC 0960571719001(DORIA CAIZEDO LUIS JORGE extranjero representante de la compañía INTEDYA GUAYAQUIL METROPOLITANA, el registro civil le asignó el 6 y el SRI le añadió 001) vemos que devuelve persona natural, con lo cual ya puedo descartar que se trate de una entidad del sector público.

      Para el RUC 1768188830001 vemos que es una sociedad (AGENCIA DE REGULACIÓN Y CONTROL FITO Y ZOOSANITARIO) por lo tanto se cumple el logaritmo del SRI.

      ¿Se puede hacer una consulta masiva al sitio para obtener el campo tipo contribuyente?

    2. Edgar Valarezo ( User Karma: 0 ) says:

      No he encontrado manera de consultar el tipo de contribuyente de manera automática. Sin embargo, en caso de existir forma, se reducirían bastante los casos en los que se podría aplicar la validación, ya que se necesitaría previamente consultar online el tipo de contribuyente, o en su defecto ya contar con ese dato de manera local (offline). En cualquier caso, el solo dato del RUC no es suficiente para la validación.

      Tal vez una solución salomónica (y el mal menor por el momento) es: si el tercer dígito es 6, validar tanto RUC de persona natural (dígito 10 de verificación) como RUC de institución pública (dígito 9 de verificación), y si cualquiera de ambas validaciones pasa entonces dar el RUC como válido. Esta solución tiene una pequeña probabilidad de falsos positivos (por ejemplo, una institución pública cuyo 9no. dígito de verificación no coincida pero que por coincidencia el 10mo. dígito sí, o viceversa, una persona natural cuyo 10mo. dígito de verificación no coincida pero que por coincidencia el 9no. dígito sí).

    3. Edgar Valarezo ( User Karma: 0 ) says:

      Así es, en la actualidad la única forma 100% segura de validar el RUC es simplemente contar que tenga 13 dígitos.

  3. Byron Córdova says:

    0961114162001 este ruc no pasa la validación es ruc de persona natural, de cédula de identidad extranjera, dicho ruc fué tomado de la base de datos del sri y corroborado con Cédula de Identidad.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Ese número RUC es válido, y presenta el problema de los RUC con tercer dígito 6. Favor revisar el artículo para más detalles del problema.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Puedes encontrar varias implementaciones de este algoritmo sobre Java en el Internet, por ejemplo en este video. Saludos.

  4. Edwin Tenesaca says:

    Esto me respondieron del registro civil. «Lo números de cédula son correctos, se recomienda que en la validación de los mismos se lo realice en base al algoritmo del dígito verificador debido a que si dicho algoritmo en la tercera posición realiza alguna comparación le va a indicar que la cédula es inválida, razón por la cual se recomienda que esta validación se la realice en base al dígito verificador»

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Gracias por el aporte. Por el momento no quedaría otra opción ya que la especificación del número del RUC que consta en el sitio web del SRI no es compatible con cédulas con tercer dígito 6, incluso la posición del dígito verificador cambia ya que no es el décimo dígito sino el noveno, como se ve en el artículo. Se está consultando en el Registro Civil por una definición oficial de la estructura del número de cédula, en cuanto se tengan esos datos se ajustará el artículo acorde. Saludos.

  5. Edwin Tenesaca says:

    Estimado, existe un caso donde un extranjero obtuvo una cédula ecuatoriana, entonces allí no funciona el algoritmo porque el tercer dígito es un 6 y obviamente es una cédula válida para el registro civil.

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Estimado, gracias por reportar ese caso. Estamos realizando averiguaciones en el Registro Civil para aclarar este tema, ya que lo que mencionas no consta en ninguna documentación que se haya podido acceder, es más va en contra de lo consultado. En cuanto podamos esclarecer este tema con el Registro Civil actualizaremos el artículo acorde. Saludos.

  6. Vinicio says:

    0960075455 es cedula correcta verificado en la pagina del Registro Civil, el tercer digito No es menor a 6, el algoritmo me falla, por favor su ayuda!

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Gracias por reportar la novedad, pues tienes razón, va en contra de toda la información disponible en Internet que hemos podido consultar. A través de su sitio Web hemos contactado con el Registro Civil para que puedan dar una versión oficial sobre el tema, y en cuanto tengamos su respuesta actualizaremos este artículo al respecto. Saludos

    1. Edgar Valarezo ( User Karma: 0 ) says:

      Gracias por la observación, se ha actualizado el artículo para contemplar ese caso. Saludos.

  7. Edison A.C. says:

    Para validar el RUC es un tanto complicado; porque se requiere de rantos div para solamente decir si es válido o no; otra pregunta no puede enviar un alert para esto.

    1. Carlos says:

      En la empresa donde trabajo no he podido sacar el salvo conducto porque cuando ingreso el numero de identificación el sistema automáticamente dice que el tercer número debe ser igual a cero o menor a seis y como el tercer número de mi identificación es 6 no me han logrado sacar el salvo conducto que debo hacer en este caso

    2. Edgar Valarezo ( User Karma: 0 ) says:

      Trate de buscar ayuda en los teléfonos de la AMT o escriba por twitter al alcalde explicando brevemente su caso y pidiendo ayuda.

      Eso que le han dicho no es cierto y va en contra de lo que define el Registro Civil para una cédula válida, en donde lo único que se valida es el décimo dígito verificador. No existe ley, reglamento, manual técnico, ni nada que fije alguna restricción a la cédula aparte del dígito verificador, por lo que puede llamar directo a la Secretaría De Movilidad o a la Agencia Metropolitana de Tránsito* para que le atiendan, ya que están vulnerando sus derechos por ignorancia.

      * https://www.gob.ec/gaddmq/tramites/emision-salvoconductos

      Contacto: Coordinación de Servicios Ciudadanos
      Email: denuncias.amt@quito.gob.ec

      Teléfono: (02) 3-952-300 ext. 28558

    3. Edgar Valarezo ( User Karma: 0 ) says:

      Esta implementación de la validación puede ser modificada libremente, para hacerla tan simple como se la necesite.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *