Recompras (Buybacks)
Pré-requisitos de acesso
- Permissão (módulo):
repurchaseTokens(executar recompra). Visualizar requer o acesso ao grupo (viewCredits). - Licença/Feature:
CREDIT_INVESTMENTShabilitada na licença do tenant (Vault). - Contêiner do menu: TOKENIZAÇÃO → grupo Crédito Tokenizado
O que é / quando usar
A tela de Recompras trata os pedidos de buyback — quando o originador (ou a casa) precisa recomprar a posição de um Deal, devolvendo o capital ao investidor. Recompras nascem de eventos como violação de contrato, fraude, recebíveis inválidos ou liquidação antecipada.
Use esta tela para localizar um deal, listar suas solicitações de recompra e executar as que estão aprovadas/pendentes, disparando a devolução financeira ao investidor e a baixa da posição (incluindo a queima das unidades tokenizadas, quando houver).
Pré-condições
- Permissão:
repurchaseTokens(permissão dupla — enum CPM + módulo dinâmico no DB). - Licença/Feature:
CREDIT_INVESTMENTShabilitada. Sem ela o grupo nem aparece no menu. - Dependências de outras telas: é preciso selecionar um Deal existente; a solicitação de recompra precisa existir (originada pelo fluxo do deal/recebível).
Passo a passo
- Acesse o menu Crédito Tokenizado → Recompras.
- Pesquise e selecione um Deal no campo de busca (a lista carrega os deals; filtra por número/ID).
- As solicitações de recompra daquele deal são carregadas.
- Para uma solicitação executável, use Executar → confirme no bottom-sheet.
Filtros e colunas
| Filtro/Coluna | O que mostra | Origem do dado |
|---|---|---|
| Deal (seletor) | Deal selecionado para listar suas recompras | busca sobre getDeals(); obrigatório |
| Deal (coluna) | Número/ID do deal da solicitação | BuybackRequest.dealId (resolvido via dealMap) |
| Originador | Cedente associado | BuybackRequest.originatorId (resolvido via originatorMap) |
| Valor | Montante a recomprar | BuybackRequest.buybackAmount (BigNumber) |
| Motivo | CONTRACT_VIOLATION, FRAUD, INVALID_RECEIVABLES, EARLY_SETTLEMENT, OTHER | BuybackRequest.reason (+ reasonDetails) |
| Status | REQUESTED, PENDING, APPROVED, EXECUTED, REJECTED, FAILED | BuybackRequest.status |
| Criado em | Data da solicitação | BuybackRequest.createdAt |
Ações e modais
- Selecionar deal / Limpar: define o
dealIdque filtra as solicitações; sem deal selecionado a tela avisa que é obrigatório. - Executar:
executeBuyback(requestId, approvedBy)após confirmação (bottom-sheet). OapprovedByé o ID do operador logado (ousystem). Move a solicitação paraEXECUTED, devolvendo o capital ao investidor e baixando a posição.
Por ser uma operação financeira sensível (devolução + queima de posição), a execução pode disparar step-up (senha + MFA, X-Step-Up-Token, janela 5 min) conforme o ambiente — reconfirmação de identidade, não 4-eyes.
Regras de negócio / cuidados
Atenção
- Deal obrigatório. A lista de recompras só carrega após selecionar um deal; não há visão global de todas as recompras nesta tela.
- Motivo importa para auditoria.
reason/reasonDetailsexplicam a recompra (fraude, violação etc.) e devem bater com o eventual Cancelamento do deal.
Irreversível
- Executar recompra é definitivo. Dispara a devolução financeira ao investidor e a baixa/queima das unidades tokenizadas da posição. Não há rollback — uma recompra equivocada exige um novo evento financeiro compensatório.
- Valores financeiros:
buybackAmounté BigNumber no backend; confira casas decimais antes de confirmar. - Idempotência: a devolução financeira passa pela FinLib e é idempotente por externalId — se reprocessada, o erro
E00021("already processed") significa sucesso (já liquidado), não falha. Ver [[reference_finlib_idempotency]].