Customers

Pricing
Introducing r-1: Reducto’s new SOTA document parsing model
Technical
September 16, 2026

Financial Statement Extraction: Balance Sheets, Income Statements, Cash Flows

How to extract balance sheet, income statement, and cash flow data with source citations and checks for signs, units, periods, and totals.

The short answer

Financial statement extraction requires preserving document structure before mapping values into fields. Table headers, reporting periods, and scale declarations all affect what a number means. Reducto Extract runs Parse internally before returning the fields requested in your schema. Call Parse separately when you want to inspect the recovered content or reuse a parsed document across multiple schemas. If a value is missing from the parsed content, address the parsing issue before changing the extraction schema.

Field map by statement

Design one schema section per statement rather than one flat object. Nested objects keep period labels attached to the values they describe.

StatementCore fields to captureField that breaks the rest if missed
Income statementRevenue, cost of sales, gross profit, operating expenses, operating income, net incomePeriod label on each column
Balance sheetCurrent and non-current assets and liabilities, equity components, totalsAs-of date
Cash flowOperating, investing and financing subtotals, net change in cash, opening and closing cashSign of each subtotal
Cover pageCompany name, ticker, fiscal year end, filing identifierFiscal year end

Capture the currency, reporting period, and stated units or scale alongside each amount. Preserve exceptions in the table header: monetary amounts, share counts, percentages, and per-share values may use different units within the same statement.

Conventions that must survive parsing

Scale declarations

Financial tables commonly state units once, in a header or caption. Keep that declaration attached to the rows it governs. A table read without its header yields values that are internally consistent and externally wrong.

Parenthetical negatives

Accounting convention commonly writes negatives in parentheses. Signed numbers are safer than a separate sign flag, because a dropped flag reads as a positive value. Verify signs on loss lines, accumulated deficits, and every investing and financing line.

Period columns and multi-page tables

Comparative statements repeat each line across two or three period columns, and the header row can sit on a different page than the data. HTML table output suits complex tables with merged cells and nested headers. For long schedules and repeating rows, use Deep Extract, the agentic extraction mode that iteratively refines its output and is documented as best for complex documents where accuracy is critical. The older array extraction setting is deprecated in favor of it.

An annual report pipeline

Annual reports combine several statements, long narrative sections, and footnotes that define the treatment behind individual lines. A workable sequence has four stages.

  • Submit the filing to Extract, which runs Parse internally. If you need several extraction schemas, you can parse once and reuse the job reference.
  • Extract the fields for each statement with citations enabled. Check that returned citations point to the correct statement, period, and source value.
  • Extract printed footnote references and the corresponding footnote text as separate fields, then match them in your application.
  • Reconcile the extracted values and route unresolved differences to review. Keep calculations in your application rather than asking the extraction schema to calculate missing figures.

For broader long-document patterns, see enterprise data extraction.

Citations and confidence

With citations enabled, each value arrives with its source location: block type, source text, a bounding box with the page number, a categorical confidence of high or low, and, when numerical confidence is on, numeric extract and parse scores. Excel and CSV inputs use cell coordinates instead of normalized positions. A citation array can be empty when a value was inferred rather than found directly, or, rarely, when it was found but could not be reliably localized, so check whether citations exist before using them. Use confidence to prioritize review. Check the cited value alongside its period, units, sign, and entity, then apply reconciliation checks. A matching total alone does not establish that every field is correct.

Checks before anything is posted

Calculate checks in your application using extracted source values. Requesting a calculated field that does not appear in the document can produce an unsupported result. Compare values on the same reporting basis, and allow a documented tolerance for rounding at the statement’s displayed precision.

Check What it catches Handling
Assets equal liabilities plus equity, allowing for reported rounding Missing values, sign errors, or mixed periods Hold unresolved differences for review
Subtotals reconcile to their component rows Missing rows, duplicated values, or incorrect signs Check source rows, units, and rounding before deciding whether to parse or extract again
Opening cash plus reported cash flows and separately disclosed reconciliation items equals closing cash Sign errors, omitted exchange-rate effects, or inconsistent cash definitions Use the statement’s definition of cash and check differences against the source
Each value has the appropriate units, scale, and currency where applicable Lost header context or incorrectly scaled share counts, percentages, and per-share values Resolve missing or ambiguous units before downstream use
Prior-period values are compared with the earlier filing Extraction differences or disclosed restatements and reclassifications Check explanatory notes before treating a difference as an error

Errors that are unsafe to post automatically change the meaning of a number rather than its precision: a sign inversion, a wrong scale, a value taken from the wrong period column, or a figure assigned to the wrong entity in a consolidated group. Each passes a well-formed schema. Send those to review whenever a check fails, a citation is absent, or confidence is low. Comparability matters too: applicable adjustments, differing currencies, and restated prior periods have to be reflected before two figures are compared.

Deployment and retention notes

Filings are often confidential before publication. Under Reducto's data policies, users on the Growth tier and above have a zero data retention policy: all data submitted via API is set to expire within 24 hours, except for Studio-run jobs and results saved with results persistence enabled. Reducto has completed its SOC 2 Type I and Type II process. On the parsing side, r-1 is in preview and is the default for new pipelines in Studio, while API requests use legacy Parse unless they set the model setting to r-1. Review r-1 configuration compatibility before migrating an existing pipeline.

Frequently asked questions

How large should a statement schema be?

Very large schemas may exceed model token limits and fail. Reducto's rule of thumb is to keep schemas under 50 fields and to break larger extractions into logical groups, which maps naturally onto one call per statement.

How should I handle amounts reported in thousands or millions?

Store the printed value and its stated scale separately. If your application needs normalized amounts, calculate them downstream while preserving the original value for review. Apply the scale only to the rows it governs. Per-share amounts, percentages, and share counts may follow different conventions.

What should I do when extracted totals do not reconcile?

Check the source statement before retrying extraction. Confirm the reporting period, entity, signs, units, and rounding, then look for missing or duplicated rows. For cash flows, include separately disclosed exchange-rate effects and use a consistent definition of cash. Revisit parsing or extraction when source content was missed; route unexplained differences to review rather than adjusting values to force a match.

CTA patternReducto logo

Make your first API call in minutes.

Reducto logoLLM Center