CPFBrasilReceita FederalDados Fiscais

Dígito Regional do CPF: como o 9º dígito identifica estados brasileiros

Guia completo sobre o dígito regional do CPF, o mapeamento de todos os estados por região fiscal, como usar isso em sistemas e quando ele importa em produção.

20 de março de 2025 · 6 min de leitura

O que é o dígito regional do CPF?

O CPF brasileiro possui uma característica pouco conhecida fora do meio técnico: o nono dígito do número — chamado de dígito regional ou dígito de região fiscal — não é aleatório. Ele identifica a região fiscal da Receita Federal responsável pela emissão original do cadastro.

Isso significa que, olhando apenas para o nono dígito de um CPF, é possível determinar em qual grande região do Brasil aquela pessoa foi originalmente cadastrada.


Por que isso foi criado?

Historicamente, o CPF era emitido de forma descentralizada pelas Delegacias da Receita Federal, cada uma responsável por uma região geográfica do país. O dígito regional era a forma de identificar qual delegacia havia processado o cadastro, facilitando consultas e gerenciamento em uma época sem integração digital entre regionais.

Com a centralização do sistema da Receita Federal e a criação do cadastro nacional unificado, o dígito regional perdeu sua função administrativa original. Novos CPFs podem — na teoria — ser emitidos com qualquer dígito regional, independentemente do estado de residência. Na prática, entretanto, a maioria dos CPFs emitidos ainda segue o mapeamento histórico.


Mapeamento completo: dígito × estados

Dígito Regional Estados / UFs
0 Rio Grande do Sul (RS)
1 Distrito Federal (DF), Goiás (GO), Mato Grosso do Sul (MS), Mato Grosso (MT), Tocantins (TO)
2 Acre (AC), Amazonas (AM), Amapá (AP), Pará (PA), Rondônia (RO), Roraima (RR)
3 Ceará (CE), Maranhão (MA), Piauí (PI)
4 Alagoas (AL), Paraíba (PB), Pernambuco (PE), Rio Grande do Norte (RN)
5 Bahia (BA), Sergipe (SE)
6 Minas Gerais (MG)
7 Espírito Santo (ES), Rio de Janeiro (RJ)
8 São Paulo (SP)
9 Paraná (PR), Santa Catarina (SC)

Quando o dígito regional importa em produção?

1. Sistemas legados de segmentação regional

Alguns sistemas bancários, de crédito e governamentais mais antigos ainda usam o dígito regional como critério de roteamento ou como campo de filtro em relatórios. Ao integrar com esses sistemas via API, é comum encontrar validações que rejeitam CPFs cujo dígito regional não corresponda ao estado de cadastro do cliente.

2. Análise de risco e detecção de fraude

Sistemas de score de crédito podem usar a inconsistência entre o dígito regional do CPF e o estado de residência declarado como um sinal fraco de inconsistência cadastral. Isso não configura fraude por si só, mas pode acionar etapas adicionais de verificação.

3. Testes de sistemas regionais

Ao testar sistemas que atendem regiões específicas (ex.: uma fintech que opera apenas em SP e RJ), é importante gerar CPFs com os dígitos regionais corretos para validar os fluxos de cadastro corretamente. Nosso Gerador de CPF suporta a seleção de estado para esse caso exato.

4. Migração de dados e ETL

Em pipelines de ETL que processam bases históricas, o dígito regional pode ser usado para enriquecer registros com informações de origem geográfica sem consultar a Receita Federal diretamente.


Como gerar CPFs com dígito regional específico

Usando o Gerador de CPF deste site

Acesse geradordecpf.com.br, selecione o estado desejado no campo Estado (UF) e clique em Gerar. O sistema fixará o nono dígito conforme o mapeamento acima.

Implementando manualmente

