GOVERNO DO ESTADO DE PERNAMBUCO
ROTEIRO DE CRÍTICA DA INSCRIÇÃO ESTADUAL

Dígito Verificador da Inscrição Estadual no eFisco

Procedimentos de Cálculo (ex. para 0321418-40)

1.

Multiplique cada algarismo principal pelo seu respectivo peso:

0

 

3

 

2

 

1

 

4

 

1

 

8

 

 (algarismos)

x

 

x

 

x

 

x

 

x

 

x

 

x

 

 

8

 

7

 

6

 

5

 

4

 

3

 

2

 

 (pesos)

=

 

=

 

=

 

=

 

=

 

=

 

=

 

 

0

 

21

 

12

 

5

 

16

 

3

 

16

 

 (produtos)

2.

Some os produtos obtidos para encontrar o total:

0

+

21

+

12

+

5

+

16

+

3

+

16

=

73

 

 (total dos produtos)

3.

Divida esse total pela constante "11" para obter o resto:

 73/11= 6, Resto= 7.

4.

Se o resto da divisão for igual a 1 ou 0, o primeiro dígito será igual a zero.

Senão, Subtraia esse resto da constante "11" para encontrar o dígito verificador:

Como o resto é igual a 7, então: 11 – 7= 4 (primeiro dígito de controle)

5.

Multiplique cada algarismo principal pelo seu respectivo peso para obter o segundo dígito de controle (o cálculo leva em consideração o primeiro dígito, já calculado)

0

 

3

 

2

 

1

 

4

 

1

 

8

 

4

 

 (algarismos)

x

 

x

 

x

 

x

 

x

 

x

 

x

 

x

 

 

9

 

8

 

7

 

6

 

5

 

4

 

3

 

2

 

 (pesos)

=

 

=

 

=

 

=

 

=

 

=

 

=

 

=

 

 

0

 

24

 

14

 

6

 

20

 

4

 

24

 

8

 

 (produtos)

6.

Some os produtos obtidos para encontrar o total:

0

+

24

+

14

+

6

+

20

+

4

+

24

+

8

=

 100

 

 (total dos produtos)

7.

Divida esse total pela constante "11" para obter o resto:

 100/11= 9, Resto= 1.

8.

Se o resto da divisão for igual a 1 ou 0, o dígito será igual à zero.

Senão, Subtraia esse resto da constante "11" para encontrar o dígito verificador:

Resto igual a 1. Portanto, segundo dígito é igual à zero.

Exemplo de rotina de cálculo da inscrição estadual do e-Fisco


            private static String calcularDigitoVerificadorInscricaoEstadual(String pNuRadicalInscricaoEstadual) {
                        long[] numero= new long[9];
                        String nuDigitoVerificador= "";

                        for (int i= 0; i < 7; i++) {
                                  numero[i]= (pNuRadicalInscricaoEstadual.charAt(i) - 48);

                        // *** O primeiro digito verificador do Numero de Inscricao Estadual ******
                        long soma1= 0;

                        for (int i= 0; i < 7; i++) {
                                   soma1+= numero[i] * (8 - i);
                        }
                        long resto1= soma1 % 11;
                        if (resto1== 0||resto1== 1) {
                                   numero[7]= 0;
                        } else
                                   numero[7]= 11 - resto1;

                        long soma2= (numero[7] * 2);
                        for (int i= 0; i < 7; i++) {
                                   soma2+= numero[i] * (9 - i);
                        }

                        long resto2= soma2 % 11;

                        if (resto2== 0||resto2== 1)
                                   numero[8]= 0;
                        else
                                    numero[8]= 11 - resto2;

                        nuDigitoVerificador= ""+numero[7]+numero[8];

                        return nuDigitoVerificador;
            }




Dígito Verificador da Inscrição Estadual Antiga

O número de inscrição estadual no Cadastro de Contribuintes do Estado de Pernambuco - CACEPE possui 14 algarismos (dígitos), sendo 13 principais e 1 verificador. O cálculo do dígito verificador envolve o uso de "pesos" e da função "módulo" com parâmetro "11", conforme pode ser visto no exemplo abaixo:

Procedimentos de Cálculo (ex. para 18.1.001.0000004-9)

1.Multiplique cada algarismo principal pelo seu respectivo peso:
1810010000004(algarismos)
xxxxxxxxxxxxx
5432198765432(pesos)
=============
53230090000008(produtos)
2.Some os produtos obtidos para encontrar o total:
5+32+3+0+0+9+0+0+0+0+0+0+8=57(total dos produtos)
3.Divida esse total pela constante "11" para obter o resto:
cacepe1.gif (1181 bytes)
4.Subtraia esse resto da constante "11" para encontrar o dígito verificador:
11 - 2= 9
Quando essa diferença for maior que "9", subtraia "10" unidades para obter o valor do dígito verificador, uma vez que o mesmo deve ser sempre representado por apenas um algarismo.

Exemplo de rotina de cálculo da antiga inscrição estadual (exemplo em linguagem Pascal)
O parâmetro "ie" deve ser do tipo String com 14 posições.

Function teste_dv_cacepe (ie: String): Boolean;
     Var a, b, c, d, e, f, g, h, i, j, k, l, m, n, total, dig: Integer;
     Begin
         a := StrToInt(Copy(ie,14,1));
         b := StrToInt(Copy(ie,13,1)) * 2;
         c := StrToInt(Copy(ie,12,1)) * 3;
         d := StrToInt(Copy(ie,11,1)) * 4;
         e := StrToInt(Copy(ie,10,1)) * 5;
         f := StrToInt(Copy(ie,9,1)) * 6;
         g := StrToInt(Copy(ie,8,1)) * 7;
         h := StrToInt(Copy(ie,7,1)) * 8;
         i := StrToInt(Copy(ie,6,1)) * 9;
         j := StrToInt(Copy(ie,5,1)) * 1;
         k := StrToInt(Copy(ie,4,1)) * 2;
         l := StrToInt(Copy(ie,3,1)) * 3;
         m := StrToInt(Copy(ie,2,1)) * 4;
         n := StrToInt(Copy(ie,1,1)) * 5;
         total := b+c+d+e+f+g+h+i+j+k+l+m+n;
         dig := 11 - (total Mod 11);
         If dig > 9 Then
              dig := dig - 10;
         If dig <> a Then
            teste_dv_cacepe := False
         Else
            teste_dv_cacepe := True;
    End;

Voltar