> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.spreadspace.app/api/api-reference/comprehensive-income-statements/object/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.spreadspace.app/_mcp/server. # The Comprehensive Income Statement object > The extracted statement of comprehensive income: its lines, headline figures and checks as the readers return them. An extracted statement of comprehensive income. The retrieve endpoint returns this object on its own. The list endpoint returns one per document, wrapped as `{ "borrower_id": …, "statements": [ { "extracted_document_id", "document_category", "report_data" } ] }`. ## Explore [Retrieve a comprehensive income statement](/api/api-reference/comprehensive-income-statements/get-comprehensive-income-statement) GET`/api/borrowers/:borrower_id/extractions/:doc_id/comprehensive-income-statement` [List all comprehensive income statements](/api/api-reference/comprehensive-income-statements/get-comprehensive-income-statements) GET`/api/borrowers/:borrower_id/extractions/comprehensive-income-statements` `lines` carries the statement's printed lines in order, each with one figure and one print mark per column, and `net_income`, `total_other_comprehensive_income` and `comprehensive_income` carry the headline figures the same way. `status` and `signals` say whether the statement adds up. The documents behind this object carry `document_category` `comprehensive_income_statement`, `statement_of_comprehensive_income`, `statements_of_comprehensive_income`, `comprehensive_income`, `oci_statement` or `comprehensive-income-statement`. Money keys are JSON strings with exactly two decimals (`"9200000.00"`, `"-1250.50"`). Date keys are `YYYY-MM-DD`, as each key's Type column shows. ## Fields | Key | Type | Present when | Description | | ------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity` | string, nullable | Always | The reporting entity's name as printed. | | `title` | string, nullable | Always | The statement's printed title. | | `period` | string, nullable | Always | The period wording printed over the statement, such as the years ended, when it prints one. | | `periods` | array of objects | Always | The statement's figure columns, one entry per column. | | `columns` | integer | Always | Number of figure columns. | | `lines` | array of objects | Always | The statement's printed lines from net income through comprehensive income and its split, in print order. | | `net_income` | array of string (money) or null | Always | Net income per column. | | `total_other_comprehensive_income` | array of string (money) or null | Always | Total other comprehensive income per column: the printed total, or the total of the items when the statement prints none. | | `comprehensive_income` | array of string (money) or null | Always | Comprehensive income per column. | | `comprehensive_income_attributable_to_parent` | array of string (money) or null, nullable | Always | Comprehensive income attributable to the company per column; null when the statement prints no such line. | | `comprehensive_income_attributable_to_noncontrolling` | array of string (money) or null, nullable | Always | Comprehensive income attributable to the noncontrolling interests per column; null when the statement prints no such line. | | `net_income_printed` | array of string, one of `money`, `dash`, `blank` | Always | How each figure of `net_income` is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell. | | `total_other_comprehensive_income_printed` | array of string, one of `money`, `dash`, `blank` | Always | How each figure of `total_other_comprehensive_income` is printed, per column. | | `comprehensive_income_printed` | array of string, one of `money`, `dash`, `blank` | Always | How each figure of `comprehensive_income` is printed, per column. | | `comprehensive_income_attributable_to_parent_printed` | array of string, one of `money`, `dash`, `blank`, nullable | Always | How each figure of the company's share is printed, per column; null when the statement prints no such line. | | `comprehensive_income_attributable_to_noncontrolling_printed` | array of string, one of `money`, `dash`, `blank`, nullable | Always | How each figure of the noncontrolling interests' share is printed, per column; null when the statement prints no such line. | | `total_other_comprehensive_income_derived` | boolean | Always | True when the statement prints no total of other comprehensive income and `total_other_comprehensive_income` is the total of its items. | | `nci_direction` | string, one of `subtract`, `add`, nullable | Always | Whether the noncontrolling interests' line is deducted from (`subtract`) or added to (`add`) comprehensive income to reach the company's share, as the statement prints its sign; null when the statement prints no split. | | `cpa_engagement` | integer | On a statement extracted with its assurance level and presentation read; absent on an older extraction. | The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited. | | `cpa_engagement_label` | string | On a statement extracted with its assurance level and presentation read; absent on an older extraction. | The assurance level in words. | | `presentation` | string, one of `formal`, `free_form` | On a statement extracted with its assurance level and presentation read; absent on an older extraction. | How the statement is presented: `formal` when it is presented as issued financial statements; `free_form` when it is a report out of the books (accounting software or a spreadsheet). | | `status` | string, one of `RECONCILED`, `FLAGGED` | Always | `RECONCILED` when net income plus other comprehensive income equals comprehensive income, the items add to the printed total and the split nets to the company's share in every column; `FLAGGED` otherwise. | | `signals` | array of objects | When the document states it | Each check of the statement that does not hold, in words, when any does not. | | `reporting_unit` | string, one of `ones`, `thousands`, `millions`, `billions` | Always | The unit the figures are printed in, such as ones or thousands. | | `scale_multiplier` | integer | Always | Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions. | | `billing_years` | integer | Always | Years of data billed for the statement. | | `packet` | object | When the document states it | Where the statement sat in the financial statement packet it arrived in, when it arrived in one. | ## `periods[]` One figure column. | Key | Type | Present when | Description | | ---------- | ----------------------------- | ------------ | ------------------------------------------------------------------------------------------------ | | `label` | string, nullable | Always | The column heading as printed. | | `coverage` | string, nullable | Always | The span the column covers as printed, such as a year ended date, when the statement prints one. | | `start` | string (YYYY-MM-DD), nullable | Always | First day of the period the column covers, when it can be dated. | | `end` | string (YYYY-MM-DD), nullable | Always | Last day of the period the column covers, when it can be dated. | ## `lines[]` One printed line. | Key | Type | Present when | Description | | --------- | ------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `label` | string | Always | The line's caption as printed. | | `kind` | string, one of `net`, `ni_adjust`, `caption`, `item`, `subtotal`, `total_oci`, `ci`, `nci`, `ci_parent` | Always | `net` for net income, `ni_adjust` for a line that adjusts net income before the items (a preferred dividend, the noncontrolling interests' share of net income), `caption` for a heading that prints no figures, `item` for an other comprehensive income item, `subtotal` for a subtotal of items, `total_oci` for total other comprehensive income, `ci` for comprehensive income, `nci` for the noncontrolling interests' share of comprehensive income, `ci_parent` for the company's share. | | `values` | array of string (money) or null | Always | The line's figure per column; null where the cell is blank. | | `printed` | array of string, one of `money`, `dash`, `blank` | Always | How each cell is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell. | ## `signals[]` A check of the statement that does not hold, or a note about its reporting period. | Key | Type | Present when | Description | | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------------------------------------------- | | `severity` | string, one of `info`, `warn` | Always | How much weight the note carries: info or warn. | | `code` | string, one of `coverage_unreadable`, `no_reporting_period`, `oci_ci_identity_mismatch`, `oci_nci_identity_mismatch`, `oci_total_identity_mismatch`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp` | Always | The note's identifier. | | `detail` | string | Always | The note in words. | ## `packet` Where the statement sat in the financial statement packet it arrived in, when it arrived in one. | Key | Type | Present when | Description | | --------------- | ----------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | `section_index` | integer | Always | Position of the statement among the packet's statements, counting from zero. | | `pages` | array of integer | Always | First and last page of the statement within the packet, counting from one. | | `letter_date` | string (YYYY-MM-DD), nullable | Always | Date of the accountant's letter that accompanied the packet, when the letter printed one. | | `letter_page` | integer, nullable | Always | Page of the packet the accountant's letter is on, when the packet carries one. | | `page_list` | array of integer | On a statement whose pages in the packet are not one unbroken run; absent otherwise. | Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise. | > The extracted statement of comprehensive income: its lines, headline figures and checks as the readers return them.