GuiasIntegraçãoAtualizado em

Como integrar o extrato bancário com o ERP

Existem três formatos para levar o extrato bancário ao ERP: OFX, que todo banco brasileiro exporta e serve para conciliação; CNAB retorno, que traz a baixa de títulos e cobrança; e API de Open Finance, que elimina o download manual. OFX resolve a maioria dos casos, desde que a rotina use o identificador da transação para não duplicar lançamento.

OFX não é XML, e é aí que a maioria trava

A versão do OFX que os bancos brasileiros exportam na prática é a 1.x, que usa uma sintaxe parecida com SGML: várias tags não têm fechamento. Jogar esse arquivo num parser de XML gera erro de documento malformado, e muita gente conclui que o arquivo do banco veio corrompido.

Use uma biblioteca de OFX de verdade, ou normalize o arquivo antes de tratar. A versão 2.x do OFX é XML válido, mas ainda é minoria no que os bancos daqui entregam.

O segundo detalhe é a codificação de caracteres. Boa parte dos arquivos vem em ISO-8859-1 ou cp1252, não em UTF-8. Ler como UTF-8 sem declarar a codificação estraga acento em histórico de lançamento e, dependendo da linguagem, derruba a leitura.

O identificador da transação é o que impede duplicidade

Todo lançamento no OFX carrega um identificador único atribuído pelo banco, o FITID. Ele é a chave para tornar a importação idempotente: antes de gravar, verifique se aquele identificador já existe no ERP e ignore se existir.

Sem isso, reimportar o mesmo arquivo duplica lançamento, e reimportar é o caso comum, não a exceção. As pessoas baixam o extrato de novo quando o período veio incompleto, quando o processo falhou no meio, ou simplesmente quando não lembram se já importaram.

Cuidado com um detalhe: alguns bancos reemitem o identificador quando a transação muda de status, por exemplo de lançamento pendente para efetivado. Vale guardar também data e valor para detectar esse caso em vez de tratar como transação nova.

OFX, CNAB ou API: cada um resolve uma coisa

Confundir os três é a causa mais comum de projeto que entrega a coisa errada. OFX é extrato: o que entrou e saiu da conta. CNAB retorno é cobrança: quais boletos foram pagos, com qual valor e qual tarifa. API de Open Finance é o mesmo extrato, sem o download manual.

Se o objetivo é conciliar o caixa, você quer OFX ou API. Se o objetivo é baixar título a receber automaticamente, você quer CNAB retorno. Muitas empresas precisam dos dois, e são duas rotinas diferentes.

A regra de casamento é onde o projeto vive ou morre

Casar por valor exato e data exata funciona no ambiente de teste e falha na produção. Pagamento cai um dia útil depois, tarifa bancária muda o valor em centavos, e um lote de recebimentos vira um crédito só no extrato.

Uma regra que sobrevive ao mundo real trabalha em camadas: primeiro tenta o casamento exato por identificador ou documento, depois por valor com janela de data, depois por valor aproximado dentro de uma tolerância. O que não casar em nenhuma camada vai para revisão humana.

A meta não é casar 100% de forma automática. É reduzir a fila de revisão manual a um volume que uma pessoa resolve em minutos, com confiança de que o que foi casado automaticamente está certo. Foi esse desenho em camadas que aplicamos no case de automação de conciliação financeira, uma ferramenta desktop offline que concilia extratos em PDF em segundos.

Passo a passo da importação por OFX

  1. Colete um extrato real de cada banco. Baixe um arquivo de cada banco que a empresa usa e inspecione a versão do OFX e a codificação de caracteres. Bancos diferentes entregam variações diferentes do mesmo formato.
  2. Leia com biblioteca de OFX, não com parser de XML. Use uma biblioteca que entenda a sintaxe SGML do OFX 1.x, ou normalize o arquivo antes. Declare explicitamente a codificação na leitura para não perder acento.
  3. Extraia identificador, data, valor e histórico. De cada lançamento, guarde o identificador da transação, a data, o valor com sinal, o tipo e o texto do histórico. Persista o identificador com índice único.
  4. Torne a importação idempotente. Antes de gravar, verifique se o identificador já existe. Se existir, pule. Isso é o que permite reimportar o mesmo arquivo sem duplicar lançamento no ERP.
  5. Aplique a regra de casamento em camadas. Tente casar por documento, depois por valor com janela de data, depois por valor com tolerância. Registre por qual camada cada casamento passou, para auditar a qualidade depois.
  6. Separe a fila de exceções. Tudo que não casou vai para uma tela de revisão com o lançamento do banco de um lado e os candidatos do ERP do outro. A decisão do usuário deve alimentar a regra ao longo do tempo.
  7. Valide contra um fechamento conhecido. Rode a rotina sobre um mês já fechado manualmente e compare o resultado. Divergência aqui é barata de corrigir. Divergência descoberta no fechamento seguinte não é.

OFX, CNAB e Open Finance lado a lado

Os três levam dado do banco ao ERP, mas resolvem perguntas diferentes. A coluna de limite é a que mais importa na hora de escolher.

AbordagemCustoPrazoOnde para de servir
OFX baixado manualmenteBaixo: só o desenvolvimento da leitura1 a 2 semanasAlguém precisa baixar o arquivo todo dia. Formato varia entre bancos e o arquivo pode vir incompleto sem avisar.
CNAB retornoBaixo, porém com layout por banco1 a 3 semanasCobre cobrança, não o extrato completo. Cada banco tem sua variação do layout, então suportar cinco bancos é quase cinco trabalhos.
API de Open Finance ou agregadorAssinatura mensal por conta conectada1 a 2 semanasElimina o download manual, mas cria dependência e custo recorrente. Exige consentimento que precisa ser renovado.
Digitação manual no ERPZero em software, caro em horaImediatoErro de digitação e atraso de fechamento. Só sustentável em volume muito baixo, e é o cenário que a automação costuma substituir.

Perguntas frequentes

Porque o OFX 1.x usa sintaxe parecida com SGML, com tags sem fechamento, e não é XML válido. Um parser de XML rejeita o arquivo como malformado mesmo estando íntegro. Use uma biblioteca de OFX ou normalize o arquivo antes de tratar.
Use o identificador único da transação que vem em cada lançamento do OFX, o FITID. Grave com índice único e verifique a existência antes de inserir. Reimportação é o caso comum, não a exceção, então a rotina precisa ser idempotente por desenho.
OFX é o extrato da conta: tudo que entrou e saiu. CNAB retorno é o arquivo de cobrança: quais boletos foram pagos, com valor e tarifa. Para conciliar caixa você quer OFX. Para dar baixa em título a receber você quer CNAB. Muitas empresas precisam dos dois.
Vale quando o custo da pessoa que baixa arquivo todo dia supera a assinatura do agregador, ou quando o atraso do download manual atrapalha a operação. A contrapartida é custo recorrente, dependência de terceiro e consentimento que precisa ser renovado periodicamente.
Não necessariamente. Já entregamos conciliação como ferramenta desktop totalmente offline, em que extrato e lançamentos nunca saem da máquina do cliente. Se a política de segurança exige processamento local, isso é uma decisão de arquitetura tomada no início do projeto.

Referências

Quer isso rodando na sua operação?

O primeiro passo é um Diagnóstico: mapeamos o processo na sua operação e devolvemos escopo, prazo e preço antes de qualquer proposta.

Conhecer o Diagnóstico

Quero automatizar minha conciliação