Referência da API REST

Converta extratos bancários OFX, QFX, QBO e PDF para JSON, Excel ou CSV de forma programática.

Visão geral

A API REST do OFXConverter permite converter arquivos de extrato bancário a partir das suas próprias aplicações. Envie um arquivo e receba as transações extraídas em JSON estruturado ou como um arquivo Excel ou CSV codificado em Base64. A API está disponível para contas em um plano pago.

A API requer um plano premium ativo. Gere sua chave de API na página de perfil do seu painel.

URL base

Todos os endpoints são relativos à seguinte URL base. Todas as requisições devem ser feitas via HTTPS.

https://www.ofxconverter.com/api/v1

Autenticação

Autentique cada requisição enviando sua chave de API no cabeçalho Authorization. Use o valor bruto da chave, sem prefixo Bearer nem esquema.

Authorization: YOUR_API_KEY

Uma requisição sem chave retorna NO_API_KEY; uma chave inválida, ou uma chave de uma conta sem plano premium, retorna UNAUTHORISED. Ambas são enviadas com HTTP 401.

Limites e cotas

O uso é limitado pela cota mensal de conversões do seu plano: Start 500, Pro 1.500, Enterprise 5.000 conversões por mês. O tamanho máximo de arquivo é 10 MB. Os arquivos enviados e gerados são excluídos automaticamente após cerca de 30 minutos.

Plano Conversões mensais Tamanho máximo do arquivo
Start50010 MB
Pro1,50010 MB
Enterprise5,00010 MB

Endpoints

Requisições que enviam um arquivo usam multipart/form-data. O campo opcional output seleciona o formato da resposta: csv ou excel retornam o arquivo convertido como uma string Base64, enquanto qualquer outro valor (ou omiti-lo) retorna as transações extraídas em JSON.

post /api/v1/conversion

Converte um arquivo OFX, QFX ou QBO em uma única requisição.

Parâmetros da requisição

NomeLocalTipoObrigatórioDescrição
AuthorizationheaderstringSimSua chave de API.
fileform-datafileSim.ofx, .qfx ou .qbo, até 10 MB.
outputform-datastringNãocsv, excel, ou omita para JSON.

Exemplo de requisição

curl -X POST "https://www.ofxconverter.com/api/v1/conversion" \
  -H "Authorization: YOUR_API_KEY" \
  -F "file=@statement.ofx" \
  -F "output=excel"

Exemplo de resposta (excel / csv)

{
  "error": false,
  "message": "SUCCESS",
  "fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "extension": "ofx",
  "filename": "statement.ofx",
  "convertedFile": "UEsDBBQABgAIAAAAIQ...=="
}

Exemplo de resposta (json)

{
  "error": false,
  "message": "SUCCESS",
  "fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "extension": "ofx",
  "filename": "statement.ofx",
  "convertedFile": {
    "header": {
      "status": "OK",
      "language": "ENG",
      "serverDate": "2024-01-31T00:00:00",
      "bankName": "Bank of Example",
      "currency": "USD",
      "hasInvestiment": false
    },
    "bankAccount": {
      "type": "CHECKING",
      "agencyCode": "0001",
      "bank": { "code": 1, "name": "Bank of Example" },
      "accountCode": "1234567"
    },
    "status": "OK",
    "initialDate": "2024-01-01T00:00:00",
    "finalDate": "2024-01-31T00:00:00",
    "transactions": [
      {
        "type": "DEBIT",
        "date": "2024-01-05T00:00:00",
        "value": -42.5,
        "id": "202401050001",
        "uniqueID": "202401050001",
        "description": "Coffee Shop",
        "checksum": 849302145,
        "units": null,
        "price": null,
        "comission": null,
        "secName": null,
        "ticker": null
      }
    ]
  }
}
post /api/v1/upload

Armazena um arquivo para conversão posterior. Retorna um fileID que você pode passar para GET /api/v1/download. Nenhuma conversão é realizada nesta etapa.

Parâmetros da requisição

NomeLocalTipoObrigatórioDescrição
AuthorizationheaderstringSimSua chave de API.
fileform-datafileSim.ofx, .qfx ou .qbo, até 10 MB.

Exemplo de requisição

curl -X POST "https://www.ofxconverter.com/api/v1/upload" \
  -H "Authorization: YOUR_API_KEY" \
  -F "file=@statement.ofx"

Exemplo de resposta

{
  "error": false,
  "message": "SUCCESS",
  "fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "extension": "ofx",
  "filename": "statement"
}
get /api/v1/download

