---
title: "Annual financial statements of a company"
method: GET
path: "/companies/{id}/financials"
tags: ["Companies"]
---

# Annual financial statements of a company

`GET /companies/{id}/financials`

## Request

- Base URL: `https://api.prometiam.com/functions/v1/risk-api`
- URL: `https://api.prometiam.com/functions/v1/risk-api/companies/{id}/financials`
- Auth: HTTP bearer

Annual financial statements as filed with the official registers, mapped to one standard chart (revenue, profit, assets, equity, liabilities, cash, employees), so figures compare across companies and countries. Statements are served for GB, FR, DK, SE and NO, for FI (statements filed digitally with PRH, plus listed groups' annual financial reports), for US SEC filers (annual reports from EDGAR XBRL), for listed companies only in ES, PL, HR and BE (their ESEF annual financial reports) and in BR (the CVM's annual statements), for EE, LT and RO (headline figures only, never a full statement), for LV, for CO (companies filing NIIF statements with the Superintendencia de Sociedades only), and, for AU, tax records only with no statements; every other company answers 200 with an empty `statements` array and `meta.availability` saying why (other companies in ES, PL, HR, BE and BR `listed_companies_only`; other US companies `sec_filers_only`; other Colombian companies `supersociedades_filers_only`; Australian companies `tax_records_only`; Finnish companies without a digital filing `no_statement_held`; IE `source_not_supported`). Finnish and Australian companies carry `data.tax_records` (see below). The id names its country, so `country` is optional. Requires the `financials` scope: Scale plan and above (EUR 99.99/month); Starter, Professional and free trial keys get 10 successful calls a month (`meta.trial_allowance`), then 403 `upgrade_required`.

**Scope limits.** Annual accounts as filed. FR: accounts keyed by INPI from the filed documents; none for companies that declare their accounts confidential (about 45% of French filers), and no profit and loss account where only it is declared confidential. Elsewhere digitally filed accounts only: GB electronic (iXBRL) filings, about three in four, and small and micro companies often file no profit and loss account; DK XBRL annual reports, where most small companies report gross profit instead of revenue (Contains CVR data (Erhvervsstyrelsen), CC BY 4.0.); SE digitally filed (iXBRL) reports only; NO the last three approved accounts, with no employee count. The last three fiscal years at launch. Figures are in the filing currency plus euro at the ECB annual average of the fiscal year (for comparison, not an accounting translation). FI: statements filed digitally with PRH, the Finnish Patent and Registration Office (XBRL, the company's own accounts; about one filer in twenty, registered since July 2023; no employee count; profit before tax is before appropriations), beside the ESEF annual financial reports of listed groups; Finnish companies that file on paper have none. ES, PL, HR and BE: listed companies only, their ESEF annual financial reports (the European Single Electronic Format reports that EU-listed issuers publish; IFRS, mostly the group's consolidated accounts); ES from the CNMV, HR from the Zagreb Stock Exchange (group and company accounts); not every listed company's report is held, and Polish reports arrive more than a year late (mostly fiscal 2023). Spanish listed companies' reports are available free of charge on the CNMV website. US: SEC filers only, their annual reports (10-K, 20-F and 40-F, with amendments) from EDGAR XBRL, consolidated, US GAAP or IFRS, fiscal years from 2023, in the filing currency (mostly USD) plus euro at the ECB annual average of the fiscal year; no statements for the other US companies. Not available for other companies there, nor for IE (PDF images). EE: headline figures only (about sixteen summary items from the annual report: assets, equity, revenue, profits, employee expense, head count; total liabilities is assets minus equity), never a full statement, fiscal years 2019 on, updated monthly; some figures are read from PDF reports and non-profit income statements follow their own layout. Contains data from the Estonian e-Business Register (RIK), CC BY 4.0. LV: full balance sheet and profit and loss account with employees as filed, consolidated statements separate, fiscal years 2015 on in euro, no cash flow, no filing date, updated daily. Contains data from the Register of Enterprises of the Republic of Latvia (CC0). RO: headline indicators only (assets, equity, debts, net turnover, profit or loss, average employees) of companies filing with the Ministry of Finance, never a full statement, fiscal years 2019 on, in lei with euro copies, no banks, insurers or non-profits. Contains data from the Ministry of Finance of Romania (situații financiare, data.gov.ro), licensed under CC BY 4.0. LT: headline figures only (the balance sheet section totals: fixed assets, current assets, equity, liabilities; the profit and loss account revenue, profit before tax and net profit), never a full statement, individual and consolidated, fiscal years 2023 on in euro, no employees, updated daily from the open data of the register, which held filings up to March 2026 at launch. Contains data from the Register of Legal Entities (JAR), Registrų centras, via data.gov.lt, CC BY 4.0. Adapted by Prometiam. CO: companies that file NIIF statements with the Superintendencia de Sociedades only (groups 1 and 2; about 33,000 companies; banks and Superfinanciera issuers excluded; other Colombian companies answer availability `supersociedades_filers_only`), individual and consolidated, fiscal years 2023 on, in pesos with no euro copy (the ECB publishes no peso rate), no employees, personnel costs or depreciation, no filing date. Contains data from the Superintendencia de Sociedades (estados financieros NIIF), via www.datos.gov.co, licensed CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). Modified by Prometiam; the Colombian records are offered under CC BY-SA 4.0 (share-alike). BR: listed companies only (about 750, the CVM DFP annual statements, individual and consolidated, in reais with euro copies, fiscal years 2023 on, updated weekly); other Brazilian companies publish none (`listed_companies_only`). Contains data from the Comissão de Valores Mobiliários (CVM), Portal Dados Abertos, licensed under the Open Database License (ODbL, share-alike). Adapted by Prometiam. AU: tax_records only, no financial statements (availability `tax_records_only`): the Australian Taxation Office's Corporate Tax Transparency report per income year from 2013-14 (total income, taxable income, tax payable, in Australian dollars) for large corporate tax entities, total income AUD 100 million and over (AUD 200 million for Australian-owned private companies up to 2021-22); a null taxable income or tax payable means withheld (zero or a loss), not 0. Contains data from the Australian Taxation Office (ATO), Corporate Tax Transparency report, licensed CC BY 3.0 AU (https://creativecommons.org/licenses/by/3.0/au/). Adapted by Prometiam; the credit and licence link travel with every answer. **Finland: `tax_records`.** For every Finnish company, `data.tax_records` lists the Finnish Tax Administration's public corporate income tax data (Verohallinto, CC BY 4.0), newest tax year first, from tax year 2020 (published each November for the year before); 0 means none (no taxable income, or a loss), not unknown; `null` means the read failed, `[]` that nothing was published for the company. The key is present only for Finnish and Australian companies (for Australia see the AU paragraph above), and `meta.tax_note` explains it. Contains data from the Finnish Patent and Registration Office (PRH), CC BY 4.0.

