Brazil Cash Flow Statement Disclosures API: Track Operating, Investing, and Financing Cash from CVM Filings
A Brazil cash flow statement disclosures API in the credit and equity-research sense is not a live bank-balance feed, a treasury workstation, or an engine that auto-computes free cash flow from consensus EBITDA. It is access to the CVM filings where Brazilian issuers publish the statement of cash flows (demonstração dos fluxos de caixa, DFC), capex and divestiture narrative, debt and dividend funding, and FX translation effects on cash — primary statements and explanatory notes in DFP and ITR (Informações Trimestrais, not US income tax returns), liquidity discussion in FRE, and event PDFs when refinancing, buybacks, or large capex programs move cash outside the normal calendar. apicvm lets you list those rows by ticker, download the original filing, and diff new document.id values on a watchlist during 3Q ITR season.
This guide shows which type values to query, annex filters for cash-flow PDFs, and how this hub differs from working capital notes, revenue recognition, and generic financial statements access.
The problem
Cash-flow surveillance splits into three stacks that English search results often merge:
- Market data terminals — show price, yield, and sometimes vendor-calculated FCF. They rarely store the issuer’s regulatory PDF with the full DFC, reconciliation to net income, and footnotes on non-cash adjustments.
- Periodic packages —
DFP,ITR, andFREwith operating/investing/financing lines, capex tables, and liquidity risk factors. Essential for commodity, utility, and capex-heavy issuers, but you still need ticker-first access and stable file IDs. - Event disclosures — fatos relevantes and shareholder notices when a debt issuance, dividend with leverage impact, or asset sale changes near-term cash.
Scraping the CVM portal works for one ticker and breaks on a diversified watchlist. Bulk open-data ZIPs are dataset-oriented, not ticker-first. You want GET /v1/documents with stable document.id, then GET /v1/documents/:id/file for the original PDF — scoped to cash flow workflows.
For dividend and buyback cash uses, cross-check Brazil dividend disclosures API and Brazil share buyback disclosures API. This guide focuses on the API list-and-download pattern for DFC and related annexes.
Which filing type carries cash flow detail?
Brazilian issuers do not expose a dedicated type=CASH_FLOW in the apicvm document list. Detail usually appears under:
type |
Role in cash flow workflows |
|---|---|
ITR / DFP |
Periodic financials — DFC, capex in investing activities, debt and equity flows in financing activities |
FRE |
Annual reference form — liquidity, leverage, and business-plan capex narrative |
FATO_RELEVANTE |
Material fact when refinancing, asset sales, or covenant breaches affect cash |
COMUNICADO_AO_MERCADO |
Occasional market communication when guidance cites cash burn or capex revision |
AVISO_AOS_ACIONISTAS |
Dividend and capital actions that define cash outflows to holders |
Practical rule: list latest ITR/DFP for each ticker during 3Q ITR season, filter annex rows whose name mentions fluxo de caixa / cash flow / DFC, poll FATO_RELEVANTE for debt and asset-sale keywords, and pull FRE once per year for structural liquidity context. After download, search PDF text for fluxo de caixa, DFC, operacional, investimento, financiamento, capex, CAPEX, juros, dividend, amortização, hedge, or caixa e equivalentes.
Issuer packaging varies: some filers embed the DFC inside a single financial-statements PDF; others split balance sheet, income statement, and cash flow into separate annex rows. Zero rows with a name filter does not mean the issuer omitted a DFC — broaden the list before download.
How apicvm helps
- Resolve the issuer —
GET /v1/companies/resolve - List periodic packages —
GET /v1/documentswithtype=ITRortype=DFPandyear - Narrow to cash-flow annexes —
nametokens such asFluxo,DFC, orCash - Optional section prefixes —
GET /v1/document-prefixeswhen you need a named slice inside a large PDF (filter by section name) - List event filings —
GET /v1/documentswithtype=FATO_RELEVANTE - Scope with
dateRef; sort withfield=dateRef&order=desc - Download the PDF —
GET /v1/documents/:id/file(no extraction credits) - Optional (Pro): page-level markdown —
POST /v1/document-text-extractionswith async callback
Auth: Authorization: Bearer or X-API-Key. Try VALE3 without a key via the demo API.
Setup
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
Step 1: List quarterly filings for a capex-heavy ticker
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=ITR&year=2025&perPage=10&field=dateRef&order=desc"
Response rows include stable id, dateRef, name, and nested company metadata. Use id as your cache key — not name, which can be long and encoding-sensitive.
Paginate with page= when meta.lastPage > 1. perPage maxes at 50.
Step 2: Filter annex rows that likely contain the DFC
curl -s -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=ITR&year=2025&perPage=50&name=Fluxo" \
| jq '.data[] | {id, type, dateRef, name}'
If that returns few rows, retry with name=Demonstra or list without name and inspect titles manually.
Step 4: Download the filing PDF
DOC_ID=123456
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents/$DOC_ID/file" -o cash-flow-statement.pdf
Store document.id in your warehouse. Re-download when the issuer replaces a filing; do not assume name alone is a stable key.
Step 5: Watchlist poll (Python sketch)
import os, re, requests
BASE = os.environ["APICVM_URL"]
KEY = os.environ["APICVM_KEY"]
HEADERS = {"Authorization": f"Bearer {KEY}"}
WATCH = ["PETR4", "VALE3", "WEGE3", "BBAS3"]
CF_RE = re.compile(
r"caixa|cash|fluxo|dfc|capex|debenture|emiss[aã]o|amortiz|refinanc|"
r"investimento|dividend|buyback|tesouraria",
re.I,
)
seen = set()
def list_events(ticker):
r = requests.get(
f"{BASE}/v1/documents",
headers=HEADERS,
params={
"ticker": ticker,
"types": "FATO_RELEVANTE,COMUNICADO_AO_MERCADO",
"year": 2025,
"perPage": 50,
"field": "dateRef",
"order": "desc",
},
timeout=60,
)
r.raise_for_status()
return r.json().get("data") or []
for ticker in WATCH:
for doc in list_events(ticker):
if doc["id"] in seen:
continue
if not CF_RE.search(doc.get("name") or ""):
continue
seen.add(doc["id"])
print(f"CF {ticker} {doc['dateRef']} {doc['name'][:70]}")
Wire this into GitHub Actions CVM filings monitor or extend the diff pattern from Brazil material facts monitoring API. For NLP over downloaded PDFs, see extract text from CVM PDFs for AI agents.
Where cash flow sits in the filings stack
| Layer | Types | Cash flow relevance |
|---|---|---|
| Periodic | ITR, DFP |
DFC, capex, debt service, dividends paid |
| Reference | FRE |
Liquidity, leverage, planned capex |
| Events | FATO_RELEVANTE, COMUNICADO_AO_MERCADO |
Refinancing, asset sales, covenant cash tests |
| Holder notices | AVISO_AOS_ACIONISTAS |
Dividend and capital actions with cash impact |
Brazil regulatory filings API explains the full layer map. Pair DFC pulls with quarterly ITR monitoring during 3Q ITR season (typically Oct–Nov). When operating cash ties to receivables and inventory, cross-check Brazil working capital disclosures API. When net income and cash diverge because of revenue timing, see Brazil revenue recognition disclosures API. For the broader Brazil financial data API pillar, treat cash flow as one statement cluster inside periodic filings.
Current limitations
- Documents, not parsed cash engines — apicvm does not return operating, investing, or financing line items parsed from tables or compute FCF.
- Annex naming varies —
namefilters are heuristic; some DFC PDFs share a generic financial-statements title. - Polling, not push — no webhook when CVM publishes a new fact. Schedule polls and diff
document.id. - Ingestion lag — sync is not real-time. A notice may appear on the portal before it is in the corpus.
- Corpus coverage — not every issuer or period is present. Validate against the portal for production compliance use cases.
- Demo scope —
/v1/demo/*is limited to VALE3. Other tickers need a production key. - ITR disambiguation — Informações Trimestrais (CVM quarterly financials), not US income tax return software.
Next steps
- Read the API docs
- Get an API key
- Brazil financial statements API — DFP and ITR package overview
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.