Portal Flotom API da Contabilidade
OpenAPI 3.0.3 versão 1.0 Somente leitura BRL

O movimento do mês, já conferido

Contas com saldo de abertura e de fechamento, títulos com os valores decompostos em bruto, multa, juros e desconto, as baixas com o identificador da linha do extrato bancário — e uma conferência que diz o que está faltando e onde consertar no portal. Uma chamada por mês.

1

Peça o token

A quem administra o portal. O portal guarda só o hash — se perder, pede outro.

2

Confira que ele vale

acao=saude diz o que o token enxerga e quantas chamadas sobram no minuto.

3

Puxe o mês

acao=lancamentos&competencia=2026-09. Sem competência, vem o mês passado.

curl -H "Authorization: Bearer SEU_TOKEN" \
  "https://upsyconsult.com.br/api_ctb.php?acao=lancamentos&competencia=2026-09"

Dinheiro vem como texto — e isso é de propósito

Todo campo de valor vem como string decimal com duas casas e ponto: "7805.58", nunca 7805.58 como número.

Ponto flutuante não tem o número 7805,58 — tem o vizinho binário mais próximo. Dependendo da configuração do PHP do servidor, o JSON sai assim:

"valor_total": 7805.579999999999927240423858165740966796875 "valor_total": "7805.58"

Aconteceu de verdade, na primeira chamada. Num relatório que vai para a contabilidade é inaceitável, e some ou volta conforme o servidor. String decimal é inequívoca, não depende de configuração nenhuma, e jq, Excel e qualquer robô leem sem susto.

No seu código, converta para decimal — não para float.

LinguagemFaça assim
PythonDecimal(l["valor_total"])
PHPbcadd($l['valor_total'], '0', 2)
JavaScriptuma biblioteca de decimal, ou trate como texto
Excelimporta direto, é só marcar a coluna como número

O que ainda não existe

Escrita — a contabilidade devolver a classificação contábil para o portal — está desenhada e entra numa versão 2. A versão 1 continua funcionando quando isso acontecer: o campo classificacao de cada lançamento já vem na resposta, hoje sempre null, justamente para não quebrar seu código no dia em que passar a vir preenchido.

Por ora, qualquer método que não seja GET responde 405 metodo_nao_permitido — e diz isso, em vez de só devolver o número.

A referência

Gerada do openapi.yaml, que é o contrato. Clique em Authorize, cole o token, e o Try it out funciona contra o portal de verdade — nenhuma chamada daqui altera nada, a versão 1 é somente leitura.

A referência não carregou

A página abriu, mas o openapi.yaml não veio. Quase sempre é um destes:

  • os quatro arquivos precisam estar na mesma pasta: index.html, openapi.yaml, swagger-ui-bundle.js e swagger-ui.css;
  • a página foi aberta direto do disco (file://) em vez de pelo endereço do site — o navegador bloqueia a leitura do YAML assim;
  • o servidor não entrega arquivos .yaml.