Quando vale montar o OFX a partir de uma planilha
O caminho natural é converter o PDF do extrato direto para OFX. A planilha entra quando o dado não existe em PDF:
- O banco não emite um PDF utilizável — algumas fintechs, contas de adquirência e carteiras digitais só exportam Excel ou CSV.
- O dado nasceu em tabela — controles de caixa, repasses de marketplace e relatórios de recebíveis que nunca passaram por um extrato.
- Consolidação — juntar movimentações de origens diferentes num arquivo só.
O resultado é um OFX 1.0 em SGML, o dialeto que os ERPs brasileiros esperam. Para o caminho inverso, use o conversor de OFX para XLSX; para retoques num OFX que já existe, o editor de OFX resolve sem passar por planilha.
As colunas que a planilha precisa ter
Não existe template para baixar: o conversor acha o cabeçalho sozinho, varrendo as 30 primeiras linhas da aba — logotipo, título e linhas em branco acima da tabela não atrapalham. Ele usa a primeira aba cujo nome contenha transa, extrato ou lançamento; se nenhuma casar, usa a primeira aba do arquivo.
O nome de cada coluna precisa bater exatamente com um dos termos abaixo. Acentos e maiúsculas são ignorados (Descrição e descricao são a mesma coisa), mas aproximação não vale: Data Mov. e Valor Total não são reconhecidos.
| Coluna | Nomes aceitos (qualquer um deles) |
|---|---|
| Data obrigatória | data, date, data lançamento, data do lançamento, dt, dia, dtposted |
| Valor obrigatória | valor, amount, value, valor (r$), valor r$, valor (brl), trnamt |
| Descrição opcional | descrição, description, memo, histórico, detalhe, observação |
| Tipo opcional | tipo, type, trntype, natureza, d/c, c/d |
| FITID opcional | fitid, id, id (fitid), identificador, transaction id |
Só Data e Valor são de fato obrigatórias: uma planilha com essas duas converte, ainda que o histórico saia vazio. Colunas extras (saldo, categoria, centro de custo) são ignoradas, e linhas sem data válida ou sem número no valor são descartadas em silêncio — por isso rodapés de total e subtotais não viram lançamento.
Sinal e tipo: o erro que mais aparece
A dúvida número um: marco o débito com valor negativo ou com uma coluna dizendo "D"? Qualquer um funciona — o que quebra é misturar os dois sem saber quem ganha.
Sem coluna Tipo, o sinal manda: negativo vira DEBIT, positivo ou zero vira CREDIT. É o modo mais simples.
Com coluna Tipo, ela manda e o sinal é reescrito. Reconhecemos C, CREDIT e CRÉDITO (forçam o valor para positivo) e D, DEBIT e DÉBITO (forçam para negativo). Uma linha com valor -50,00 e tipo C sai no OFX como +50,00: a coluna vence a contradição.
Se o texto do Tipo não for nenhum desses — PIX, Transferência, Entrada —, ele é ignorado sem erro e a decisão volta ao sinal do valor. É o caso traiçoeiro: a coluna existe, parece funcionar, mas quem classifica é o sinal.
Outra armadilha: débito e crédito em duas colunas separadas. Esperamos uma única coluna Valor — consolide antes de enviar.
Datas: o campo que mais quebra (e por quê)
O detalhe que explica quase todo OFX com data errada: a planilha é lida em modo formatado, então o conversor recebe o texto que a célula exibe na tela, não o valor interno que o Excel guarda. A formatação da coluna deixa de ser cosmética e passa a ser o dado.
E toda data com barras é interpretada como dia/mês/ano. Numa planilha configurada em inglês, 3 de abril de 2026 aparece como 4/3/2026 — e é isso que chega aqui, virando 4 de março. Nenhum erro aparece; a ambiguidade do 03/04 só é percebida na conferência.
Formatos reconhecidos:
03/04/2026ou15/4/26— sempre dia/mês/ano (ano com dois dígitos vira 20xx);2026-04-03(ISO) — o mais seguro, porque não tem ambiguidade;20260403— o formato do próprio OFX;- número de série do Excel, quando a célula chega como número puro.
Uma ressalva pouco óbvia: use barras, não hífens. 03-04-2026 não casa com a regra de dia/mês e cai num interpretador genérico que lê à americana — 4 de março de novo. Na dúvida: dd/mm/aaaa ou ISO.
Números: por que 1.234 vira um real e vinte e três centavos
Os dois padrões de milhar e decimal são aceitos, decididos pelo separador que aparece por último: 1.234,56 e 1,234.56 resultam ambos em 1234,56. Símbolo de moeda e espaços somem, então R$ 1.234,56 passa. Negativo pode vir com sinal (-50,00) ou entre parênteses ((50,00)), como saem muitos relatórios contábeis.
A armadilha é o valor redondo com separador de milhar e sem centavos visíveis. 1.234 tem só um ponto e nenhuma vírgula — não há como saber se o ponto é milhar ou decimal. A leitura segue o padrão internacional e devolve 1,234: um real e vinte e três centavos no lugar de mil duzentos e trinta e quatro reais.
A defesa: mantenha a coluna Valor como número de verdade (não texto), num formato que mostre as duas casas decimais. 1.234,00 converte certo; 1.234, não.
O que o gerador preenche por você
Um OFX exige campos que a sua planilha provavelmente não tem. Eles são deduzidos:
- Período —
DTSTARTeDTENDsaem da menor e da maior data entre as transações válidas. - Identificador — sem coluna FITID, cada lançamento recebe a própria data (no formato AAAAMMDD) seguida da posição dele na lista:
202604031,202604052, e assim por diante. - Conta — sem informação,
BANKIDeACCTIDsaem como0, moedaBRLe conta corrente. - Histórico — truncado em 255 caracteres, o limite prático do campo.
Vale entender o FITID gerado: ele depende da ordem das linhas. Reconverta a planilha depois de inserir um lançamento no meio e todos os identificadores seguintes mudam — o sistema que já importou o arquivo anterior trata os mesmos lançamentos como novos e duplica a conciliação. Se a planilha for reimportada com frequência, traga uma coluna FITID própria e estável (o identificador que o seu sistema já usa serve).
Para preencher os dados da conta, crie uma segunda aba com informações, info, conta ou account no nome, em pares de chave e valor: Banco (vira o BANKID, só os dígitos), Conta (ACCTID), Moeda, Tipo de conta e, para fixar o período em vez de deduzi-lo, Início e Fim.
"Não foi possível identificar as colunas": causa e correção
A mensagem mais comum, e ela é sempre sobre o cabeçalho, nunca sobre os dados: nas 30 primeiras linhas da aba não houve uma linha contendo, ao mesmo tempo, um nome de coluna de data e um de valor da lista aceita. As causas, em ordem de frequência:
- O nome está fora da lista —
Movimentação,Data Mov.,Vlr. Renomeie:DataeValorresolvem. - Células mescladas no cabeçalho — a mesclagem esvazia as vizinhas e o nome sai da coluna certa. Desfaça.
- O cabeçalho está abaixo da linha 30 — apague as linhas de relatório acima da tabela.
- A aba lida foi outra — se a primeira aba for capa ou resumo, renomeie a dos lançamentos para
Transações, que ela ganha prioridade.
Duas mensagens vizinhas apontam para outro ponto. "Nenhuma transação válida foi encontrada": o cabeçalho foi achado, mas nenhuma linha tinha data e valor legíveis ao mesmo tempo — quase sempre a coluna de data exibindo algo que não é data. "Planilha vazia ou inválida": arquivo corrompido ou protegido por senha.
Deu certo? Confira mesmo assim o número de lançamentos, o período e a soma dos valores antes de importar. Vale a leitura do guia de erros comuns ao importar OFX.