Etapa 8 de 8Trilha Criar do zero

Banco pelo código no n8n: tratamento de erro com On Error (BrasilAPI)

Descubra de quem é o código do banco do comprovante com um formulário no n8n e a BrasilAPI, e aprenda a tratar erros com On Error › Continue (using error output) para mostrar uma mensagem amigável.

12 min de leitura Iniciante

Sabe aquele número de três dígitos que aparece no comprovante do Pix, da TED, no boleto ou no cadastro de uma conta? É o código do banco (o 341 é o Itaú, o 260 é o Nubank, o 001 é o Banco do Brasil). Neste tutorial você vai montar no n8n um formulário que recebe esse código e mostra de quem é o banco: o nome, o nome completo, o ISPB e a cidade da sede.

Os dados vêm da BrasilAPI, gratuita e sem cadastro, com a lista de bancos do Banco Central. Mas a grande novidade deste tutorial é outra: o tratamento de erro. Se alguém digitar um código que não existe, em vez de o workflow quebrar, a pessoa vê uma mensagem amigável explicando o que fazer.

Para que serve no dia a dia: conferir para qual banco foi um Pix ou uma TED, checar o banco de um boleto antes de pagar, preencher um cadastro que pede o código do banco ou validar a conta de um fornecedor.

Vídeo 8 do canal Orbitacode: Banco pelo código no n8n: tratamento de erro com On Error (BrasilAPI) | Trilha Iniciante, Etapa 8

O que você vai construir

Editor do n8n com o workflow Banco pelo código: On form submission ligado a Buscar banco, que tem duas saídas, Success para Mostrar banco e Error para Banco não encontrado
O workflow final: o Buscar banco tem duas saídas, Success e Error. Aqui, o teste com um código inexistente seguiu pela saída Error.
NóO que fazComparando com o dia a dia
1. On form submissionMostra o formulário e recebe o código.Você lendo o número no comprovante.
2. Buscar banco (HTTP Request)Pergunta à BrasilAPI de quem é o código. Configurado para continuar pela saída de erro quando falhar.Ligar para a central e perguntar.
3. Mostrar banco (Form Ending, saída Success)Mostra os dados do banco.A atendente lendo a ficha.
4. Banco não encontrado (Form Ending, saída Error)Mostra uma mensagem amigável.“Esse número não existe, confira e ligue de novo.”
Página de resultado do formulário: Banco encontrado, 341 · ITAÚ UNIBANCO S.A., ISPB 60701190, sede em São Paulo-SP
Código 341: o banco encontrado.
Página do formulário: Banco não encontrado, com a mensagem Não achamos nenhum banco com o código 999 e exemplos de códigos
Código 999: em vez de erro, a mensagem amigável.

Pré-requisitos

  • Um n8n funcionando. Se ainda não tem, siga antes o tutorial n8n do zero com Docker.
  • Acesso à internet a partir do n8n.
  • Nenhuma conta ou chave: a BrasilAPI é aberta.

Versão usada: n8n 2.40. Os nomes de botões e campos aparecem em inglês, como na interface. A BrasilAPI é a mesma do tutorial dos feriados, e o formulário segue a ideia da consulta de CEP e da Tabela FIPE.

A BrasilAPI de bancos em 2 minutos

A BrasilAPI é um projeto aberto que reúne dados públicos brasileiros (CEP, feriados, CNPJ, bancos…) num só lugar, em JSON, sem cadastro. A rota de bancos usa a lista de participantes do sistema de pagamentos publicada pelo Banco Central. No fim do endereço vai o código:

https://brasilapi.com.br/api/banks/v1/341
{"ispb":"60701190","name":"ITAÚ UNIBANCO S.A.","code":341,"fullName":"ITAÚ UNIBANCO S.A.","localizacao_sede":"Praça Alfredo Egydio de Souza Aranha, 100, Torre Itaúsa, São Paulo-SP", …}
CampoSignificado
codeO código do banco (o número do comprovante). Atenção: vem como número, então o 001 chega como 1.
nameO nome curto, como aparece em extratos.
fullNameA razão social completa.
ispbO ISPB, a “identidade” de oito dígitos do banco no Banco Central (usada no Pix).
localizacao_sedeO endereço da sede.

E quando o código não existe? A API responde com status 404 (não encontrado) e esta mensagem:

https://brasilapi.com.br/api/banks/v1/999
{"message":"Código bancário não encontrado","type":"BANK_CODE_NOT_FOUND","name":"NotFoundError"}