Converte um arquivo armazenado anteriormente com POST /api/v1/upload. O arquivo deve pertencer à conta autenticada.

Parâmetros da requisição

NomeLocalTipoObrigatórioDescrição
AuthorizationheaderstringSimSua chave de API.
fileIDquerystring (GUID)SimID retornado por /upload.
outputquerystringNãocsv, excel, ou omita para JSON.

Exemplo de requisição

curl "https://www.ofxconverter.com/api/v1/download?fileID=3f2504e0-4f89-41d3-9a0c-0305e82c3301&output=csv" \
  -H "Authorization: YOUR_API_KEY"

Exemplo de resposta

O corpo da resposta tem o mesmo formato de POST /api/v1/conversion. Além dos erros de autenticação, download retorna NO_FILE_ID quando o fileID está ausente e FILE_NOT_FOUND quando não existe arquivo correspondente para sua conta (ambos com HTTP 401).

post /api/v1/pdf/conversion beta

Converte um extrato bancário em PDF. Extratos de bancos suportados são analisados diretamente; os demais utilizam OCR e extração por IA, portanto os resultados podem variar. Este endpoint é experimental e pode mudar.

Parâmetros da requisição

NomeLocalTipoObrigatórioDescrição
AuthorizationheaderstringSimSua chave de API.
fileform-datafileSim.pdf, até 10 MB.
outputform-datastringNãocsv, excel, ou omita para JSON.

Exemplo de requisição

curl -X POST "https://www.ofxconverter.com/api/v1/pdf/conversion" \
  -H "Authorization: YOUR_API_KEY" \
  -F "file=@statement.pdf"

Exemplo de resposta (json)

{
  "error": false,
  "message": "SUCCESS",
  "fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "extension": "pdf",
  "filename": "statement.pdf",
  "convertedFile": {
    "transactions": [
      {
        "date": "2024-01-05T00:00:00",
        "value": -42.5,
        "description": "Coffee Shop",
        "type": "DEBIT"
      }
    ]
  }
}

Esquema de resposta

Para saída em JSON, os endpoints de conversão OFX e download retornam o extrato extraído em convertedFile com a seguinte estrutura.

CampoTipoDescrição
header.bankNamestringNome do banco a partir do extrato.
header.currencystringMoeda do extrato (ex.: USD).
header.serverDatedatetimeData reportada pelo servidor do banco.
header.hasInvestimentbooleantrue quando o extrato contém transações de investimento.
bankAccount.typestringTipo de conta (ex.: CHECKING).
bankAccount.bank.codeintegerCódigo do banco.
bankAccount.accountCodestringNúmero da conta.
initialDate / finalDatedatetimePeríodo do extrato.
transactions[]arrayLista de transações (veja abaixo).
transactions[].datedatetimeData da transação.
transactions[].valuenumberValor (negativo para débitos).
transactions[].typestringTipo da transação.
transactions[].descriptionstringDescrição da transação.
transactions[].idstringIdentificador da transação no arquivo.
transactions[].checksumintegerChecksum usado para detectar duplicatas.
transactions[].units / price / comissionnumberCampos de investimento; null para transações comuns.
transactions[].secName / tickerstringNome do ativo e ticker para transações de investimento.

O endpoint de PDF retorna um formato mais simples: convertedFile.transactions[] com date, value, description e type.

Respostas de erro

Erros retornam um corpo JSON com "error": true e um código message. Erros relacionados a arquivo também repetem fileID, extension e filename.

{
  "error": true,
  "message": "FILE_NOT_SUPPORTED",
  "fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "extension": "txt",
  "filename": "statement.txt"
}
MensagemStatus HTTPSignificado
NO_API_KEY401O cabeçalho Authorization está ausente.
UNAUTHORISED401Chave inválida, ou a conta não é premium.
NO_FILE_ID401download foi chamado sem um fileID.
FILE_NOT_FOUND401Nenhum arquivo com esse fileID existe para sua conta.
FILE_NOT_UPLOADED400Nenhum arquivo foi incluído na requisição.
FILE_NOT_SUPPORTED400A extensão do arquivo não é aceita por este endpoint.
FILE_TOO_BIG400O arquivo excede o limite de 10 MB.
BAD_FILE_FORMAT400O arquivo não pôde ser processado (ex.: um arquivo OFX inválido).
SERVER_ERROR400Ocorreu um erro inesperado ao processar o arquivo.