Por que (não) construir mais um app de finanças - Parte 1
O Open Finance brasileiro é uma das coisas mais legais que aconteceram no setor. Você autoriza, o banco libera, as transações aparecem.
Na nossa cabeça, era plugar uma API e partir para a próxima feature.
A Pluggy, nossa parceira, faz o trabalho pesado de conversar com dezenas de instituições. O que sobrou para a gente foi todo o resto. Esta é a Parte 1 do diário que começamos na Parte 0.
O que a gente achou que era
- O usuário autoriza no app do banco
- O banco libera os dados
- As transações aparecem no app
O que realmente era
Duplicata é um problema sem resposta certa
Quando você sincroniza o mesmo extrato várias vezes, precisa saber o que já tem. A regra óbvia é: mesma conta, mesmo dia, mesma descrição, mesmo valor, então é a mesma transação.
Até o dia em que alguém comprou duas coisas de R$ 41 na mesma loja, no mesmo dia. A segunda compra sumiu. Pela nossa regra, ela era uma cópia da primeira.
A correção foi usar o horário da transação quando o banco manda o horário, sem quebrar as transações antigas, que não têm horário nenhum.
O problema oposto também acontece. Em um banco, o mesmo PIX pode chegar com descrições diferentes em sincronizações diferentes. Aí a regra precisa ser mais frouxa para não duplicar.
Regra frouxa demais duplica. Regra rígida demais apaga compra de verdade.
Toda correção de um lado abre risco do outro.
Alguns dos commits sobre duplicatas, de fevereiro a agosto de 2026. E a lista continua.
Conexão nova parece quebrada sem estar
Logo depois que alguém conecta o banco, a instituição pode levar um tempo para liberar os dados. Durante esse tempo, a sincronização volta vazia. E a gente mostrava, todo orgulhoso: "Sincronização falhou".
Imagina conectar o banco pela primeira vez, num app novo, e ver "falhou". Pior: em alguns casos, uma sincronização que tinha dado certo aparecia como "interrompida", porque um passo de segurança do código sobrescrevia o status correto.
A mensagem de falha ficou só para quando ela é notícia de verdade.
Reconectar é o momento mais frágil
E reconectar não é exceção, é rotina. O custo da integração com Open Finance é por conexão: cada banco conectado de cada usuário entra na conta. Para o negócio fechar, a gente precisa ter a liberdade de remover conexões que não estão mais em uso, como a de quem voltou para o plano grátis. Quando essa pessoa volta, conecta tudo de novo.
Quando alguém remove e conecta o banco de novo, muita coisa volta com identificadores novos. Já vimos investimentos duplicados, contas criadas de novo ao lado das antigas e, num caso que vai ganhar a própria história na Parte 4, faturas de cartão que ficaram em branco.
Cada banco é um caso, e cada usuário também
com a Pluggy
Uma instituição que devolve zero contas logo depois de a pessoa conectar. Um banco que manda o mesmo PIX com descrições diferentes. Uma conta que muda de nome de uma sincronização para outra. Para casos assim, de um banco específico ou de um usuário específico, abrimos um chamado com a Pluggy e investigamos junto com eles.
Não existe "o Open Finance" funcionando de um jeito só. Existem dezenas de instituições, cada uma com suas particularidades, e um integrador no meio fazendo o possível para que elas pareçam iguais.
Desconectar também não é simples
Quando alguém remove uma conexão, o que fazer com dois anos de transações importadas? Apagar tudo assusta quem só queria trocar de banco. Manter tudo frustra quem queria sair.
Durante meses, a gente decidiu pelo usuário. Agora a gente pergunta, e mostra exatamente quantas transações, contas e registros de investimento vão embora antes de confirmar.
O que fizemos
- ✓Duplicatas checadas com horário, quando o banco manda horário.
- ✓Regras específicas para bancos que mudam a descrição da mesma transação.
- ✓Mensagem neutra na primeira conexão e nova tentativa automática.
- ✓Contas antigas reaproveitadas quando a conexão é recriada.
- ✓Escolha explícita na hora de remover: só a conexão, ou a conexão e os dados.
O que ainda não resolvemos
A gente não controla quando cada instituição libera os dados, nem como ela descreve cada transação. Quando algo foge do padrão, o caminho ainda é abrir mais um chamado e esperar.
O consentimento do Open Finance tem prazo e precisa ser renovado. Todo fluxo que depende de o usuário voltar ao app do banco perde gente no caminho.
E dedup continua sendo uma aposta: a gente só descobre a regra errada quando alguém reclama de uma compra que sumiu ou apareceu duas vezes.
Se você está construindo com Open Finance
Trate a primeira sincronização, a reconexão e a remoção como três produtos diferentes. Foi aí que a gente gastou mais tempo.
Quer ver como ficou na prática? Crie sua conta no Snabber e conecte o seu banco.
Na próxima parte: cobrar pelo app, ou como a Apple não te conta que o usuário cancelou.
