O TSE exige que todas as doações eleitorais sejam vinculadas ao CPF do doador e que o CPF seja válido e regular na Receita Federal: plataformas de arrecadação de campanhas devem validar o CPF do doador via API antes de processar qualquer contribuição, prevenindo doações com CPFs falsos, duplicados ou de pessoas jurídicas disfarçadas. O descumprimento pode levar à rejeição da prestação de contas e até à cassação do mandato do candidato.
Introdução
O financiamento de campanhas eleitorais no Brasil é regulado por normas rigorosas da legislação eleitoral e pelas resoluções do Tribunal Superior Eleitoral (TSE). Desde a proibição de doações de empresas em 2015, as doações de pessoas físicas tornaram-se a principal fonte de financiamento privado de campanhas, e o CPF do doador é o elemento central de identificação e rastreabilidade dessas contribuições.
O TSE exige que toda doação eleitoral seja identificada pelo CPF do doador, com verificação de que o documento é válido, pertence a uma pessoa real e que o doador respeita os limites legais de contribuição. Para plataformas de financiamento coletivo eleitoral (vaquinhas eleitorais) e para as próprias campanhas que recebem doações online, a validação automatizada de CPF é obrigatória.
Legislação eleitoral aplicável
Lei das Eleições (Lei 9.504/1997)
A legislação eleitoral estabelece regras claras sobre doações:
- Apenas pessoas físicas podem doar para campanhas eleitorais.
- O limite de doação é de 10% dos rendimentos brutos do ano anterior.
- Toda doação deve ser identificada com nome completo, CPF e valor.
- Doações anônimas são proibidas.
- Os dados de doadores devem ser prestados ao TSE para publicação.
Resoluções do TSE
O TSE complementa a legislação com resoluções específicas para cada ciclo eleitoral, detalhando:
- Procedimentos para recebimento de doações online.
- Requisitos técnicos para plataformas de financiamento coletivo.
- Formatos de prestação de contas com identificação por CPF.
- Prazos e obrigações de publicidade das doações recebidas.
Exigências específicas de validação de CPF
Identificação obrigatória
Cada doação, independentemente do valor, deve estar vinculada a um CPF válido e verificado. A campanha é responsável por garantir que o CPF informado pelo doador é legítimo.
Verificação de titularidade
O nome vinculado ao CPF deve corresponder ao nome informado pelo doador. Divergências podem indicar uso de CPF de terceiros — prática ilegal que configura doação oculta.
Limite de doação
O limite de 10% dos rendimentos brutos exige controle por CPF. A campanha deve manter registro de todas as doações por CPF para garantir que o limite não seja ultrapassado. Embora a API de CPF não forneça dados de renda, o CPF validado é o identificador que permite o controle.
Vedação a menores
Menores de 16 anos não possuem título de eleitor e não podem realizar doações eleitorais. A data de nascimento retornada pela API permite verificar automaticamente a idade do doador.
Implementação prática
Exemplo com cURL
curl -X GET "https://api.cpfhub.io/cpf/77766655544" \
-H "x-api-key: SUA_API_KEY" \
-H "Accept: application/json" \
--timeout 10
Exemplo em Python para plataforma de doação eleitoral
import requests
import os
from datetime import datetime, date
from decimal import Decimal
class DoacaoEleitoralValidator:
"""
Valida doações eleitorais em conformidade com as exigências
do Tribunal Superior Eleitoral.
"""
API_URL = "https://api.cpfhub.io/cpf"
IDADE_MINIMA_DOACAO = 16
def __init__(self):
self.api_key = os.environ.get("CPFHUB_API_KEY")
self.doacoes_por_cpf = {} # CPF -> total doado
def validar_cpf(self, cpf):
headers = {
"x-api-key": self.api_key,
"Accept": "application/json",
}
try:
response = requests.get(
f"{self.API_URL}/{cpf}",
headers=headers,
timeout=10,
)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
return {"error": "timeout"}
except requests.exceptions.RequestException as e:
return {"error": str(e)}
def calcular_idade(self, data_nascimento_str):
data_nasc = datetime.strptime(data_nascimento_str, "%Y-%m-%d").date()
hoje = date.today()
idade = hoje.year - data_nasc.year
if (hoje.month, hoje.day) < (data_nasc.month, data_nasc.day):
idade -= 1
return idade
def validar_doacao(self, cpf, nome_doador, valor_doacao):
"""
Valida uma doação eleitoral segundo as regras do TSE.
"""
resultado = {
"cpf": cpf,
"valor": float(valor_doacao),
"timestamp": datetime.utcnow().isoformat(),
"verificacoes": [],
}
# 1. Validar CPF via API
dados_cpf = self.validar_cpf(cpf)
if "error" in dados_cpf:
resultado["aprovada"] = False
resultado["motivo"] = "Erro na verificação do CPF"
resultado["verificacoes"].append({
"item": "cpf_valido",
"resultado": False,
})
return resultado
if not dados_cpf.get("success"):
resultado["aprovada"] = False
resultado["motivo"] = "CPF não encontrado — doação não pode ser aceita"
resultado["verificacoes"].append({
"item": "cpf_valido",
"resultado": False,
})
return resultado
dados = dados_cpf["data"]
resultado["verificacoes"].append({
"item": "cpf_valido",
"resultado": True,
})
# 2. Verificar nome
nome_api = dados["nameUpper"]
nome_input = nome_doador.upper().strip()
nome_confere = nome_api == nome_input
resultado["verificacoes"].append({
"item": "nome_confere",
"resultado": nome_confere,
"detalhe": f"API: {nome_api}" if not nome_confere else None,
})
if not nome_confere:
resultado["aprovada"] = False
resultado["motivo"] = (
"Nome divergente — possível doação oculta (vedada pelo TSE)"
)
return resultado
# 3. Verificar idade mínima
idade = self.calcular_idade(dados["birthDate"])
idade_ok = idade >= self.IDADE_MINIMA_DOACAO
resultado["verificacoes"].append({
"item": "idade_minima",
"resultado": idade_ok,
"idade": idade,
})
if not idade_ok:
resultado["aprovada"] = False
resultado["motivo"] = "Doador menor de 16 anos — doação vedada"
return resultado
# 4. Verificar acúmulo de doações
total_anterior = self.doacoes_por_cpf.get(cpf, Decimal("0"))
novo_total = total_anterior + Decimal(str(valor_doacao))
resultado["verificacoes"].append({
"item": "acumulo_doacoes",
"total_anterior": float(total_anterior),
"novo_total": float(novo_total),
})
# 5. Aprovar e registrar
self.doacoes_por_cpf[cpf] = novo_total
resultado["aprovada"] = True
resultado["motivo"] = "Doação aprovada"
resultado["doador"] = {
"cpf": dados["cpf"],
"nome": dados["name"],
"idade": idade,
"total_doado_campanha": float(novo_total),
}
return resultado
def gerar_prestacao_contas(self):
"""
Gera relatório no formato exigido pelo TSE.
"""
registros = []
for cpf, total in self.doacoes_por_cpf.items():
dados_cpf = self.validar_cpf(cpf)
if dados_cpf.get("success"):
registros.append({
"cpf_doador": dados_cpf["data"]["cpf"],
"nome_doador": dados_cpf["data"]["name"],
"valor_total": float(total),
})
return {
"data_geracao": datetime.utcnow().isoformat(),
"total_doadores": len(registros),
"valor_total": sum(r["valor_total"] for r in registros),
"doadores": registros,
}
# Uso
validator = DoacaoEleitoralValidator()
# Processar doação
resultado = validator.validar_doacao(
cpf="77766655544",
nome_doador="Sandra Maria Rocha",
valor_doacao=500.00,
)
if resultado["aprovada"]:
print(f"Doação aprovada: R$ {resultado['valor']}")
print(f"Doador: {resultado['doador']['nome']}")
print(f"Total doado na campanha: R$ {resultado['doador']['total_doado_campanha']}")
else:
print(f"Doação recusada: {resultado['motivo']}")
for v in resultado["verificacoes"]:
print(f" {v['item']}: {'OK' if v['resultado'] else 'FALHA'}")
Plataformas de financiamento coletivo eleitoral
As "vaquinhas eleitorais" — plataformas digitais que intermediam doações de múltiplos cidadãos para campanhas — possuem obrigações específicas:
Requisitos técnicos do TSE
- Cadastro junto ao TSE como plataforma autorizada.
- Identificação obrigatória do doador por CPF.
- Emissão de recibo eleitoral digital para cada doação.
- Transmissão dos dados ao sistema de prestação de contas do TSE.
- Garantia de que cada CPF corresponde a um eleitor real.
Validação em tempo real
A validação de CPF via API permite que a plataforma verifique a identidade do doador em tempo real, antes de processar a doação. Isso evita que doações irregulares entrem no sistema e precisem ser devolvidas posteriormente — um processo burocraticamente custoso.
Transparência e publicidade
A legislação eleitoral exige que as doações recebidas sejam públicas. Os dados de CPF dos doadores (parcialmente mascarados) são publicados no site do TSE. A validação prévia garante que:
- Os dados publicados são precisos.
- Não há doadores fictícios inflando artificialmente o número de apoiadores.
- O nome publicado corresponde ao real titular do CPF.
Sanções por descumprimento
O descumprimento das normas de identificação de doadores pode resultar em:
- Rejeição da prestação de contas da campanha.
- Devolução compulsória de doações não identificadas.
- Multa ao candidato e ao partido.
- Em casos graves, cassação do registro de candidatura ou do mandato.
A validação automatizada de CPF via API minimiza o risco dessas sanções ao garantir que cada doação é devidamente identificada no momento do recebimento.
Custos e viabilidade
O volume de doações por campanha varia enormemente. A CPFHub.io oferece planos adequados:
- Gratuito (50 consultas/mês): para campanhas menores ou em fase de preparação.
- Pro (R$ 149/mês, 1.000 consultas): para campanhas de médio porte.
- Corporativo (sob consulta): para plataformas de financiamento coletivo que atendem múltiplas campanhas.
A API opera com 99,9% de uptime e tempo de resposta de aproximadamente 900 milissegundos, garantindo que o processo de doação seja rápido e confiável para o cidadão que deseja contribuir. Quando o limite do plano é atingido, a API não bloqueia — cobra R$0,15 por consulta adicional para manter o fluxo de doações sem interrupção.
Perguntas frequentes
Quais são as obrigações do TSE sobre CPF em doações eleitorais?
A legislação eleitoral (Lei 9.504/1997 e resoluções do TSE) determina que doações a campanhas políticas devem ser identificadas com CPF do doador, limitadas a valores legais por pessoa física e vedadas para estrangeiros, empresas e entidades sem fins lucrativos. O TSE fiscaliza a regularidade do CPF nas prestações de contas.
O que acontece se uma campanha aceitar doação com CPF inválido?
A doação pode ser classificada como irregular pelo TSE, obrigando sua devolução ao doador ou ao fundo partidário. Em casos de CPFs falsos sistemáticos, a campanha pode ser multada e os responsáveis sujeitos a sanções eleitorais. A validação de CPF no momento da doação é a proteção mais eficaz.
Plataformas digitais de arrecadação eleitoral precisam de CNPJ e compliance específico?
Sim. Plataformas que processam doações eleitorais operam em ambiente regulado pelo TSE e precisam de autorização formal. Além da validação de CPF, devem implementar controles de limite de doação por CPF, rejeição de estrangeiros e emissão de recibos eleitorais vinculados ao CPF validado.
Como a validação de CPF previne doações eleitorais ilegais via laranja?
A API retorna o nome vinculado ao CPF. Se o nome do doador declarado divergir do nome oficial, a doação pode ser de um "laranja" — alguém que doa em nome de outro para contornar limites. A consistência entre CPF, nome e valor da doação é o sinal básico de legalidade que a validação via API fornece.
Conclusão
As exigências do TSE para identificação de doadores eleitorais por CPF são rigorosas e essenciais para a transparência do processo democrático. Campanhas e plataformas de financiamento coletivo que implementam validação automatizada de CPF garantem conformidade legal, protegem-se contra sanções e contribuem para a integridade do sistema eleitoral brasileiro. A API da CPFHub.io oferece a validação em tempo real necessária para atender esses requisitos, com disponibilidade garantida durante períodos eleitorais de alta demanda.
Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.
Sobre a redação
Redação CPFHub.io
Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.



