O Connect Widget é o frontend hospedado da Malvo que cuida de toda a jornada de conexão de uma instituição financeira: seleção do banco, validação de credenciais, autenticação multifator (MFA), redirect OAuth do Open Finance, tratamento de erros e os casos específicos de cada instituição. Você não precisa construir essa UI banco a banco. O contrato é simples: seu backend gera um connectToken de 30 minutos e o widget produz um Item — a representação de uma conexão entre um usuário e uma instituição. A partir daí, todos os dados são lidos no servidor com a sua X-API-KEY.
A Malvo faz apenas agregação de dados. O Connect Widget conduz somente consentimentos de recepção de dados (Items) — não há iniciação de pagamentos (ITP), Pix ou boletos.

Plataformas suportadas

O widget é a mesma aplicação hospedada em https://malvo.io/connect, embrulhada por SDKs nativos de cada plataforma. Veja a visão geral dos SDKs para instalação e exemplos completos.

Web / Script tag

Bundle versionado que expõe o global window.MalvoConnect. Sem build, basta uma <script>.

React / Next.js

Pacote @malvo/react-connect — o componente monta o widget ao renderizar.

React Native

Pacote @malvo/react-native-connect para apps iOS e Android com React Native.

Flutter

Pacote flutter_malvo_connect para apps Flutter.

Modelo de segurança

1

As credenciais ficam na infraestrutura da Malvo

O usuário digita as credenciais (ou autoriza via OAuth) na UI hospedada da Malvo, nunca na sua aplicação. Você nunca vê nem armazena senhas de banco.
2

O connectToken não lê dados

O connectToken só dirige o widget. Ele não consegue ler dados de produto (contas, transações etc.): qualquer tentativa de usá-lo nessas rotas retorna 403 Forbidden. Dados são lidos apenas server-side com X-API-KEY.
3

Os webhooks são a fonte da verdade

Os callbacks do frontend são best-effort — o usuário pode fechar a aba antes do onSuccess disparar. O sinal autoritativo de que um Item está pronto são os webhooks item/created / item/updated no seu backend. Veja Webhooks.

Pré-requisito no backend

Toda integração precisa de um endpoint autenticado no seu backend que devolva um connectToken recém-gerado. A cadeia é: POST /auth (com clientId + clientSecret) → apiKey (TTL de 2h) → POST /connect_tokenaccessToken (TTL de 30 min).
Nunca exponha clientId, clientSecret ou apiKey no frontend. O connectToken é o único segredo que pode chegar ao cliente — e ele já é limitado a 30 minutos e a um único fluxo de Item.
O frontend recebe esse accessToken e o passa ao widget. Gere um token novo a cada montagem do widget.

Parâmetros de inicialização

As opções abaixo formam o contrato comum do script tag, React, React Native e Flutter. Cada SDK também documenta opções específicas de plataforma, como oauthRedirectUri no mobile.

Obrigatório

Filtragem e seleção

UX

Modo de atualização

No widget hospedado/JavaScript e no componente React web, oauthRedirectUri não é uma opção local: ele é configurado server-side no objeto options do POST /connect_token (ou no POST /items). Os SDKs React Native, Expo e Flutter também recebem o mesmo URI completo como prop local para validar a retomada pelo navegador do sistema. O backend inclui um malvoFlowId reservado e os SDKs só retomam quando ele corresponde ao Connect Token atual. Veja OAuth.

Callbacks

Quando o onError retorna TOKEN_EXPIRED ou UNAUTHORIZED, gere um novo connectToken (POST /connect_token) e reabra o widget. Os demais códigos seguem a tabela de erros de Item da documentação de webhooks.

Eventos do onEvent

onEvent recebe o evento OPEN emitido pelo wrapper e as mensagens autenticadas do widget: malvo:success, malvo:error e malvo:close. Os payloads são os mesmos dos callbacks correspondentes. Não use telemetria de frontend como fonte de persistência; webhooks continuam sendo o contrato autoritativo.
Os callbacks são apenas ganchos de UX. O sinal autoritativo de que um Item está pronto é o webhook item/created / item/updated no seu backend — o usuário pode fechar a aba antes do onSuccess rodar.

Diagrama de sequência

Invariantes:
  • A leitura de dados de produto é sempre server-side com X-API-KEY; o connectToken recebe 403 nessas rotas.
  • O cliente trata onSuccess apenas como sinal de UX; a persistência é dirigida pelos webhooks item/createditem/updated.
  • Um Item novo busca até 365 dias no Brasil ou o maior histórico disponível no Open Banking internacional; as atualizações seguintes são incrementais.

Próximos passos

Modo de atualização

Reconecte Items em LOGIN_ERROR, WAITING_USER_INPUT ou OUTDATED.

OAuth do Open Finance e Open Banking

Configure o oauthRedirectUri e o redirect por plataforma.

Customização

Marca, cores e conectores via Dashboard.

SDKs

Instalação e exemplos por plataforma.