Para o n8n, um 404 é um erro: por padrão, o nó fica vermelho e o workflow para. É exatamente esse caso que vamos tratar.


Montando o workflow, nó por nó

No n8n, clique em Create workflow e dê o nome Banco pelo código.

Nó 1: o formulário (On form submission)

Clique no + do canvas, procure por Form e escolha o gatilho On form submission. Preencha:

CampoValor
Form TitleBanco pelo código
Form DescriptionDigite o código do banco (3 dígitos), como aparece no comprovante.
Form ElementField Name Codigo · Element Type Text · Placeholder 341 · Required Field ligado

Dois detalhes: o nome Codigo vai sem acento, para a expressão ficar simples; e o tipo é Text, não Number, porque há códigos com zeros à esquerda, como o 001. (A API aceita os dois jeitos, 001 e 1.)

Nó On form submission com Form Title Banco pelo código, a descrição e o campo Codigo
O formulário com um campo só.

Clique em Execute step, digite 341 e envie: o OUTPUT mostra Codigo: 341.

Nó 2: buscar o banco (HTTP Request)

Adicione um HTTP Request e renomeie para Buscar banco. Method GET. Na URL (Expression), cole o endereço até a última barra e arraste o campo Codigo do INPUT:

https://brasilapi.com.br/api/banks/v1/{{ $json.Codigo }}

Clique em Execute step: chegam ispb, name, code, fullName e localizacao_sede.

Nó HTTP Request Buscar banco com a URL da BrasilAPI terminada no campo Codigo e o OUTPUT com os dados do Itaú
Buscar banco: com o código 341, a resposta do Itaú.

A novidade: On Error › Continue (using error output)

Ainda no Buscar banco, abra a aba Settings (ao lado de Parameters) e procure On Error, que define o que o nó faz quando dá erro. São três opções:

OpçãoO que acontece no erro
Stop Workflow (padrão)O nó fica vermelho e o workflow para. No formulário, aparece “Problem submitting response”.
ContinueO workflow segue pela saída normal, como se tivesse dado certo, levando os dados do erro no lugar da resposta.
Continue (using error output)O nó ganha uma segunda saída, Error. Deu certo, segue pela Success; deu erro, segue pela Error.

Escolha Continue (using error output). Repare que o painel de saída passa a ter duas abas, Success Branch e Error Branch, e que, no canvas, o nó ganha duas bolinhas de saída.

Aba Settings do nó Buscar banco com On Error em Continue (using error output) e o OUTPUT dividido em Success Branch e Error Branch
Settings › On Error: com o error output, a saída se divide em Success e Error.

É como ter um plano B na vida real: se o primeiro caminho estiver fechado, você já sabe para onde ir. Na prática, isso é o que separa uma automação de teste de uma automação que outras pessoas podem usar.

Nó 3: banco encontrado (Form Ending na saída Success)

Puxe a saída Success, adicione o nó Form com a operação Form Ending e renomeie para Mostrar banco. Em Completion Title, Banco encontrado; em Completion Message (Expression):

{{ String($json.code).padStart(3, '0') }} · {{ $json.name }}
Nome completo: {{ $json.fullName }}
ISPB: {{ $json.ispb }}
Sede: {{ $json.localizacao_sede }}

O String($json.code).padStart(3, '0') resolve o detalhe do código numérico: String(…) transforma o número em texto, e padStart(3, '0') completa com zeros à esquerda até ter três dígitos. Assim, o 1 volta a ser 001, como no comprovante.

Nó Form Ending Mostrar banco com título Banco encontrado e a mensagem com padStart, name, fullName, ispb e localizacao_sede
Mostrar banco: a página da saída Success.

Nó 4: a mensagem amigável (Form Ending na saída Error)

Agora puxe a saída Error e adicione outro Form Ending, chamado Banco não encontrado. Título Banco não encontrado e, em Expression:

Não achamos nenhum banco com o código {{ $('On form submission').item.json.Codigo }}.
Confira os números no comprovante (ex.: 001 Banco do Brasil, 341 Itaú, 260 Nubank) e tente de novo.

Uma boa mensagem de erro diz o que aconteceu e o que fazer. Para repetir o código digitado, arraste o Codigo do bloco do formulário. Curiosidade: na saída Error, o item mantém os campos que entraram no nó (inclusive o Codigo) e ganha um campo error com a mensagem da API; se quiser, dá para mostrá-la com {{ $json.error.message }}.

