Validate a Brazilian CPF using javascript
Validando CPF - Cadastro de Pessoas Físicas
A CPF number is the Tax ID generated once you have been registered into the Brazilian Revenue. CPF stands for "Cadastro de Pessoas Físicas" (Register of Physical (or Natural) Persons). The CPF has 11 digits and it may be issued by the Brazilian revenue service in Brazil or Brazilian consulates and embassies abroad.
A CPF is required not only to purchase real estate in Brazil, but many other things such as paying your taxes, opening a bank account in Brazil, opening a company in Brazil, getting utility services, and being able to enter into general contracts drafted in Brazil.
The Brazilian CPF is composed of 11 digits. The first eight are generated by the Internal Revenue Service. The ninth digit refers to the region where the CPF was registered. The last 2 are check digits.
O CPF Brasileiro é composto por 11 dígitos. Os oito primeiros são gerados pela Receita Federal. O nono dígito diz respeito a região onde o CPF foi registrado.
- 0 – Rio Grande do Sul
- 1 – Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins
- 2 – Amazonas, Pará, Roraima, Amapá, Acre e Rondônia
- 3 – Ceará, Maranhão e Piauí
- 4 – Paraíba, Pernambuco, Alagoas e Rio Grande do Norte
- 5 – Bahia e Sergipe
- 6 – Minas Gerais
- 7 – Rio de Janeiro e Espírito Santo
- 8 – São Paulo
- 9 – Paraná e Santa Catarina
705.484.450-52 Brazilian CPF = 11 Digits / 11 digitos
705.484.45 = Dígitos definidos pela Receita Federal
0 = Região Fiscal emissora RS - Rio Grande do Sul
5 = Primeiro dígito verificador
2 = Segundo dígito verificador
The check digits are used to validate if the combination is valid without the need to consult the IRS database. But it is not a guarantee that the CPF in question is active or regular.
Os Dígitos verificadores são usados para verificar se a combinação é válida sem que haja a necessidade de consultar o banco de dados da Receita Federal. Mas não é uma garantia de que o CPF em questão seja ativo ou regular.
Algoritimo - Algorithm:
1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |
---|---|---|---|---|---|---|---|---|
7x | 0x | 5x | 4x | 8x | 4x | 4x | 5x | 0x |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
70 | 0 | 40 | 28 | 48 | 20 | 16 | 15 | 2 |
multiply the first 9 digits by a regressive sequence of digits between 10 and 2
multiplica-se os nove primeiros digitos por uma sequência regressiva de digitos entre 10 e 2
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
---|
result/ resultado
11 - (237 % 11) = 5 is the tenth digit of the CPF / 5 é o décimo dígito do CPF
Now we add the new digit to the process.
Adicionamos o novo dígito ao processo
1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th |
---|---|---|---|---|---|---|---|---|---|
7x | 0x | 5x | 4x | 8x | 4x | 4x | 5x | 0x | 5x |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
77 | 0 | 45 | 32 | 56 | 24 | 20 | 20 | 0 | 10 |
start the sequence from 11
iniciamos a sequencia a partir de 11
77 | 0 | 45 | 32 | 56 | 24 | 20 | 20 | 0 | 10 |
---|
77 0 45 32 56 24 20 20 0 10 -> result = 284
11 - (284 % 11) = 2 is the eleventh digit of the CPF /2 é o décimo primeiro dígito do CPF
Final sequence - Full CPF / CPF Válido: 705.484.450 + 5 + 2 = 705.484.450-52