Está en la página 1de 8

26/5/2016 N0 

mercy C0de: Validar RUC (SUNAT ­ PERU)

0   Más    Siguiente blog» ayalajulio@gmail.com   Escritorio   Salir

viernes, 14 de agosto de 2009
Tributos Fáciles BCP
Validar RUC (SUNAT ­ PERU) Genera tu código NPS.
Para saber de que el RUC es valido se usa un algoritmo Ingresa Aquí y sigue los
tambien llamado Modulo 11, esto nos permite hacer un pasos. Contigo BCP
calculo de los primeros 10 digitos y validarlo con el digito
numero 11, de ser correcto se dice que el RUC es valido. 

Aqui le adjunto la funcion que hace la validacion al RUC 
Public Function ValidationRUC(ByVal ruc As String) As Boolean 
      Try 

          If Not IsNumeric(ruc) Then 
              Throw New Exception("El valor no es numerico")  Credencial Facebook
          End If 
Afu Tse Mundaca

          If ruc.Length <> 11 Then 
              Throw New Exception("Numero de digitos invalido") 
          End If 

          Dim dig01 As Integer = CInt(ruc.Substring(0, 1)) * 5 
          Dim dig02 As Integer = CInt(ruc.Substring(1, 1)) * 4 
          Dim dig03 As Integer = CInt(ruc.Substring(2, 1)) * 3 
          Dim dig04 As Integer = CInt(ruc.Substring(3, 1)) * 2 
          Dim dig05 As Integer = CInt(ruc.Substring(4, 1)) * 7 
          Dim dig06 As Integer = CInt(ruc.Substring(5, 1)) * 6 
          Dim dig07 As Integer = CInt(ruc.Substring(6, 1)) * 5 
          Dim dig08 As Integer = CInt(ruc.Substring(7, 1)) * 4 
          Dim dig09 As Integer = CInt(ruc.Substring(8, 1)) * 3 
          Dim dig10 As Integer = CInt(ruc.Substring(9, 1)) * 2 
          Dim dig11 As Integer = CInt(ruc.Substring(10, 1)) 
Crea tu insignia

          Dim suma As Integer = dig01 + dig02 + dig03 + dig04 + dig05 + dig06 
          Dim residuo As Integer = suma Mod 11  Etiquetas
          Dim resta As Integer = 11 ‐ residuo 
.net
          Dim digChk As Integer  c#
          If resta = 10 Then 
              digChk = 0  chrome
          ElseIf resta = 11 Then 
django
              digChk = 1 
          Else  excel
              digChk = resta 
          End If  Git
gmail
          If dig11 = digChk Then 
              Return True  Informix
          Else 
libro
              Return False 
          End If  linux
http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 1/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

log4net
      Catch ex As Exception 
          Throw ex  mac
      End Try 
mongodb
End Function 
mongolab
Ejm:
RUC = 10254824220 mssql
FACTOR = 5432765432
mssql2008
Se separa los 10 primeros digitos de la izquierda y se hace mysql
un calculo inividual
1 * 5 =5 Personales
0 * 4 = 0 php
2 * 3 = 6
5 * 2 = 10 propel
4 * 7 = 28
python
8 * 6 = 48
2 * 5 = 10 rest
4 * 4 = 16
2 * 3 = 6 SOA
2 * 2 = 4 tfs

Se suma el resultado de todas las multiplicaciones tfs2010
SUMA = 133 trucos

Se calcula el residuo de la division por 11 vb
133/ 11 = 1
vb.net
RESIDUO = 1
vs
Se resta 11 menos el residuo
11 ­ 1 vs2005
RESTA = 10 vs2010

digito de chequeo = RESTA  WCF
si resta = 10 entonces digito de cheque = 0
windows
si resta = 11 entonces digito de cheque = 1
Windows Phone
Por lo tanto el RUC 10254824220 es valido por que su digito
numero 11 es 0 y el digito de chekeo es 0. windows service

Me gusta 1 xcode

Archivo del blog

►  2016 (1)

►  2015 (2)

►  2014 (10)
 Publicado por r3xet en 14:39
Recomendar esto en Google ►  2013 (5)

►  2012 (12)
Etiquetas: vb.net
►  2011 (13)