Nó Form Ending Banco não encontrado com a mensagem amigável; no INPUT, o item da saída de erro com Codigo 999 e o campo error
Banco não encontrado: na saída Error, o item traz o código digitado e os detalhes do erro.

Testando os dois caminhos

Feche o nó e clique em Execute workflow. Teste os dois lados:

Código digitadoCaminhoResultado no teste (07/10/2026)
341Success341 · ITAÚ UNIBANCO S.A.
260Success260 · NU PAGAMENTOS – IP
001Success001 · BCO DO BRASIL S.A. (com os zeros, graças ao padStart)
999ErrorBanco não encontrado (mensagem amigável)
abcErrorBanco não encontrado (letras também caem no caminho de erro)
Página de resultado com 001 · BCO DO BRASIL S.A., nome completo Banco do Brasil S.A. e sede em Brasília-DF
Com o padStart, o Banco do Brasil aparece como 001.

No canvas, a seta verde mostra por onde cada execução passou: pela saída Success ou pela Error. O Buscar banco continua verde mesmo quando a API responde 404, porque o erro foi tratado.

Erros comuns (testados)

Todos foram reproduzidos no n8n de teste, com o código 999.

O que apareceCausaComo resolver
Formulário: “Problem submitting response”. Buscar banco vermelho: “The resource you are requesting could not be found” / “Código bancário não encontrado”O On Error ficou no padrão, Stop Workflow.Settings › On Error › Continue (using error output), e ligue um Form Ending na saída Error.
Página “Banco encontrado” vazia, com “undefined ·” e campos em brancoFoi escolhido só Continue. O erro segue pela saída normal, e o Mostrar banco tenta ler name e fullName que não existem.Troque por Continue (using error output).
Qualquer código mostra sempre “001 · BCO DO BRASIL S.A.”O campo do formulário foi renomeado (no teste, para “Código do banco”) e a URL continuou com $json.Codigo, que ficou vazio. O endereço termina em /v1/, a API devolve a lista de todos os bancos, e o formulário mostra o primeiro.Depois de renomear um campo, arraste-o de novo para a URL (ou corrija o nome na expressão).
Nó Buscar banco vermelho com o erro The resource you are requesting could not be found
Sem tratar o erro: o nó fica vermelho e o workflow para.
Página Banco encontrado com os campos vazios e a palavra undefined
Com Continue (sem o error output): parece sucesso, mas está tudo vazio.
Canvas do workflow de teste com o campo renomeado: o Buscar banco segue pela saída Success com 473 items
Campo renomeado: a URL perde o código e a API devolve a lista inteira (473 bancos no dia do teste).

Publicando: o endereço definitivo do formulário

Durante os testes, o formulário usa a Test URL, que só funciona com o editor aberto e depois de clicar em Execute workflow. Para deixar a consulta sempre disponível, clique em Publish e confirme.

Janela Publish workflow do n8n
A janela de publicação.

Depois, abra o nó do formulário e clique na aba Production URL: esse é o endereço definitivo.

Nó On form submission com a aba Production URL e o endereço do formulário em localhost
A Production URL aparece no primeiro nó depois do Publish.
Formulário aberto pela Production URL: 237 · BCO BRADESCO S.A., sede em Osasco-SP
Pela Production URL, sem o editor aberto: o código 237.

No computador ou num servidor?

No seu computador (Docker)Num servidor
Para que serveTeste e aprendizadoProdução
Quando funcionaSó com o computador e o Docker ligadosSempre: é uma máquina na internet ligada 24 horas
Quem abre o formulárioSó você, no próprio computador (endereço com localhost)Qualquer pessoa com o link, até pelo celular

Atenção: publicar no n8n do seu computador não é o mesmo que colocar em produção. O endereço com localhost não abre no celular nem em outro computador. Levar o n8n para um servidor é um passo que a série vai dar mais adiante, com calma.


JSON do workflow para importar

Se preferir, importe o workflow pronto. Baixe o arquivo abaixo ou copie o JSON. No n8n, crie um workflow novo e abra o menu … (três pontinhos) › Import › From file, ou cole o JSON no canvas com Ctrl+V. O workflow não usa credenciais, e o On Error já vem configurado.

O download é um .zip com o banco-pelo-codigo-n8n.json dentro. Depois de importar, clique em Publish para ganhar a sua Production URL.

