Brazil Accounting Policy Change Disclosures API: Track Estimate Revisions and New Standards from CVM Filings

A Brazil accounting policy change disclosures API in the forensic-research sense is not a GAAP taxonomy engine, a restatement database with pre-labeled error types, or a vendor that maps every CPC paragraph to a machine-readable code. It is access to the CVM filings where Brazilian issuers explain mudanças de política contábil, revisions to material estimativas contábeis, adoption of new CPC/IFRS standards, and reclassifications of comparatives — usually in explanatory notes bundled with DFP and ITR (Informações Trimestrais, not US income tax returns), accounting-policy chapters in FRE, and FATO_RELEVANTE or COMUNICADO_AO_MERCADO when management discloses a material change before the next full periodic package. apicvm lets you list those rows by ticker, download the original PDF, and diff new document.id values on a watchlist during 3Q ITR season when estimate updates and standard adoptions often surface.

This guide shows which type values to query, annex title heuristics for policy notes, and how this hub differs from financial restatement monitoring, revenue recognition, and independent auditor reports.

The problem

Accounting-policy surveillance splits into four stacks that English search results often merge:

  1. Market data terminals — may flag “accounting change” headlines. They rarely store the full regulatory PDF with the issuer’s note on mudança de estimativa or the auditor’s comment on retrospective application.
  2. Periodic packages — DFP and ITR rows with notas explicativas and sometimes a dedicated políticas contábeis annex. You need ticker-first access and stable document.id, not a one-off portal download per name.
  3. Reference form — FRE carries the annual inventory of accounting policies and critical estimates before the next DFP refresh.
  4. Events and restatements — fatos relevantes when a policy change is material early; retified DFP/ITR when comparatives are reissued (see the restatement hub).

Scraping the CVM portal works for one ticker and breaks on a diversified forensic 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 policy and estimate change workflows.

For full retification loops, cross-check Brazil financial restatement disclosures API. For CPC 47 / IFRS 15 revenue timing only, see Brazil revenue recognition disclosures API. This guide focuses on the API list-and-download pattern for cross-cutting policy and estimate changes.

Which filing type carries accounting policy language?

Brazilian issuers do not expose a dedicated type=ACCOUNTING_POLICY in the apicvm document list. Policy and estimate changes usually appear under:

type Role in accounting-policy workflows
DFP / ITR Explanatory notes — mudança de política, mudança de estimativa, adoção de norma, reclassificação
FRE Annual reference form — summary of accounting policies and critical estimates
FATO_RELEVANTE Material fact when a policy or estimate change is disclosed before the next periodic filing
COMUNICADO_AO_MERCADO Market communication on accounting policy or reissued statements
DFP / ITR (retified) Reissued packages after error correction — pair with restatement hub

Practical rule: list DFP/ITR for the issuer and filter annex rows whose name contains Nota, Notas, Política, Policy, or Explicativa. Pull the latest FRE for the policy chapter. Poll FATO_RELEVANTE with Portuguese and English tokens (política contábil, mudança de estimativa, accounting policy, change in estimate, CPC, IFRS, retificação, reclassificação). After download, search PDF text for mudança de política, mudança de estimativa, adoção, retrospectiva, reclassificação, or accounting policy.

Issuer packaging varies: some filers embed policy changes only in note 1; others discuss estimates in segment notes. Zero rows with a keyword filter does not mean no policy change — broaden the list or open the latest explanatory-notes annex manually.

How apicvm helps

  1. Resolve the issuer — GET /v1/companies/resolve
  2. List periodic filings — GET /v1/documents with type=ITR or type=DFP and year
  3. Narrow policy notes — name=Nota or name=Política
  4. List annual reference — GET /v1/documents with type=FRE
  5. List policy events — GET /v1/documents with types=FATO_RELEVANTE,COMUNICADO_AO_MERCADO
  6. Scope with dateRef; sort with field=dateRef&order=desc
  7. Download the PDF — GET /v1/documents/:id/file (no extraction credits)
  8. Optional (Pro): page-level markdown — POST /v1/document-text-extractions with 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 explanatory-note annexes on recent ITR packages

curl -s -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=RADL3&type=ITR&year=2025&perPage=50&field=dateRef&order=desc" \
  | jq '.data[] | select(.name | test("nota|política|policy|explicativa"; "i")) | {id, type, dateRef, name}'

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: Download the notes PDF

DOC_ID=123456
curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents/$DOC_ID/file" -o explanatory-notes.pdf

Search the PDF locally for policy-change phrases. apicvm does not return a pre-parsed policyChange: true field.

Step 3: List material facts on accounting policy or estimate revisions

curl -s -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=PETR4&types=FATO_RELEVANTE,COMUNICADO_AO_MERCADO&year=2025&perPage=50&field=dateRef&order=desc" \
  | jq '.data[] | select(.name | test("política|estimativa|CPC|IFRS|retificação|accounting policy|change in estimate"; "i")) | {id, type, dateRef, name}'

Pair event polling with Brazil material facts monitoring API for generic diff loops.

Step 4: Pull FRE for the accounting policies chapter

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=VALE3&type=FRE&year=2025&perPage=10&field=dateRef&order=desc"

For section-level FRE extraction patterns, see FRE risk factors API section filter and Brazil reference form API.

On the public demo (VALE3 only), swap the host path to /v1/demo/documents with the same query parameters for smoke tests.

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 = ["RADL3", "PETR4", "MGLU3", "ITUB4"]
POLICY_EVENT_RE = re.compile(
    r"pol[ií]tica|estimativa|CPC|IFRS|retifica|reclassifica|"
    r"accounting policy|change in estimate",
    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 POLICY_EVENT_RE.search(doc.get("name") or ""):
            continue
        seen.add(doc["id"])
        print(f"POLICY_EVENT {ticker} {doc['dateRef']} {doc['name'][:70]}")

Wire this into GitHub Actions CVM filings monitor. For NLP over downloaded PDFs, see extract text from CVM PDFs for AI agents.

Where policy changes sit in the filings stack

Layer Types Policy-change relevance
Periodic ITR, DFP Note 1 / policies, estimate revisions, standard adoption
Reference FRE Accounting policies and critical estimates inventory
Events FATO_RELEVANTE, COMUNICADO_AO_MERCADO Early disclosure before periodic package
Quality Retified DFP/ITR Error correction and reissued comparatives

Brazil regulatory filings API explains the full layer map. Pair note annex polling with quarterly ITR monitoring during 3Q ITR season (typically Oct–Nov). When policy changes trigger retifications, cross-check Brazil financial restatement disclosures API. When auditors qualify opinions on changes, see Brazil independent auditor report disclosures API. For impairment-specific write-downs, see Brazil asset impairment write-down disclosures API. For the broader Brazil financial data API pillar, treat accounting policy changes as the forensic adjustment layer on top of periodic statements.

Current limitations

  • Documents, not parsed policy taxonomies — apicvm does not return CPC/IFRS tags, automatic “policy vs estimate” labels, or comparative restatement tables.
  • Title heuristics — name filters miss annexes with generic titles; some policy language lives only inside the PDF body.
  • Polling, not push — no webhook when CVM publishes a new note package. 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

Ready to integrate?

Get an API key and start querying Brazilian CVM filings programmatically.