DFP, ITR e CVM: O Que Cada Relatório Significa e Como Acessar via API
Quem constrói modelos de valuation, plataformas de research ou ferramentas de análise para companhias listadas na B3 trabalha diariamente com os relatórios da CVM. O guia organiza o que é DFP ITR CVM, como o plano de contas se estrutura (3.01, 3.05, 3.11) e mostra o acesso programático às demonstrações financeiras CVM API via endpoint REST.
O que é a CVM e por que os relatórios existem
A Comissão de Valores Mobiliários (CVM), criada pela Lei 6.385/1976, regula o mercado de capitais brasileiro e exige que companhias abertas publiquem informações periódicas padronizadas. O regime atual está consolidado na Resolução CVM 80/2022, que substituiu a Instrução CVM 480/2009, e define dois grupos centrais de relatórios: o DFP (Demonstrações Financeiras Padronizadas, anual e auditado) e o ITR (Informações Trimestrais, com revisão limitada). Ambos seguem o mesmo plano de contas hierárquico e estão disponíveis publicamente no portal CVM.
A padronização cumpre duas funções: assegurar comparabilidade entre empresas do mesmo setor e permitir agregação automatizada para regulação, supervisão e análise de mercado. Para o analista, isso significa que o código de conta 3.01 (Receita) tem o mesmo significado conceitual em PETR4, ITUB4 e WEGE3, com adaptações específicas para bancos e seguradoras conforme detalhado na Circular Susep 517/2015 e nas normas COSIF do Banco Central. A consequência prática é poderosa: qualquer pipeline de análise fundamentalista no Brasil parte do mesmo plano de contas oficial.
DFP: o relatório anual completo
A DFP é o conjunto anual de demonstrações financeiras padronizadas, auditado por auditor independente registrado na CVM. A entrega ocorre em até três meses após o encerramento do exercício social, conforme art. 28 da Resolução CVM 80/2022. Para a maioria das companhias brasileiras com exercício alinhado ao ano civil, isso significa publicação entre fevereiro e março do ano seguinte.
O conteúdo abrange as cinco demonstrações contábeis fundamentais (BPA, BPP, DRE, DFC, DVA), notas explicativas, relatório da administração, parecer do auditor independente, formulário de remuneração de administradores, parecer do conselho fiscal quando aplicável e proposta de destinação do lucro. A DFP é a fonte primária para qualquer análise anual rigorosa, porque consolida valores ao longo do exercício inteiro e foi sujeita ao maior nível de escrutínio externo.
Companhias com ano fiscal divergente do calendário civil (poucas, mas existem, como algumas concessionárias e empresas com matriz estrangeira) publicam a DFP em janelas específicas, sempre dentro dos três meses regulamentares. A bolsai resolve esse detalhe automaticamente via reference_date do registro.
ITR: o relatório trimestral com revisão limitada
O ITR (Informações Trimestrais) cobre os três primeiros trimestres do exercício social: Q1 (encerrado em 31/03), Q2 (30/06) e Q3 (30/09). O prazo de entrega é de 45 dias após o fim do trimestre, regulado pelo art. 29 da Resolução CVM 80/2022. O auditor independente faz revisão limitada (não auditoria completa), com escopo reduzido, o que justifica o prazo menor.
Não existe ITR para o quarto trimestre porque os dados do 4º trimestre são incorporados à DFP anual auditada, que substitui a função informativa do ITR daquele período. Esse detalhe importa para construção de séries temporais: para obter o valor do 4º trimestre isoladamente, o cálculo correto é DFP anual menos a soma dos ITRs Q1, Q2 e Q3 do mesmo ano. A bolsai expõe ambos os granulados via report_type=DFP ou report_type=ITR no endpoint /financials/{ticker}.
A diferença prática entre DFP e ITR vai além do prazo. Notas explicativas no ITR costumam ser mais sucintas, o relatório da administração não é obrigatório no formato completo e o nível de detalhe em segmentos operacionais pode ser menor. Para indicadores quantitativos contábeis, contudo, a estrutura de contas é idêntica.
| Característica | DFP | ITR |
|---|---|---|
| Periodicidade | Anual | Trimestral (Q1, Q2, Q3) |
| Prazo de entrega | 3 meses após exercício | 45 dias após trimestre |
| Tipo de exame | Auditoria completa | Revisão limitada |
| Notas explicativas | Completas | Resumidas |
| Relatório da administração | Obrigatório | Não obrigatório no formato completo |
| Marco regulatório | Resolução CVM 80/2022, art. 28 | Resolução CVM 80/2022, art. 29 |
| Parâmetro na API | report_type=DFP | report_type=ITR |
Formulário de Referência e Comunicados ao Mercado
O Formulário de Referência (FRE) é o documento cadastral anual da companhia aberta, distinto da DFP. Seu conteúdo não é contábil-financeiro no sentido estrito: contém histórico da emissora, estrutura societária e de controle, composição do capital, descrição dos negócios, fatores de risco, política de dividendos e a remuneração da administração. A entrega ocorre até cinco meses após o encerramento do exercício, sob a Resolução CVM 80/2022. O FRE é a fonte primária para análise qualitativa profunda, due diligence e construção de cenários de risco governança.
Os Comunicados ao Mercado e Fatos Relevantes seguem outro regime: a Resolução CVM 44/2021 obriga a divulgação imediata de qualquer ato ou fato relevante que possa influir na cotação ou na decisão de investidores. Não têm periodicidade fixa, surgem conforme o evento, e abrangem aquisições, alienação de ativos, mudança de auditor, abertura de capital, distribuição extraordinária de dividendos e qualquer evento material.
A bolsai concentra a exposição programática em dados quantitativos derivados de DFP/ITR (demonstrações) e em séries de proventos, preços e fundamentos. Informações qualitativas do FRE e textos completos de fatos relevantes permanecem acessíveis no portal CVM (sistemas.cvm.gov.br) e nos sites de RI das companhias.
Os cinco tipos de demonstração e a estrutura dos códigos de conta
Cada relatório (DFP ou ITR) carrega cinco tipos de demonstração, cada um com um plano de contas próprio identificado por statement_type na API:
statement_type | Nome completo | Prefixo do código |
|---|---|---|
BPA | Balanço Patrimonial Ativo | 1.xx |
BPP | Balanço Patrimonial Passivo | 2.xx |
DRE | Demonstração do Resultado do Exercício | 3.xx |
DFC_MI | Demonstração do Fluxo de Caixa (Método Indireto) | 6.xx |
DVA | Demonstração do Valor Adicionado | 7.xx |
A estrutura é hierárquica. A conta 3.01 é Receita de Venda de Bens e Serviços (linha de topo da DRE); 3.01.01, 3.01.02 etc. são suas subcontas. O nível de detalhe varia por setor: empresas com múltiplas linhas de negócio frequentemente quebram receita em quatro ou cinco subcontas; empresas monoproduto ficam em uma única linha.
Algumas contas-âncora aparecem com frequência em modelos de valuation e merecem memorização. A tabela abaixo cobre as mais consumidas:
| Código | Conta | Uso típico |
|---|---|---|
3.01 | Receita de Venda de Bens e/ou Serviços | Top-line, base de margens |
3.02 | Custo dos Bens e/ou Serviços Vendidos | Cálculo de margem bruta |
3.03 | Resultado Bruto | Lucro bruto, base de SG&A |
3.04 | Despesas/Receitas Operacionais | SG&A e outros operacionais |
3.05 | Resultado Antes do Resultado Financeiro e Tributos | EBIT reportado (vide nota) |
3.06 | Resultado Financeiro Líquido | Despesa/receita financeira |
3.07 | Resultado Antes dos Tributos sobre o Lucro | EBT |
3.08 | IR e CSLL | Tributação efetiva |
3.09 | Resultado Líquido das Operações Continuadas | Lucro de operações em curso |
3.11 | Lucro/Prejuízo Consolidado do Período | Lucro líquido total (TTM, LPA) |
O EBIT reportado em 3.05 inclui Outras Receitas e Outras Despesas operacionais não recorrentes que distorcem comparações intersetoriais e ao longo do tempo. Por isso a bolsai calcula EBIT operacional limpo como 3.03 menos 3.04, alinhado à definição da maioria dos manuais de valuation. A conta 3.11 é a escolhida para lucro líquido em métricas TTM porque consolida todas as operações (inclusive descontinuadas), consistente com a metodologia do Fundamentus e da prática de mercado.
Como acessar via API: o endpoint /financials/{ticker}
A bolsai expõe os relatórios brutos da CVM via endpoint GET /api/v1/financials/{ticker}. Cada linha retornada contém quatro campos essenciais: reference_date (data de referência), statement_type, account_code e value. O ticker resolve internamente para o cvm_code da emissora, abstraindo a diferença entre ações ordinárias, preferenciais e units do mesmo emissor.
Parâmetros suportados:
| Parâmetro | Valores | Padrão | Uso |
|---|---|---|---|
report_type | DFP ou ITR | DFP | Anual ou trimestral |
statement_type | BPA, BPP, DRE, DFC_MI, DVA | todos | Filtra por tipo de demonstração |
reference_date | YYYY-MM-DD | todas as datas | Filtra trimestre/ano específico |
limit | 1 a 5000 | 1000 | Máximo de linhas por requisição |
format | json ou csv | json | Formato de resposta |
Exemplo de consulta para a DRE anual mais recente da Petrobras:
import httpx
API_KEY = "sua_chave_aqui"
BASE = "https://api.usebolsai.com/api/v1"
HEADERS = {"X-API-Key": API_KEY}
# DRE consolidada anual da Petrobras
r = httpx.get(
f"{BASE}/financials/PETR4",
params={
"report_type": "DFP",
"statement_type": "DRE",
"reference_date": "2025-12-31",
},
headers=HEADERS,
)
data = r.json()
for item in data["statements"]:
code = item["account_code"]
if code in ("3.01", "3.03", "3.05", "3.07", "3.11"):
name = item["account_name"]
value = item["value"] / 1_000_000
print(f"{code:6} {name[:45]:45} R$ {value:>12,.0f} M")
A resposta vem ordenada por reference_date decrescente e depois por account_code. Para uma série completa multi-anual, basta omitir reference_date e expandir o limit. O cache interno do servidor mantém respostas válidas por 24 horas (ttl_seconds=86400), porque DFP e ITR não mudam após publicação.
Plano gratuito libera 200 requisições por dia
Suficiente para testar o endpoint /financials/{ticker} em toda a base. O plano Pro expande para 10.000 requisições e libera histórico completo. Comparar planos.
Combinando DFP e ITR para indicadores TTM
Indicadores TTM (Trailing Twelve Months) exigem o lucro, receita ou EBIT dos últimos 12 meses, e nem sempre essa janela coincide com um exercício fiscal completo. Para qualquer trimestre intermediário, o cálculo é:
TTM = DFP do ano anterior − ITR acumulado até o mesmo trimestre do ano anterior + ITR acumulado até o trimestre mais recente
Concretamente, em maio de 2026, se a última publicação é o ITR Q1 2026, o TTM de receita líquida (3.01) vale: DFP 2025 (receita do exercício 2025 completo) menos ITR Q1 2025 (receita acumulada nos três primeiros meses de 2025) mais ITR Q1 2026 (receita acumulada nos três primeiros meses de 2026). O resultado é a receita dos últimos 12 meses corridos, abril de 2025 a março de 2026.
Para contas de fluxo (DRE e DFC_MI), o cálculo TTM faz sentido. Para contas de estoque (BPA e BPP), o conceito não se aplica: ativos e passivos são valores em uma data específica, e o que importa é a foto mais recente, não uma janela de 12 meses. Para indicadores que misturam fluxo e estoque (como ROE = lucro TTM / patrimônio líquido médio), a prática usual é numerador TTM e denominador como média entre início e fim do período.
A bolsai automatiza esse cálculo em /fundamentals/{ticker}, expondo 27 indicadores TTM prontos. Para casos personalizados ou indicadores não cobertos, o /financials/{ticker} entrega os dados brutos para o cálculo direto.
Caso de uso: construindo um modelo de DCF
Um modelo de Fluxo de Caixa Descontado parte de séries históricas plurianuais. O analista precisa de receita, EBIT, depreciação e amortização (D&A), CapEx, capital de giro e dívida bruta para os últimos cinco a dez anos. Com a API, essa coleta vira uma chamada:
import httpx
import pandas as pd
BASE = "https://api.usebolsai.com/api/v1"
HEADERS = {"X-API-Key": "sua_chave_aqui"}
# Histórico de 10 anos de DRE consolidada para WEGE3
r = httpx.get(
f"{BASE}/financials/WEGE3",
params={
"report_type": "DFP",
"statement_type": "DRE",
"limit": 5000,
},
headers=HEADERS,
)
df = pd.DataFrame(r.json()["statements"])
df["year"] = pd.to_datetime(df["reference_date"]).dt.year
# Pivot: ano nas colunas, conta nas linhas
pivot = df.pivot_table(
index=["account_code", "account_name"],
columns="year",
values="value",
aggfunc="first",
)
# Receita e EBIT operacional (3.03 - 3.04)
receita = pivot.loc["3.01"] / 1_000_000
bruto = pivot.loc["3.03"] / 1_000_000
opex = pivot.loc["3.04"] / 1_000_000
ebit_limpo = bruto + opex # 3.04 é negativo
for ano in sorted(receita.dropna().index)[-5:]:
print(f"{ano} Receita: R$ {receita[ano]:>10,.0f} M EBIT: R$ {ebit_limpo[ano]:>8,.0f} M")
Com a série em mãos, o analista projeta crescimento futuro, aplica a taxa de desconto (WACC) e desconta o fluxo de caixa livre estimado. O passo seguinte costuma puxar D&A do DFC (conta 6.01.01.04 na maioria dos setores), CapEx (6.02 no DFC) e variação de capital de giro do BPA/BPP. Cada um desses números sai do mesmo endpoint trocando o statement_type.
Comparações trimestrais para identificar tendências (aceleração ou desaceleração) seguem o mesmo padrão, apenas com report_type=ITR e janela móvel de quatro trimestres. Construir um pipeline que consome /financials/ diariamente, popula um banco columnar (DuckDB, ClickHouse, BigQuery) e roda backtests com séries TTM passa a ser engenharia de dados convencional, sem scraping nem parsing de PDF.
Bancos, seguradoras e setores regulados: o que muda
Instituições financeiras seguem o COSIF, plano de contas paralelo do Banco Central, que se traduz nos arquivos CVM em códigos específicos. Diferenças práticas: receita aparece como "Receita de Intermediação Financeira" (ainda em 3.01, mas com semântica distinta de receita de produto), o lucro bruto perde sentido (não há custo dos produtos vendidos da forma usual), e o patrimônio líquido aparece em 2.07/2.08 em vez de 2.03 conforme detalhado nos docs da API.
Seguradoras seguem o plano de contas Susep mas, na entrega CVM, aparecem com estrutura parecida à de bancos. Conglomerados financeiros (Itaú Unibanco, Bradesco) consolidam atividades de seguros, bancos e gestão de ativos em uma única DFP. Compares intersetoriais entre WEGE3 e ITUB4 usando 3.05 simples produzem números enganosos: a forma correta é tratar bancos e seguradoras em um trilho analítico próprio.
Concessionárias de utilities (energia, saneamento) e companhias com participação relevante em joint ventures complicam ainda mais: contas de equivalência patrimonial inflam o resultado em 3.05 sem refletir geração operacional. O ajuste para EBIT operacional limpo, como a bolsai aplica, mitiga parte do problema; modelos rigorosos costumam revisar caso a caso.
Limitações dos dados CVM
A padronização CVM tem duas limitações conhecidas que o analista precisa endereçar. A primeira é o reporte inconsistente do número de ações: algumas companhias reportam em unidades, outras em milhares ou milhões, sem indicar a escala no plano de contas. A bolsai aplica uma heurística que testa multiplicadores 1, 1.000 e 1.000.000 contra a razoabilidade do P/VP resultante e cruza com o dado da B3 (quando disponível) como verdade terreno. A documentação do método está em docs.bolsai.
A segunda é a republicação de exercícios anteriores. Quando uma empresa altera política contábil ou identifica erro, republica DFPs anteriores ajustadas. A bolsai mantém a versão mais recente publicada por padrão; séries reconstituídas a partir de versões originais devem usar a publicação histórica equivalente. Para análises forenses ou auditoria reversa, vale consultar o sistema da CVM diretamente.
Atrasos e retificações de prazo ocorrem ocasionalmente: a CVM publica deliberações com prazo estendido, especialmente para empresas em recuperação judicial ou com mudança de auditor. O ETL da bolsai re-processa CVMs republicadas semanalmente, então o intervalo entre republicação e disponibilidade na API gira em torno de sete dias.
Perguntas frequentes
Qual a diferença entre DFP e ITR?
DFP (Demonstrações Financeiras Padronizadas) é o relatório anual, auditado e completo, entregue à CVM até três meses após o encerramento do exercício social conforme a Resolução CVM 80/2022. ITR (Informações Trimestrais) é o relatório dos três primeiros trimestres, com revisão limitada do auditor e prazo de 45 dias após o encerramento do trimestre. O quarto trimestre não tem ITR porque é absorvido pela DFP anual. Ambos seguem o mesmo plano de contas padronizado e cobrem BPA, BPP, DRE, DFC e DVA.
O que significa o código de conta 3.05 na CVM?
A conta 3.05 representa o Resultado Antes do Resultado Financeiro e Tributos. Na nomenclatura corrente, equivale ao EBIT operacional reportado pela própria empresa segundo o plano de contas CVM. Na prática, a bolsai recalcula o EBIT como Lucro Bruto (3.03) menos Despesas Operacionais (3.04), porque 3.05 frequentemente inclui Outras Receitas e Outras Despesas operacionais não recorrentes que distorcem comparações intersetoriais.
Como acessar as demonstrações financeiras via API?
O endpoint GET /api/v1/financials/{ticker} retorna BPA, BPP, DRE, DFC_MI e DVA da empresa em formato JSON, com cada linha contendo reference_date, statement_type, account_code, account_name e value. Parâmetros opcionais: report_type (DFP ou ITR, padrão DFP), statement_type (filtro por tipo), reference_date (data específica) e limit (até 5000 linhas). Autenticação via header X-API-Key. Plano gratuito libera 200 requisições por dia.
Como combinar DFP e ITR para calcular TTM?
Para indicadores TTM (Trailing Twelve Months), a fórmula é DFP do ano fiscal anterior menos ITR acumulado do mesmo trimestre do ano anterior mais ITR acumulado do trimestre mais recente. Exemplo prático: se a empresa publicou ITR Q3 2025 e DFP 2024, o TTM até setembro de 2025 vale DFP 2024 menos ITR Q3 2024 mais ITR Q3 2025. A API bolsai aplica essa lógica automaticamente no endpoint /fundamentals/{ticker} para todos os indicadores baseados em fluxo (receita, EBIT, lucro líquido).
O que é o Formulário de Referência e onde encontrar?
O Formulário de Referência (FRE) é o documento de cadastro anual da companhia aberta exigido pela CVM, disciplinado pela Resolução CVM 80/2022. Contém informações sobre administradores, controle acionário, fatores de risco, política de dividendos e remuneração da diretoria. Não é uma demonstração contábil. O acesso é gratuito no portal CVM (sistemas.cvm.gov.br) e no site da empresa, em formato PDF ou XML estruturado. A bolsai expõe os dados quantitativos via endpoints específicos.
Leia também
- Análise fundamentalista para iniciantes: o framework de quatro dimensões e os indicadores essenciais (P/L, P/VP, ROE, dívida).
- Alternativa ao Fundamentus com API oficial: benchmark de precisão e guia de migração de scraping para API REST.
- API gratuita da B3 com 200 requisições por dia: setup completo, primeiros endpoints e plano de adoção em três fases.
- Screener de ações brasileiras em Python: filtros combinados sobre múltiplos fundamentalistas e backtest do funil.
- Backtest de estratégias com dados históricos: séries de preço, retorno ajustado e métricas de risco como Sharpe e drawdown.
- Agente de IA para análise de ações via Claude + MCP: como expor a API ao OAuth2 do ChatGPT e Claude Desktop.
- SELIC, IPCA e CDI via API: dados macroeconômicos do Banco Central para taxa livre de risco em modelos de valuation.
Disclaimer
Este conteúdo tem caráter educativo e não constitui aconselhamento contábil, jurídico ou de investimento. Códigos de conta, prazos regulatórios e estruturas de demonstrações financeiras refletem o estado documentado em maio de 2026, com base na Resolução CVM 80/2022. A CVM atualiza periodicamente o plano de contas e a documentação correlata; consultar o portal CVM antes de qualquer decisão de modelagem ou auditoria. Para fontes primárias, a CVM Sistemas mantém os documentos integrais (DFP, ITR, FRE, fatos relevantes) das companhias abertas.
por bolsai • 11 de maio de 2026 • 13 min de leitura
Comece agora
A conta gratuita libera 200 requisições por dia para testar /financials/{ticker} com qualquer ticker da B3. O plano Pro expande limites e mantém o mesmo endpoint, mesmo schema, mesma autenticação. Documentação completa traz exemplos para BPA, BPP, DFC_MI e DVA.