Alguns bancos pedem um segundo fator (MFA, OTP ou captcha) durante a conexão. Quando isso acontece, o Item pausa em WAITING_USER_INPUT e a Malvo envia o webhook item/waiting_user_input. Você tem duas formas de resolver: enviar o token via POST /items/{id}/mfa ou reabrir o Connect Widget em update mode para o usuário preencher o que falta.
Há um único host de API: https://api.malvo.io. Toda chamada server-side usa o header X-API-KEY. Os webhooks são a fonte da verdade do estado do Item.

1. Detecte via webhook item/waiting_user_input

Quando o conector exige um desafio, chega este webhook. Ele é o gatilho para você pedir o token ao usuário.
Webhook item/waiting_user_input

2. Leia item.parameter

Com o itemId, leia o Item: o campo parameter descreve exatamente o input esperado (um descritor de credencial), incluindo expiresAt quando o desafio é temporizado. O status do Item será WAITING_USER_INPUT.
GET /items/{id}
Trecho do Item (status WAITING_USER_INPUT)
Use parameter.label, parameter.placeholder e parameter.validation para renderizar o campo certo ao usuário.

3. Resolva: enviar o token OU abrir o widget

Se você coleta o token na sua própria UI, envie-o direto. A execução retoma (LOGIN_MFA_IN_PROGRESS).
cURL
Node
Token errado/expirado → INVALID_CREDENTIALS_MFA.

4. Tipos de MFA e impacto no auto-sync

A forma como o desafio aparece muda o fluxo — e se o auto-sync continua disponível:
Em single-step, o usuário inclui o token logo no início, então não há pausa em WAITING_USER_INPUT. Em two-step, o Item pausa e você resolve com POST /items/{id}/mfa ou com o widget em update mode. Quando o auto-sync fica desabilitado, atualize sob demanda (acionado pelo usuário), não por polling automático.

5. Teste no sandbox

O sandbox roda no mesmo host e exercita MFA sem banco real. Use o conector Malvo Bank MFA-2 (two-step) para forçar a pausa em WAITING_USER_INPUT.
1

Crie o Item de teste

Conecte pelo widget com includeSandbox ativo e escolha o conector MFA two-step, ou crie via POST /items com o conector de sandbox apropriado.
2

Receba item/waiting_user_input

O Item pausa e o webhook chega. Leia item.parameter para saber o campo esperado.
3

Envie o token de teste

4

Confirme o sucesso

Com o token 123456, a coleta segue até UPDATED e chega item/updated. Qualquer token diferente de 123456INVALID_CREDENTIALS_MFA.

Próximos passos

Conectar um banco

O fluxo completo de criação do Item, incluindo o caminho Open Finance.

Connect Widget — update mode

Como o widget reautentica, renova consentimento e coleta MFA.

Webhooks

Os payloads de item/waiting_user_input e item/error.

Sandbox

Gatilhos de usuário, fluxos de MFA e credenciais de teste.