A null figure was not stated in the filing; it is never zero. Each statement says whether it is the company's `own_filing` or a `comparative` (a prior-year figure taken from the next year's filing when the company's own filing for that year is not held). The latest statement is also on `GET /companies/{id}?include=financials` as `latest_financials`.

**Ratios, growth and flags (no extra credits).** Every statement also carries `ratios` (margins, return on assets, equity and capital employed, liquidity, solvency and efficiency ratios, EBITDA, working capital), `ratios_eur` (the money ratios in euro), `ratios_basis`, `growth` on the previous year, `flags` (negative equity, two years of loss, current ratio below 1, interest cover below 1.5, revenue down over 20%) and `filing_delay_days`. They are derived from the statement's own figures and never imputed: a ratio is null when an input is missing or a denominator is zero or negative; growth and averages compare only with the previous year's statement of the same type. Which statements exist (and which figures they state) is unchanged, so the scope limits above apply to the ratios too: an LT, EE or RO statement carries headline figures only, so most of its ratios are null.

## Path parameters

- `id` integer, required

## Query parameters

- `country` 'ES' | 'FR' | 'GB' | 'IE' | 'PL' | 'NO' | 'FI' | 'SE' | 'HR' | 'BE' | 'DK' | 'EE' | 'SK' | 'CH' | 'LV' | 'CY' | 'RO' | 'LT' | 'CA' | 'AU' | 'JP' | 'IL' | 'BR' | 'CO' | 'SG' | 'TW' | 'CZ' | 'DE' | 'US'
- `years` integer
- `statement_type` 'individual' | 'consolidated' | 'all'
- `currency` 'native' | 'eur' | 'both'
- `include` 'lines'
- `include_superseded` boolean

