---
title: "Income statement"
method: GET
path: "/api/financials/income-statement"
tags: ["Financials"]
---

# Income statement

`GET /api/financials/income-statement`

![Free](https://img.shields.io/badge/Free-22c55e) ![Starter](https://img.shields.io/badge/Starter-3b82f6) ![Stock](https://img.shields.io/badge/Stock-f97316) ![ETF](https://img.shields.io/badge/ETF-14b8a6) ![Pro](https://img.shields.io/badge/Pro-8b5cf6)

Returns normalized income statement data — revenue, cost of revenue, operating expenses, EBITDA, net income, EPS, and more. Facts are mapped from raw XBRL to a curated set of standardized line items.

Monetary values default to **US dollars**. Pass the `currency` parameter to receive any supported ISO 4217 currency instead: line items not already in that currency are converted on the fly (flow items at the period-average rate, balance-sheet items at the period-end spot rate), and the per-period `fx` block records the exact rate(s) applied so each conversion is reproducible. Values already in the requested currency are passed through untouched.

Use `period=ttm` to get trailing twelve months data, computed by summing the last 4 reported quarters.

## Query parameters

- `symbol` string
- `cik` integer
- `cusip` string
- `composite_figi` string
- `share_class_figi` string
- `currency` string
- `period` 'annual' | 'quarter' | 'ttm' — Reporting period: `annual`, `quarter`, or `ttm` (trailing twelve months). TTM sums the last 4 quarters for flow items and uses the latest quarter for point-in-time items.
- `limit` integer
- `splitAdjust` boolean

## Response `200`

Income statement data organized by period

- object[]
  - `period` string — The fiscal period end date
  - `fiscalYear` integer — The company's fiscal year (handles non-December year-ends — AAPL FY ends Sep, COST FY ends Aug).
  - `fiscalPeriod` 'FY' | 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'TTM' — Fiscal period of a reported value: `FY` (annual), `Q1`-`Q4` (quarterly), or `TTM` (trailing twelve months).
  - `fx` FxConversion — Foreign-currency conversion audit for this period. Every monetary value in `facts` is in the requested `currency` (default **US dollars**). This block is absent when the period was already wholly in the target currency (e.g. a US filer with the default USD — nothing to convert). It is present when one or more line items were originally filed in a different currency and converted on the fly, and it records the exact rate(s) applied so the conversion can be reproduced. Rates come from the Frankfurter API (api.frankfurter.dev). Instant balance-sheet items use the spot rate at period end; flow income/cash-flow items use the day-weighted average rate over the period.
    - `targetCurrency` string, required — The currency (ISO 4217) every `facts` value was converted INTO — the value of the request `currency` parameter (default USD). The literal `original` here means no conversion was requested: each fact stays in its as-reported currency (see `unconverted` for the per-fact mapping).
    - `originalCurrencies` string[], required — Every source currency (ISO 4217) that appeared in this period — the union of converted, unconverted, and already-in-target. The target currency itself is listed when some facts were natively in it (e.g. a foreign filer reporting some lines in USD alongside its converted local currency), so a mixed period reflects its true composition rather than appearing wholly converted.
    - `rates` object[], required — One entry per (source currency, method) actually applied. `rate` is the multiplier: `target = original * rate`.
      - `from` string, required — ISO 4217 source currency that was converted.
      - `method` 'spot' | 'average', required — `spot` for instant balance-sheet items (rate at period end); `average` for flow income/cash-flow items (day-weighted mean over the period).
      - `rate` number, required — Multiply the original-currency amount by this to get the `targetCurrency` amount.
      - `effectiveDate` string, date — Spot only: the date (YYYY-MM-DD) the applied rate was published (≤ period end).
      - `start` string, date — Average only: period start (YYYY-MM-DD).
      - `end` string, date — Average only: period end (YYYY-MM-DD).
    - `unconverted` object — Facts that could NOT be converted (no published rate within tolerance, or an unsupported code/date), grouped by the currency they remain in: each key is a source ISO 4217 code, each value lists the curated fact names in `facts` still in that currency (NOT `targetCurrency`). Absent when everything converted. Use it to know exactly which figures to treat as native currency.
  - `facts` object — Normalized income statement line items, keyed by curated fact name with numeric values, in the requested `currency` (default USD). See `fx` for any conversion applied, and `fx.unconverted` for any figures that could not be converted (kept in their native currency).
    - `revenue` number — Total Revenue — Total income generated from sales of goods or services before any expenses are deducted.
    - `costOfRevenue` number — Cost of Revenue — Direct costs attributable to producing goods or services sold, including materials and direct labor.
    - `grossProfit` number — Gross Profit — Revenue minus cost of revenue, showing profitability before operating expenses.
    - `researchAndDevelopment` number — Research & Development — Spending on activities to develop new products, services, or processes.
    - `generalAndAdministrativeExpenses` number — General & Administrative — Overhead costs for running the business, such as rent, salaries, and office expenses.
    - `sellingAndMarketingExpenses` number — Selling & Marketing — Costs related to advertising, promotions, and sales activities.
    - `sellingGeneralAndAdministrativeExpenses` number — SG&A — Combined selling, general, and administrative expenses.
    - `otherExpenses` number — Other Expenses — Non-core income or expenses not classified elsewhere in operations.
    - `restructuringCharges` number — Restructuring Charges — Costs from restructuring activities — severance, facility exits, contract terminations. Sourced from `us-gaap:RestructuringCharges` when reported. The broader umbrella `us-gaap:RestructuringSettlementAndImpairmentProvisions` (which includes related asset impairments and settlement provisions) is **not** mapped here — it lives in `restructuringAndImpairmentTotal` to keep the two distinguishable. Often called out by management as non-recurring; useful for deriving adjusted operating margin.
    - `restructuringAndImpairmentTotal` number — Restructuring & Impairment (Total) — Umbrella aggregate of restructuring charges, settlement provisions, and asset impairments as a single combined line — used by filers (e.g. INTC during foundry reorganization) where the underlying write-off is BOTH a restructuring action AND an asset impairment, so the components overlap. When this fact is present, `unusualItemsNet` uses it in place of summing `restructuringCharges + impairments` to avoid double-counting. When absent, the derivation falls back to the component sum.
    - `impairments` number — Impairments — Impairment charges (goodwill, intangibles, long-lived assets, other) recognized in operating expenses, reducing operating income. Reported literal as filed: the broad aggregate is preferred — when only a narrower category is tagged, that becomes the value. **Overlap note**: when a filer tags both `us-gaap:AssetImpairmentCharges` AND a narrower concept like `GoodwillImpairmentLoss`, the broad concept is preferred and the narrower one is ignored, since the aggregate already includes it. Often called out by management as non-recurring; useful for deriving adjusted operating margin.
    - `operatingExpenses` number — Operating Expenses — Total costs incurred through normal business operations, excluding cost of revenue.
    - `costAndExpenses` number — Cost & Expenses — Total of all costs and expenses, including cost of revenue and operating expenses.
    - `interestIncome` number — Interest Income — Income earned from interest-bearing assets like deposits or bonds.
    - `interestExpense` number — Interest Expense — Cost of borrowing money, including interest on debt and credit facilities. **IFRS note**: under IFRS, `FinanceCosts` may include lease-liability interest by default; US-GAAP filers typically separate lease interest into other line items.
    - `interestIncomeNet` number — Net Interest Income (Expense) — Interest income minus interest expense. Key profitability metric for banks.
    - `depreciationAndAmortization` number — Depreciation & Amortization — Non-cash charges for the gradual write-down of tangible and intangible assets.
    - `depreciation` number — Depreciation — Non-cash expense reflecting the wear and aging of physical assets like equipment and buildings.
    - `amortization` number — Amortization — Non-cash expense for the systematic write-off of intangible assets like patents and software.
    - `operatingIncome` number — Operating Income — Profit from core business operations after subtracting operating expenses from gross profit.
    - `nonOperatingIncome` number — Non-Operating Income — Income from activities outside core operations, such as investment gains or asset sales.
    - `incomeBeforeTax` number — Income Before Tax — Total earnings before income tax is deducted. Also known as pre-tax income.
    - `incomeTaxExpense` number — Income Tax Expense — Total income taxes owed for the period, including current and deferred taxes.
    - `netIncome` number — Net Income — Total profit after all expenses, taxes, and costs are subtracted from revenue.
    - `netIncomeCommonStockholders` number — Net Income to Common — Profit available to common shareholders after preferred dividends.
    - `netIncomeCommonStockholdersDiluted` number — Net Income to Common (Diluted) — Profit available to common shareholders, adjusted for all dilutive securities.
    - `weightedAverageSharesOutstanding` number — Shares Outstanding — Average number of basic shares outstanding during the period.
    - `weightedAverageSharesOutstandingDiluted` number — Shares Outstanding (Diluted) — Average shares outstanding including dilutive effects of options, warrants, and convertibles.
    - `eps` number — EPS — Net income divided by weighted average basic shares outstanding.
    - `epsDiluted` number — EPS (Diluted) — Net income divided by weighted average diluted shares outstanding.
    - `ebit` number — EBIT — Earnings before interest and taxes. Measures operating profitability regardless of capital structure.
    - `ebitda` number — EBITDA — Earnings before interest, taxes, depreciation, and amortization. Proxy for operating cash generation.
    - `premiumsEarned` number — Premiums Earned — Insurance premium revenue recognized during the period.
    - `premiumsWritten` number — Premiums Written — Total insurance premiums from policies written during the period, whether or not yet earned.
    - `policyholderBenefitsAndClaims` number — Policyholder Benefits & Claims — Payments and reserves for insurance claims and policyholder benefits.
    - `policyAcquisitionCosts` number — Policy Acquisition Costs — Costs to acquire new insurance policies, such as commissions and underwriting expenses.
    - `underwritingIncome` number — Underwriting Income (Loss) — Profit from insurance operations: premiums earned minus claims and acquisition costs.
    - `netInvestmentIncome` number — Net Investment Income — Income from the insurance company's investment portfolio.
    - `noninterestIncome` number — Non-Interest Income — Bank revenue from sources other than interest, such as fees, trading, and service charges.
    - `noninterestExpense` number — Non-Interest Expense — Bank operating costs excluding interest expense, such as salaries, occupancy, and technology.
    - `provisionForCreditLosses` number — Provision for Credit Losses — Amount set aside to cover estimated losses on loans and other credit exposures.
    - `gainLossOnDisposition` number — Gain (Loss) on Disposition — Net gain or loss from selling business units, PP&E, or intangible assets. Credit-balance concept: positive = gain (increases income), negative = loss. The narrower `GainLossOnSaleOfBusiness` and `GainLossOnDispositionOfIntangibleAssets` are preferred when tagged; the umbrella `GainLossOnDispositionOfAssets1`/`…OfAssets` is the fallback for filers that lump everything together.
    - `gainLossOnDebtExtinguishment` number — Gain (Loss) on Debt Extinguishment — Net gain or loss from retiring debt before maturity — premium/discount paid above carrying value, plus write-off of unamortized issuance costs. Credit-balance concept: positive = gain, negative = loss. Routinely called out as non-recurring.
    - `acquisitionRelatedCosts` number — Acquisition-Related Costs — Transaction and integration costs incurred to complete a business combination — advisory fees, legal, due diligence, severance for acquired employees. Debit-balance expense, recognized in the period incurred.
    - `goodwillImpairmentLoss` number — Goodwill Impairment Loss — Write-down of goodwill when its carrying value exceeds fair value. Always a positive expense; reduces operating income. **Overlap note**: also a component of the broader `impairments` field — when a filer tags only the aggregate `us-gaap:AssetImpairmentCharges`/`ifrs-full:ImpairmentLossRecognisedInProfitOrLossIntangibleAssetsAndGoodwill`, this field will be null even though some of the impairment may be goodwill. Reflects the literal tag from the filing.
    - `unusualItemsNet` number — Unusual Items, Net — Aggregate of non-recurring income-statement items: restructuring charges, impairments, acquisition-related costs (all expenses, subtracted), plus gains/losses on disposition and debt extinguishment (sign-preserved). Convention: positive = net gain to income, negative = net charge against income. Derived from sibling curated facts — no single XBRL concept maps to it.
    - `unusualItemsExcludingGoodwill` number — Unusual Items Excluding Goodwill, Net — Same as `unusualItemsNet` but with the goodwill-impairment component added back. When the filer explicitly tagged `goodwillImpairmentLoss` separately, this cleanly removes it from the aggregate. When the filer only tagged a broader impairment concept without breaking out goodwill, `goodwillImpairmentLoss` is null and this field equals `unusualItemsNet`. Derived; no XBRL mapping.
  - `splitFactor` number — Only present when `splitAdjust=true` and this period was adjusted. The cumulative forward split factor applied to share counts for this period (per-share figures used `1 / splitFactor`). Absent means the period was already on the current split-adjusted basis.
  - `sources` FactSources — Map of SEC accession number to the filing's metadata and the list of curated fact names that filing supplied to this period. Combines provenance (which filing supplied each value) with the audit trail of restatements. Facts synthesized from other facts in the same period (e.g. `grossProfit = revenue - costOfRevenue`) are absent from this map and instead listed under `derived`. Q4 values reconstructed from cumulative period facts use a self-documenting synthetic key — `Q4-Recon-FY-9M`, `Q4-Recon-FY-H1-Q3`, or `Q4-Recon-FY-Q1-Q2-Q3` — with `type: "Q4-Recon"` and no `dateFiled` (the matching 10-K's `dateFiled` is on the period entry's top-level `dateFiled` field). **Pruning rules**: non-amendment filings that supplied no surviving fact value are dropped (their existence is already conveyed by the period's top-level `dateFiled`). **Amendment filings (`/A`) are always included even when their facts were all superseded by a later amendment** — their `facts` may be empty, but their existence is itself the audit signal needed to reconstruct point-in-time data between filing dates. Combine `sources[accession].facts` (which values came from this filing) with `sources[accession].dateFiled` (when each became public) to reconstruct point-in-time data and detect restatements.
  - `derived` string[] — Names of facts whose values were calculated rather than taken directly from the source filing — for example, `grossProfit` synthesized from `revenue` minus `costOfRevenue` when the company did not tag gross profit explicitly, or every fact in a `period=ttm` response (summed across 4 quarters, or carried from the latest quarter for instant items).
  - `dateFiled` string, date — SEC filing acceptance date for the **original** 10-K (annual / Q4 quarterly entries) or 10-Q (Q1-Q3 quarterly entries) covering this period. Format: YYYY-MM-DD. Use this to gate point-in-time data access and avoid lookahead bias when joining with historical price data — backtesters should only treat the period's facts as "knowable" on or after this date. Amendments (10-K/A, 10-Q/A) are explicitly **not** used here; this field always reflects the original disclosure date. Not present when `period=ttm` — TTM is synthesized from 4 quarters and has no single filing date.

## Other responses

- `400` — Invalid parameters or symbol not found
- `403` — Feature not available on current plan

---

[API](https://skmtc.net/stockfit/apis/stockfit-api.md) · [All operations](https://skmtc.net/stockfit/apis/stockfit-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stockfit/stockfit-api/revisions/3d5897270d8a/schema)