►  2010 (3)
15 comentarios:
▼  2009 (7)
aciddd dijo... ►  diciembre (2)
Este comentario ha sido eliminado por el autor.
http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 2/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)
22 de septiembre de 2009, 12:30 ►  noviembre (1)

aciddd dijo... ▼  agosto (2)

Excelente explicacion, aqui lo transcribi en otro Validar RUC (SUNAT
lenguaje como lo es PHP como funcion ­ PERU)

function ValidRucPeru($ruc){  Obtener multiples
$factor= "5432765432"; resultados en
$ruc= trim($ruc); ADO.NET

if ( (!is_numeric($ruc)) || (strlen($ruc) != 11) ){
►  junio (2)
return false;
}
►  2008 (14)
$dig_verif= substr($ruc, 10, 1); 

for ($i=0; $i < 10; $i++){ Twitter Updates
$arr[]= substr($ruc, $i, 1) * substr($factor, $i, 1); 
}
Siga­me no Twitter
$suma=0;
foreach($arr as $a){
$suma= $suma + $a;
}

//Calculamos el residuo
$residuo= round(($suma/11),1);
$residuo= substr($residuo, ­1); 
$resta= 11 ­ $residuo;
$dig_verif_aux= substr($resta, ­1); 

if ($dig_verif == $dig_verif_aux){ 
return true;
} else {
return false;
}
}

//ejecutamos la validacion 
$ruc= "20372706288";
$isValidRuc= ValidRucPeru($ruc); 
if ($isValidRuc){ 
echo "es valido"; 
} else {
echo "es invalido"; 
}
22 de septiembre de 2009, 12:33

aciddd dijo...
Buenas eh descubierto una validacion mas leyendo
unos powerpoint que encontre por la web ya me paso
que ingreso como nro de RUC 29061992072 este
numero y me sale como valido pero hay que tener en
cuenta que los primeros 2 digitos deben ser de la
siguiente manera: 
10 Indica si se trata de una persona natural. 
20 sociedad conyugal.  
17 o 15 extranjeros 

http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 3/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

Por lo tanto al codigo en PHP que realice hay que
agregarle lo siguiente:
//verificacion de los 2 digitos iniciales permitidos 
$dig_valid= array("10", "20" ,"17", "15"); 
$dig=substr($ruc, 0, 2);
if (!in_array($dig, $dig_valid, true)) { 
return false;
}

Saludos, Brian.
20 de noviembre de 2009, 10:00

COCO dijo...
hola amigo no podrias compilar el codigo en un
aplicativo.. seriaa de gran ayuda tu gran aporte..
gracias y saludos
11 de enero de 2010, 13:13

aciddd dijo...
pasa que en mi ejemplo es en PHP por lo tanto
deberias copiar el codigo y correrlo con una pc con
apache que levante PHP si a eso te referis.
11 de enero de 2010, 19:46

r3xet dijo...
Gracias por los aportes, deberia compilarlo o tener
una clase ya que es de gran utilidad y tomare en
cuenta sus comentarios
22 de enero de 2010, 9:13

Marcelo dijo...
Error al hallar el residuo :S cambiar:

$residuo= round(($suma/11),1);
$residuo= substr($residuo, ­1); 

por esto

$residuo = $suma%11;

El substraer el ultimo decimal no te da el residuo
verdadero, por ejemplo prueba el RUC 101068886844
el residuo te daría 6 y no 7 ;) saludos
9 de diciembre de 2011, 9:30

Anónimo dijo...
visiten C&J System 
hay encontran un ejemplo del aplicativo 

http://www.facebook.com/cjsystem
14 de junio de 2013, 16:12

Anónimo dijo...
Aqui les mando una funcion en PHP que les puede
servir para validar el número de ruc. 
http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 4/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

function isrucok($ruc){
$est=false;
if (preg_match('/^(10|20|15|17)[0­9]{9}$/',$ruc)) {
$suma = 0;
$x = 6;
for ($i=0; $i<10;$i++){
if ( $i == 4 ) $x = 8;
$digito = substr($ruc,$i,1);
$x­­; 
$suma+= ($digito*$x);
}
$resto = $suma % 11;
$resto = 11 ­ $resto;
if ( $resto >= 10) {
$resto = $resto ­ 10;
}
if ( $resto == substr($ruc,10,1)){
$est=true;
}
}
return $est;
}
23 de septiembre de 2013, 12:06