## Response `200`

Financial statements (an empty `statements` array with `meta.availability` where the country has none)

- FinancialsResponse
  - `data` object
    - `company` object
      - `id` integer
      - `country` string
      - `company_number` string
      - `company_name` string
      - `status` string, nullable
      - `employee_band` string, nullable: France only: INSEE's size band (head count) of the company today, not of the fiscal year. Null for other countries.
    - `statements` FinancialStatement[]
      - `fiscal_year` integer
      - `period_start` string, date
      - `period_end` string, date
      - `period_days` integer
      - `statement_type` 'individual' | 'consolidated'
      - `framework` string: Accounting framework of the filing, e.g. frs102, frs102_1a, frs105, dk_class_b, se_gaap, no_ngaap, no_small, ifrs.
      - `currency` string: ISO 4217 currency of `figures`.
      - `origin` 'own_filing' | 'comparative': `comparative` is a prior-year figure taken from the next year's filing when the company's own filing for that year is not held.
      - `filing_date` string, date, nullable: The accounts' release date: the day the filing these figures were read from was filed with or published by the register. A comparative statement carries the date of the later filing it was read from. Null where the source publishes no date (NO, LV, RO, CO); quality.missing.filing_date then says not_published_by_register.
      - `filing_delay_days` integer, nullable: Days from `period_end` to `filing_date`. Null where the source publishes no filing date (NO, LV, RO, CO), or where the date would fall before the period end.
      - `source_url` string, nullable: Link to the filing at the register. Null for SE.
      - `figures` FinancialFigures: The comparable figures of one statement. A null value was not stated in the filing; it is never zero.
        - `revenue` number, nullable
        - `gross_profit` number, nullable
        - `operating_profit` number, nullable
        - `profit_before_tax` number, nullable
        - `net_profit` number, nullable
        - `personnel_costs` number, nullable
        - `depreciation` number, nullable
        - `interest_expense` number, nullable
        - `total_assets` number, nullable
        - `fixed_assets` number, nullable
        - `current_assets` number, nullable
        - `cash` number, nullable
        - `inventories` number, nullable
        - `receivables` number, nullable
        - `equity` number, nullable
        - `current_liabilities` number, nullable
        - `non_current_liabilities` number, nullable
        - `total_liabilities` number, nullable
        - `employees` integer, nullable: Average number of employees as stated in the filing; the same in figures and figures_eur. Not stated for NO.
      - `figures_eur` FinancialFigures: The comparable figures of one statement. A null value was not stated in the filing; it is never zero.
        - `revenue` number, nullable
        - `gross_profit` number, nullable
        - `operating_profit` number, nullable
        - `profit_before_tax` number, nullable
        - `net_profit` number, nullable
        - `personnel_costs` number, nullable
        - `depreciation` number, nullable
        - `interest_expense` number, nullable
        - `total_assets` number, nullable
        - `fixed_assets` number, nullable
        - `current_assets` number, nullable
        - `cash` number, nullable
        - `inventories` number, nullable
        - `receivables` number, nullable
        - `equity` number, nullable
        - `current_liabilities` number, nullable
        - `non_current_liabilities` number, nullable
        - `total_liabilities` number, nullable
        - `employees` integer, nullable: Average number of employees as stated in the filing; the same in figures and figures_eur. Not stated for NO.
      - `ratios` object: Derived ratios. Derived from this statement's own figures (and the previous year's statement of the same type for averages and growth); never imputed. Ratios are computed from the filing-currency figures, so they are currency-free; ebitda, working_capital and revenue_per_employee are money in the filing currency (omitted with currency=eur; the euro values are in ratios_eur). A ratio is null when an input is null or its denominator is zero or negative where the ratio means nothing; a loss gives a real negative ratio. Flows are not annualised. Margins and the personnel cost share are on revenue, or on gross profit when ratios_basis is gross_profit.
        - `gross_margin` number, nullable: gross_profit / revenue. Null when: revenue is null or not above 0; revenue-basis statements only.
        - `operating_margin` number, nullable: operating_profit / revenue. Null when: revenue (gross profit on the gross-profit basis) is null or not above 0.
        - `net_margin` number, nullable: net_profit / revenue. Null when: revenue (gross profit on the gross-profit basis) is null or not above 0.
        - `ebitda` number, nullable: operating_profit + depreciation. Null when: operating profit or depreciation is null.
        - `ebitda_margin` number, nullable: ebitda / revenue. Null when: ebitda is null or revenue (gross profit on the gross-profit basis) is not above 0.
        - `return_on_assets` number, nullable: net_profit / total_assets. Null when: total assets null or not above 0.
        - `return_on_equity` number, nullable: net_profit / average(equity, previous year equity). Null when: no previous statement of the same type, or the average equity is not above 0.
        - `roce` number, nullable: operating_profit / (total_assets - current_liabilities). Null when: capital employed null or not above 0.
        - `current_ratio` number, nullable: current_assets / current_liabilities. Null when: current liabilities null or not above 0.
        - `quick_ratio` number, nullable: (current_assets - inventories) / current_liabilities. Null when: inventories null, or current liabilities null or not above 0.
        - `cash_ratio` number, nullable: cash / current_liabilities. Null when: current liabilities null or not above 0.
        - `working_capital` number, nullable: current_assets - current_liabilities. Null when: either is null.
        - `equity_ratio` number, nullable: equity / total_assets. Null when: total assets null or not above 0.
        - `debt_to_equity` number, nullable: total_liabilities / equity. Null when: equity null or not above 0 (see flags.negative_equity).
        - `interest_cover` number, nullable: operating_profit / interest_expense. Null when: interest expense null or not above 0 (no interest is not an infinite cover).
        - `asset_turnover` number, nullable: revenue / total_assets. Null when: revenue null, or total assets null or not above 0; revenue basis only.
        - `days_sales_outstanding` number, nullable: receivables / revenue * period_days. Null when: revenue not above 0, receivables or period_days null; revenue basis only.
        - `revenue_per_employee` number, nullable: revenue / employees. Null when: employees null or not above 0; revenue basis only.
        - `personnel_cost_share` number, nullable: personnel_costs / revenue. Null when: personnel costs null, or revenue (gross profit on the gross-profit basis) not above 0.
      - `ratios_eur` object: The money ratios of `ratios` in euro at the statement's ECB annual average rate (the rate of `fx`); null where the statement has no rate. Omitted with currency=native.
        - `ebitda` number, nullable: operating_profit + depreciation. Null when: operating profit or depreciation is null.
        - `working_capital` number, nullable: current_assets - current_liabilities. Null when: either is null.
        - `revenue_per_employee` number, nullable: revenue / employees. Null when: employees null or not above 0; revenue basis only.
      - `ratios_basis` 'revenue' | 'gross_profit': `gross_profit` for a statement that reports gross profit instead of revenue (small Danish companies, `quality.missing.revenue` = reported_as_gross_profit): operating_margin, net_margin, ebitda_margin and personnel_cost_share then divide by gross profit; gross_margin, asset_turnover, days_sales_outstanding, revenue_per_employee and revenue growth are null.
      - `growth` object: Change on the previous year as a fraction (-0.2 is 20% down), (current - previous) / |previous|. The previous year is the statement of the same `statement_type` and currency whose period ended 300 to 430 days earlier (consolidated is never compared with individual); null without it or when the earlier figure is 0 or null.
        - `revenue` number, nullable
        - `net_profit` number, nullable
        - `equity` number, nullable
        - `employees` number, nullable
      - `flags` object: Health flags, each true, false, or null when not computable.
        - `negative_equity` boolean, nullable: Equity below 0.
        - `loss_two_years` boolean, nullable: Net profit below 0 this year and the year before; false when this year is a profit; null when this year is a loss and the year before is not known.
        - `current_ratio_below_1` boolean, nullable: current_ratio below 1.
        - `interest_cover_below_1_5` boolean, nullable: interest_cover below 1.5.
        - `revenue_down_over_20pct` boolean, nullable: growth.revenue below -0.2.
      - `fx` object
        - `rate` number: Units of currency per euro.
        - `year_used` integer
        - `basis` string
      - `quality` object
        - `has_balance_sheet` boolean
        - `has_profit_and_loss` boolean
        - `balance_check` boolean, nullable: Whether assets equal equity plus liabilities; null when not checkable.
        - `derived` string[]: Fields computed exactly from other filed lines, e.g. total_assets = fixed + current assets.
        - `is_abridged` boolean
        - `is_micro_entity` boolean
        - `is_dormant` boolean
        - `is_amended` boolean
        - `notes` string[]: Machine-readable remarks on the statement. `employees_from_register` (Norway): the accounts carry no employee count, so `figures.employees` of the company's latest statement is the head count on the company's register record, today's figure rather than the year's average.
        - `missing` object: Why each null figure is null, as {field: reason}; also covers `filing_date` where the source publishes none (Norway, Latvia, Romania, Colombia). Sweden's `source_url` is the company's page at Bolagsverket (annual reports can be ordered there). `confidential`: the company declared its profit and loss account confidential (France). `not_filed`: the filing has no profit and loss account or no balance sheet (e.g. small UK companies). `reported_as_gross_profit`: revenue left out, gross profit reported instead (Denmark). `not_published_by_register`: the register publishes no such item (Norway employees, when the register record has none either; filing_date for Norway, Latvia, Romania and Colombia). `not_stated`: the filing states other lines but not this one.
      - `superseded` boolean: Present (true) only with `include_superseded=true`, on a statement replaced by a later or amended filing.
      - `balance_sheet` object: With `include=lines`: every mapped balance-sheet line.
      - `income_statement` object: With `include=lines`: every mapped income-statement line.
    - `tax_records` object[], nullable: Finland and Australia only (the key is absent for other countries). Finland: the Finnish Tax Administration's public corporate income tax data (Verohallinto, CC BY 4.0), newest tax year first, at most `years` entries, tax years from 2020 (published each November for the year before); 0 means none (no taxable income, or a loss), not unknown. Australia: the ATO's Corporate Tax Transparency report, one entry per income year from 2013-14 for large corporate tax entities (CC BY 3.0 AU); a null `taxable_income` or `tax_payable` means withheld (zero or a loss), never 0. Null when the read failed; an empty array when nothing was published for the company.
      - `tax_year` integer
      - `taxable_income` number, nullable: Taxable income, in the entry's currency (euro for Finland, Australian dollars for Australia).
      - `tax_assessed` number, nullable: Corporate income tax assessed, euro.
      - `tax_refund` number, nullable: Tax refunded, euro.
      - `residual_tax` number, nullable: Residual tax, euro.
      - `currency` string
      - `municipality` string, nullable
      - `reassessed` boolean: True when the figures come from a later reassessment.
      - `published` string, date
      - `income_year` string, nullable: Australia only: the income year, e.g. 2022-23.
      - `total_income` number, nullable: Australia only: total income, Australian dollars.
      - `tax_payable` number, nullable: Australia only: tax payable, Australian dollars; null = withheld (zero or a loss).
  - `meta` object
    - `country` string
    - `availability` 'available' | 'no_statement_held' | 'source_not_supported' | 'not_yet_available' | 'listed_companies_only' | 'sec_filers_only' | 'supersociedades_filers_only' | 'tax_records_only': `listed_companies_only` (ES, PL, HR, BE, BR), `sec_filers_only` (US), `supersociedades_filers_only` (CO), `tax_records_only` (AU: no statements, see `data.tax_records`).
    - `coverage_note` string: What the register publishes and leaves out for this country.
    - `tax_note` string: Finland and Australia only: what `data.tax_records` is (source, years, how to read 0 or null).
    - `source` string
    - `years` integer
    - `rate_limit` object
    - `trial_allowance` object: Free keys only: the monthly allowance of successful calls (10) and what remains.

## Other responses

- `400`: Missing or invalid parameters
- `401`: Missing, invalid, or expired API key
- `403`: Scope not in the plan (`upgrade_required`, `included_in: scale`) or the monthly allowance used up. Starter, Professional and free trial keys get 10 successful calls a month.
- `404`: Record or endpoint not found
- `429`: Rate limit exceeded — see `Retry-After` header for seconds until reset

## Changes

- **2026-10-20** `3ee0626d5a45`: 6 info
  - added the optional property `data/statements/items/filing_delay_days` to the response with the `200` status
  - added the optional property `data/statements/items/flags` to the response with the `200` status
  - added the optional property `data/statements/items/growth` to the response with the `200` status
  - added the optional property `data/statements/items/ratios` to the response with the `200` status
  - …2 more

[Operation history](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/changes/companies/:id/financials/get.md)

---

[API](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api.md) · [All operations](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/revisions/3ee0626d5a45?raw)
