
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.
| Statement | Core fields to capture | Field that breaks the rest if missed |
|---|---|---|
| Income statement | Revenue, cost of sales, gross profit, operating expenses, operating income, net income | Period label on each column |
| Balance sheet | Current and non-current assets and liabilities, equity components, totals | As-of date |
| Cash flow | Operating, investing and financing subtotals, net change in cash, opening and closing cash | Sign of each subtotal |
| Cover page | Company name, ticker, fiscal year end, filing identifier | Fiscal 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.
More guides

Best PDF Data Extraction APIs and SDKs in 2026
Compare developer-focused PDF extraction APIs by authentication, SDKs, async jobs, webhooks, limits, outputs, citations, security, pricing and implementation effort.

Best AI Data Extraction Tools for Unstructured Documents in 2026
Compare leading AI data extraction tools for complex PDFs, scans, forms and document packets using accuracy evidence, source traceability, review workflows, integrations and pricing models.

Best Enterprise Data Extraction Software
Compare enterprise data extraction software for long documents, complex tables, structured schemas, cloud ecosystems, and human validation.