Então mano
Sobre dados sensíveis, eu tomei bastante cuidado com isso. As informações não ficam expostas direto no banco. O que é mais sensível passa por hash ou tokenização antes de ser armazenado, e toda comunicação da API e do app roda com criptografia (TLS). Ou seja, nada trafega em aberto.
Toda comunicação da API usa TLS 1.3 e os dados críticos passam por hash e tokenização antes de qualquer armazenamento. Informações como chaves Pix, documentos ou identificadores não ficam expostas diretamente no banco.
Nos casos de saque ou depósito com erro, o sistema trabalha com verificação de status da transação. Cada operação tem um ID único e a gente confirma o status com a adquirente antes de liberar qualquer saldo. Se rola alguma divergência, a transação fica em análise até a liquidação ser confirmada. Mas isso é feito de forma automática pelo Webhook, e nada sensivel fica do lado do cliente