Segurança da Conta
Segurança da Conta
Três controles que o titular da conta configura e que a API passa a aplicar em toda tentativa de saída de dinheiro: travas de cashout, PIN transacional e visibilidade de quem tem acesso compartilhado à conta.
Eles existem para o cenário em que a credencial e o token do integrador estão corretos — e é a sessão do correntista que foi tomada. Nada aqui é opt-out por requisição: o que o titular configurou vale mesmo para a credencial que o configurou.
Toda conta começa sem trava e sem PIN, e o comportamento é o de hoje. Os controles só passam a valer depois de configurados.
Travas de cashout
account security locks são três limites independentes:
Ler
Escrever
PUT recebe o documento inteiro desejado (escopo security_locks.manage):
Apertar vale já; afrouxar espera 6 horas
Esta é a parte que muda o seu fluxo, então vale ler com atenção: a decisão é campo por campo.
Quem liga o bloqueio e amplia o horário na mesma chamada tem o bloqueio agora e o horário depois. A resposta diz exatamente isso:
A assimetria é o desenho inteiro: quem tomou a conta quer desligar o bloqueio, ampliar o horário, adicionar o próprio IP — nunca apertar. Uma carência simétrica protegeria o atacante e puniria o titular que está reagindo a uma fraude em andamento.
Cancelar ou antecipar o afrouxamento
Antecipar é o único caminho que encurta a carência, e por isso ele custa a única coisa que quem invadiu a sessão não tem: o PIN. Sem esse endpoint, o titular legítimo que quer liberar o próprio cashout teria de esperar 6h sem alternativa.
X-Acting-Ip
Quando a chamada vem de um servidor seu em nome do correntista (o caso do internet banking), o IP da conexão é o do seu servidor, não o do usuário. cashoutSourceIps seria inútil. Informe o IP real do usuário em X-Acting-Ip — é ele que a trava avalia.
O header só é aceito de credenciais de integrador. Uma credencial delegada é usada direto pelo dono, então o IP da conexão já é o certo e X-Acting-Ip é ignorado.
Erros
PIN transacional
O PIN é do operador (identificado pelo CPF em X-Acting-Document), não da conta. Uma conta com três pessoas autorizadas tem três PINs; travar o PIN de uma não afeta as outras.
Ele só é exigido quando a credencial do chamador está marcada para isso — na prática, a credencial do internet banking, onde uma única credencial atende muitos correntistas e o token, sozinho, não distingue quem está do outro lado da tela.
Cadastrar e trocar
Trocar um PIN existente exige o atual no mesmo corpo (currentPin). Sem isso, quem tomou a sessão trocaria o PIN e o PIN pararia de proteger qualquer coisa.
O escopo é pin.manage. O PIN nunca aparece em log ou resposta — é armazenado como hash argon2id e o valor em claro é descartado.
Regras do PIN
PIN recusado devolve 422 weak_pin com a razão nomeada.
Usar
Nas rotas de saída (PIX out, TED, boleto, transferência interna), quando a credencial exige PIN:
Falta de qualquer um dos dois devolve 428 pin_required.
Bloqueio por tentativas
Um PIN correto zera o contador. Para destravar o caso de 6 tentativas, quem administra a conta invalida o PIN daquele operador e ele cadastra outro:
Verificar antes de montar o pagamento
Existe para a tela confirmar o PIN antes do formulário de pagamento. Sem ele, o usuário descobriria o PIN errado no fim do fluxo — e cada erro queimaria uma das 3 tentativas. Tentativa errada aqui conta igual: o endpoint não é um oráculo grátis.
Estado dos operadores
Documentos saem mascarados. lockedUntil: null com requiresReset: true é o bloqueio duro — a saída é redefinir, não esperar.
Erros
Acesso compartilhado
Uma mesma conta bancária pode ser acessada por mais de um tenant — o correntista contratou dois sistemas, ou migrou de um para outro e o antigo ainda tem acesso. O titular tem direito de ver isso:
Só metadado público: nome de exibição, estado e desde quando. Nada de credencial, volume, saldo ou configuração dos outros tenants. status é o do acesso daquele tenant à conta, não o do tenant — uma linha suspended aparece justamente para o titular confirmar que a revogação pegou.
Escopo de leitura. Revogar acesso é operação de backoffice, não desta rota.
Ver também
- Cashout — as rotas de saída onde as travas e o PIN incidem
- Assinatura de Requisição — o outro lado do desenho: credencial por conta
- Erros — catálogo completo