const UF_TO_REGIONAL_DIGIT: Record<string, number> = {
  RS: 0,
  DF: 1, GO: 1, MS: 1, MT: 1, TO: 1,
  AC: 2, AM: 2, AP: 2, PA: 2, RO: 2, RR: 2,
  CE: 3, MA: 3, PI: 3,
  AL: 4, PB: 4, PE: 4, RN: 4,
  BA: 5, SE: 5,
  MG: 6,
  ES: 7, RJ: 7,
  SP: 8,
  PR: 9, SC: 9,
};

function generateCpfForState(uf: string): string {
  const regionalDigit = UF_TO_REGIONAL_DIGIT[uf];
  if (regionalDigit === undefined) throw new Error(`UF inválida: ${uf}`);

  const base = Array.from({ length: 8 }, () => Math.floor(Math.random() * 10));
  base.push(regionalDigit);

  const calcV = (digits: number[], weights: number[]) => {
    const sum = digits.reduce((acc, d, i) => acc + d * weights[i], 0);
    const rem = sum % 11;
    return rem < 2 ? 0 : 11 - rem;
  };

  const v1 = calcV(base, [10, 9, 8, 7, 6, 5, 4, 3, 2]);
  base.push(v1);
  const v2 = calcV(base, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
  base.push(v2);

  return base.join("").replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4");
}

// Exemplos de uso:
console.log(generateCpfForState("SP")); // CPF com 9º dígito = 8
console.log(generateCpfForState("MG")); // CPF com 9º dígito = 6
console.log(generateCpfForState("RS")); // CPF com 9º dígito = 0

Detectando o estado de origem a partir de um CPF

A operação inversa — dado um CPF, identificar o estado de origem — é simples:

function getRegionFromCpf(cpf: string): string[] {
  const digits = cpf.replace(/\D/g, "");
  if (digits.length !== 11) return [];

  const regionalDigit = Number(digits[8]);

  const DIGIT_TO_STATES: Record<number, string[]> = {
    0: ["RS"],
    1: ["DF", "GO", "MS", "MT", "TO"],
    2: ["AC", "AM", "AP", "PA", "RO", "RR"],
    3: ["CE", "MA", "PI"],
    4: ["AL", "PB", "PE", "RN"],
    5: ["BA", "SE"],
    6: ["MG"],
    7: ["ES", "RJ"],
    8: ["SP"],
    9: ["PR", "SC"],
  };

  return DIGIT_TO_STATES[regionalDigit] ?? [];
}

// Exemplo:
console.log(getRegionFromCpf("123.456.789-09")); 
// ["PR", "SC"] — 9º dígito é 9

Atenção: essa inferência é probabilística, não determinística. Desde a centralização do cadastro, não há garantia de que o dígito regional corresponda ao estado atual de residência do titular.


Perguntas frequentes sobre o dígito regional

O dígito regional muda quando a pessoa se muda de estado?

Não. O CPF é imutável após a emissão. Uma pessoa nascida em SP (dígito 8) que se muda para o RS mantém o mesmo CPF com dígito 8 pelo resto da vida.

Pessoas de estados diferentes podem ter o mesmo dígito regional?

Sim. Estados como DF, GO, MS, MT e TO compartilham o dígito 1. Isso significa que não é possível distinguir entre eles apenas pelo CPF.

O dígito regional é validado pela Receita Federal?

Não. A Receita Federal valida apenas os dois dígitos verificadores (10º e 11º). O 9º dígito pode ser qualquer valor de 0 a 9 em termos de validação matemática.


Conclusão

O dígito regional do CPF é um artefato histórico do sistema tributário brasileiro que ainda tem aplicações práticas em sistemas legados, análise de dados e geração de CPFs de teste regionalizados. Entendê-lo é parte do conhecimento necessário para trabalhar com documentos fiscais brasileiros em sistemas de software.

Use o Gerador de CPF para criar CPFs de teste com o dígito regional correto para cada estado.

Precisa gerar CPFs para testar sua implementação?

Usar o Gerador de CPF →