{
  "name": "Banco pelo código",
  "nodes": [
    {
      "parameters": {
        "formTitle": "Banco pelo código",
        "formDescription": "Digite o código do banco (3 dígitos), como aparece no comprovante.",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Codigo",
              "placeholder": "341",
              "requiredField": true
            }
          ]
        },
        "options": {}
      },
      "id": "8b4c0000-1111-4d08-9b08-000000000001",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.6,
      "position": [
        0,
        0
      ],
      "webhookId": "8b4c0000-aaaa-4d08-9b08-0000000000f1"
    },
    {
      "parameters": {
        "url": "=https://brasilapi.com.br/api/banks/v1/{{ $json.Codigo }}",
        "options": {}
      },
      "id": "8b4c0000-2222-4d08-9b08-000000000002",
      "name": "Buscar banco",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.5,
      "position": [
        260,
        0
      ],
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "operation": "completion",
        "completionTitle": "Banco encontrado",
        "completionMessage": "={{ String($json.code).padStart(3, '0') }} · {{ $json.name }}\nNome completo: {{ $json.fullName }}\nISPB: {{ $json.ispb }}\nSede: {{ $json.localizacao_sede }}",
        "options": {}
      },
      "id": "8b4c0000-3333-4d08-9b08-000000000003",
      "name": "Mostrar banco",
      "type": "n8n-nodes-base.form",
      "typeVersion": 2.5,
      "position": [
        540,
        -100
      ],
      "webhookId": "8b4c0000-bbbb-4d08-9b08-0000000000f2"
    },
    {
      "parameters": {
        "operation": "completion",
        "completionTitle": "Banco não encontrado",
        "completionMessage": "=Não achamos nenhum banco com o código {{ $('On form submission').item.json.Codigo }}.\nConfira os números no comprovante (ex.: 001 Banco do Brasil, 341 Itaú, 260 Nubank) e tente de novo.",
        "options": {}
      },
      "id": "8b4c0000-4444-4d08-9b08-000000000004",
      "name": "Banco não encontrado",
      "type": "n8n-nodes-base.form",
      "typeVersion": 2.5,
      "position": [
        540,
        120
      ],
      "webhookId": "8b4c0000-cccc-4d08-9b08-0000000000f3"
    }
  ],
  "connections": {
    "On form submission": {
      "main": [
        [
          {
            "node": "Buscar banco",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buscar banco": {
      "main": [
        [
          {
            "node": "Mostrar banco",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Banco não encontrado",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1",
    "timezone": "America/Sao_Paulo"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}

Para ir além

  • Tratar erro nos outros tutoriais: no workflow da Tabela FIPE, ligue o On Error no Buscar anos e mostre “código FIPE não encontrado”. No CEP, faça o mesmo para CEP inexistente.
  • Tentar de novo antes de desistir: nas mesmas Settings, Retry On Fail repete a chamada algumas vezes. Bom para APIs instáveis (não adianta para código inexistente).
  • Avisar você quando der erro: em vez de (ou além de) mostrar a mensagem, ligue a saída Error num nó de notificação, como o ntfy do tutorial do lembrete.
  • Error Workflow: o n8n também permite um workflow inteiro só para erros de outros workflows, assunto para a trilha de Monitoramento.

Recapitulando

  • Para o n8n, uma resposta 404 da API é um erro, e o padrão é parar o workflow.
  • Em Settings › On Error, Continue (using error output) cria a saída Error; o nó passa a ter dois caminhos, Success e Error.
  • Continue (sem error output) segue pela saída normal com dados vazios: evite.
  • Cada saída leva ao seu Form Ending: uma página para o sucesso e uma mensagem amigável para o erro.
  • String($json.code).padStart(3, '0') mantém os zeros à esquerda do código.
  • Depois do Publish, a Production URL é o endereço definitivo do formulário.

Começamos pelo mais simples e estamos evoluindo juntos, um passo de cada vez. Tratar erros é o que separa uma automação de teste de uma automação de verdade, e vai aparecer em tudo daqui para a frente. E vêm aí as novas trilhas do site: Projetos reais, montados a partir de vagas de emprego, e Monitoramento, para deixar automações no ar 24 horas.


Fontes

Nó de saída · você concluiu a trilha Criar do zero

Próximo degrau: Projetos reais

Partimos da descrição de vagas reais que pedem n8n e transformamos cada requisito num workflow pronto, explicado nó a nó e campo a campo, no mesmo estilo dos tutoriais.