Anónimo dijo...
El ultimo si valida correctamente
29 de abril de 2014, 10:43

Marco Antonio Llapapasca Montes dijo...
Gracias por el aporte,funciona muy bien en c#... 

Sigue adelante
14 de noviembre de 2014, 8:13

Anónimo dijo...
*
*//Aqui el codigo de validacion: 
*edm
PARAMETERS __Ruc 
IF INLIST(LEFT(__Ruc,2),"10","20","15","17")=.F. 
RETURN .F. 
ENDIF

_Factor = "5432765432" 

DIMENSION _aFac[10] 
DIMENSION _aRuc[10] 

FOR _i = 1 TO 10 
_aFac[_i]= VAL(SUBSTR(_Factor,_i,1)) 
NEXT
STORE 0 TO _aRuc, _xSum 
_cRuc = __Ruc 
FOR _i = 1 TO 10 
_aRuc[_i]= VAL(SUBSTR(_cRuc,_i,1))  
_xSum=_xSum+_aRuc[_i]*_aFac[_i] 
NEXT
http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 5/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

_xResta=11­MOD(_xSum,11) 

DO CASE 
CASE _xResta=10 
_nCh=0
CASE _xResta=11 
_nCh=1
OTHERWISE 
_nCh=_xResta 
ENDCASE 

_xCh=STR(_nCh,1,0)
_Mca=IIF(_xCh # SUBSTR(_cRuc,11,1),.F.,.T.) 

RETURN (_Mca) 
*
17 de febrero de 2015, 6:58

Anónimo dijo...
la función esta en sunat en java  

function valruc(valor){ 
valor = trim(valor) 
if ( esnumero( valor ) ) { 
if ( valor.length == 8 ){ 
suma = 0
for (i=0; i= 10) resto = resto ­ 10;
if ( resto == valor.charAt( valor.length­1 ) ­ '0' ){ 
return true

}
}
return false
10 de marzo de 2015, 20:51

Robert Salvatierra dijo...
function valruc(valor){ 
valor = trim(valor) 
if ( esnumero( valor ) ) { 
if ( valor.length == 8 ){ 
suma = 0
for (i=0; i= 10) resto = resto ­ 10;
if ( resto == valor.charAt( valor.length­1 ) ­ '0' ){ 
return true

}
}
return false
10 de marzo de 2015, 20:53

Juan Carlos dijo...
El residuo no es más que el resto de la división, para
eso se debe utilizar el símbolo %. Aquí les comparto
esta funcionalidad hecha en javascript: 

function IsNumeric(data){
return parseInt(data)==data;
http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 6/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

function validarRUC(identificacion) {
if(!IsNumeric(identificacion) || identificacion.length !=
11){
return false;
}

var dig01 = identificacion.substr(0, 1) * 5;
var dig02 = identificacion.substr(1, 1) * 4;
var dig03 = identificacion.substr(2, 1) * 3;
var dig04 = identificacion.substr(3, 1) * 2;
var dig05 = identificacion.substr(4, 1) * 7;
var dig06 = identificacion.substr(5, 1) * 6;
var dig07 = identificacion.substr(6, 1) * 5;
var dig08 = identificacion.substr(7, 1) * 4;
var dig09 = identificacion.substr(8, 1) * 3;
var dig10 = identificacion.substr(9, 1) * 2;
var dig11 = identificacion.substr(10, 1);

var suma = dig01 + dig02 + dig03 + dig04 + dig05 +
dig06 + dig07 + dig08 + dig09 + dig10;

var residuo = suma % 11;
var resta = 11 ­ residuo;

var digChk;
if(resta == 10)
digChk = 0;
else if (resta == 11) {
digChk = 1;
} else {
digChk = resta;
}

if(dig11 == digChk) {
return true;
}
else{
return false;
}
}
6 de abril de 2016, 9:03

Publicar un comentario en la entrada

http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 7/8
26/5/2016 N0 mercy C0de: Validar RUC (SUNAT ­ PERU)

UP: Derecho
Digital
Especialización en Derecho
Digital y Nuevas
Tecnologías. ¡Infórmate!

Entrada más reciente Página principal Entrada antigua

Suscribirse a: Enviar comentarios (Atom)
 

http://r3xet.blogspot.pe/2009/08/validar­ruc­sunat­peru.html 8/8

También podría gustarte