> 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/statement-mappings/list-statement-mappings/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.spreadspace.app/_mcp/server. # List all statement mappings GET https://api.spreadspace.app/api/borrowers/{borrowerId}/extractions/mappings Lists a borrower's statement mappings, one per document that has one, newest document first, each as the retrieve returns it. Pass `loanId` to narrow the list to one loan, and page with `limit` (1 to 25, default 10) and `cursor`. `pending_document_ids` names the documents whose first mapping is still being prepared; read again until it is empty. Requires a plan that includes statement mapping; other plans get a 403. Requires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane). Reference: https://docs.spreadspace.app/api/api-reference/statement-mappings/list-statement-mappings ## Authentication - `Authorization` header (bearer token, required) — Bearer token. Use `ss_live_…` for live data or `ss_test_…` for the sandbox (test mode). See [Authentication](https://docs.spreadspace.app/api/authentication). ## Request ### Path parameters - `borrowerId` (string, required) — The borrower's id. ### Query parameters - `loanId` (string, optional) — Narrow the list to one loan. - `limit` (integer, optional) — Page size, 1 to 25. Defaults to 10. - `cursor` (string, optional) — The `next_cursor` from the previous page. ### Headers - `SpreadSpace-Version` (string, optional) — Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning). ## Response ### 200 OK - `data` (list of StatementMappingResponse, required) — The page: one mapping per document, each as the mapping read returns it for that document, ordered by the document's creation time, newest first. - `limit` (integer, required) — The page size applied: `limit` as given, 1 to 25, or 10 when none was. - `pending_document_ids` (list of string, required) — The ids of the documents of the borrower, or of the loan when `loanId` is given, that have no mapping yet and whose first mapping is being prepared, newest document first. A statement nobody has asked for is prepared by the read that finds it. Empty when there are none. - `next_cursor` (string, optional, nullable) — An opaque string to pass as `cursor` for the next page. Null when there are no more mappings. ## Errors ### 400 Bad Request Error Bad request: validation failed, the cursor is malformed, or the API version is unknown. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 401 Unauthorized Error Unauthorized: the bearer token or API key is missing or invalid. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 402 Payment Required Error Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 403 Forbidden Error Forbidden: authentication succeeded but the caller is not permitted to perform this action, for example an API key missing the required scope, an embed session reaching a loan it was not minted for, or a feature outside the workspace's plan. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 404 Not Found Error Not found: the resource does not exist or is not visible to the calling tenant. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 429 Too Many Requests Error Too many requests: the rate limit was hit, or an idempotency-key replay is still in progress. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ### 500 Internal Server Error Internal server error: an unexpected failure. Quote the `request_id` in support tickets. A mutation sent with an `Idempotency-Key` replays this fault under that key rather than re-running; confirm the resource state before resending with a new key. - `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope. ## Types ### StatementMappingResponse The mapping of one profit and loss statement onto the chart of accounts: the account each printed line belongs to, the figure of every section and account per period, the headline measures, and where each figure comes from in the document. - `mapping_id` (string, required) — The mapping's id. A statement gets a new mapping, under a new id, when its extraction, the workspace's chart of accounts, caption rules or export map, or the mapping version changes. - `document_id` (string, required) — The id of the document the mapping is of. - `status` (string, required) — `ready` or `unmappable`. A `ready` mapping carries a `payload`, whose `mapping_state` says how far the statement could be mapped. `unmappable` means the statement could not be read as a profit and loss statement at all; it carries no payload. - `extraction_version` (integer, required) — The revision of the document's extraction the mapping was made from, the same `extraction_version` the document list and the document webhooks carry. - `engine_version` (string, required) — The version of the mapping logic that made this mapping. - `chart_document_version` (integer, required) — The version of the workspace's chart of accounts the mapping was made under, the `version` that `GET /api/chart-of-accounts` returns. 0 when the workspace has saved no chart. - `chart_rules_version` (integer, required) — The version of the workspace's caption rules the mapping was made under, the `rules_version` that `GET /api/chart-of-accounts` returns. 0 when none was written. - `created_at` (datetime, required) — When the mapping was made. - `stale` (boolean, required) — True when the workspace's chart of accounts, caption rules or export map, or the mapping version, changed after this mapping was made. A stale mapping is still returned while a new one is prepared; read again to receive it. - `payload` (StatementMappingPayload, required, nullable) — A statement as mapped. Every `values` and `sources` array, every measure and `foot` run in the order of `periods`: position `i` of each belongs to period `i`. Every figure is a decimal string with exactly two decimal places. - `error_code` (string, optional, nullable) — `unmappable` on an unmappable mapping, otherwise null. - `chart_version` (string, optional, nullable) — The version of the platform chart of accounts the mapping's accounts come from. Null on an unmappable mapping. ### ApiErrorBody Inner body of the canonical API error envelope. - `type` (string, required) — Stable error type identifier. Pattern-match on this value, not the human-readable message. - `message` (string, required) — Human-readable error message. Subject to wording changes; do not parse. - `request_id` (string, optional, nullable) — Per-request correlation ID (matches `X-Request-ID` response header). Quote in support tickets. - `details` (map from string to string, optional, nullable) — Structured detail. Some error types populate documented keys in every environment: a version conflict (409) carries `current_version`, the version the resource is actually at, so the client can reload and re-apply. Free-form diagnostic detail beyond those keys appears in development environments only. An `insufficient_credits` 402 carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings. ### StatementMappingPayload A statement as mapped. Every `values` and `sources` array, every measure and `foot` run in the order of `periods`: position `i` of each belongs to period `i`. Every figure is a decimal string with exactly two decimal places. - `schema_version` (integer, required) — The version of this payload's shape. Always 1. - `statement` (string, required) — The kind of statement. Always `profit_and_loss`. - `document_id` (string, required) — The id of the document the statement was extracted from. - `mapping_state` (string, required) — `mapped` when the statement's lines were placed on the chart of accounts and walk to its printed bottom line: `tree` is present. `unfooted` when they could not be made to: `tree` is null, `lines` and `measures` state the statement as printed, and `foot` says by how much each period misses. - `periods` (list of StatementMappingPeriod, required) — The statement's period columns, in the order every series of the mapping follows. - `foot` (list of StatementMappingFoot, required) — How the statement foots, one entry per period: the bottom line it prints, the bottom line its lines walk to, and the difference between the two. - `lines` (list of StatementMappingLine, required) — Every line the statement prints, in print order. - `measures` (StatementMappingMeasures, required) — The statement's headline figures per period. - `unmapped_lines` (list of StatementMappingUnmappedLine, required) — The printed lines that carry a figure and that no account received. Empty when every line was placed. - `unmapped_export_account_ids` (list of string, required) — The account ids the workspace's export map gives a code that this mapping's tree does not list. - `overrides_applied` (boolean, required) — Whether corrections made to the statement's figures in the workspace are reflected in the mapping. Always false. - `export_system` (string, optional, nullable) — The export system whose codes the tree's accounts carry in `external_code`, the active system of `GET /api/chart-of-accounts/export-map`. Null when the workspace has no export map. - `tree` (list of StatementMappingNode, optional, nullable) — The statement on the chart of accounts, from revenue down to net income: sections, the accounts under them and measure rows such as gross profit, each with its figure per period and the printed lines it holds. Every account in force is listed with its id, whether or not the statement has a figure for it. Null when `mapping_state` is `unfooted`. ### StatementMappingPeriod One period column of the statement. - `fiscal_year` (integer, required) — The fiscal year the period belongs to. - `period_end` (date, optional, nullable) — The date the period ends. Null when the statement does not state one. - `label` (string, optional, nullable) — The period as the statement prints it. Null when it prints none. - `months_covered` (integer, optional, nullable) — How many months the period covers: 12 for a full year. Null when the printed period does not say. ### StatementMappingFoot How the statement foots in one period. A statement prints rounded figures, so its lines may walk to a bottom line a few dollars from the one it prints: `tolerance` is how far apart the two may be, and on a `mapped` statement `residual` is within it. On an `unfooted` statement the residual is the amount by which the printed lines miss the printed bottom line. - `printed_bottom_line_source` (StatementMappingSource, required, nullable) — Where one figure comes from in the document. - `printed_bottom_line` (string, optional, nullable) — The bottom line the statement prints for the period, its net income. Null when it prints none. - `line_sum` (string, optional, nullable) — The bottom line the statement's lines walk to. On a `mapped` statement it is the sum of the nodes at the top of the tree, measures aside, each counted by its `effect`. Null when the lines give no such walk. - `residual` (string, optional, nullable) — `printed_bottom_line` less `line_sum`. `0.00` when the two agree. Null when either is null. - `tolerance` (string, optional, nullable) — The difference the footing allows in the period, for the rounding of printed figures: a dollar, plus half a dollar for each line of the walk that prints a figure in it. A residual of `3.00` beside a tolerance of `8.50` is a statement that foots. Null when the lines give no walk. ### StatementMappingLine One line as the statement prints it. - `key` (string, required) — The line's key, unique within the statement. The tree's `member_keys` and the mapping's `unmapped_lines` name lines by it. - `label` (string, required) — The line's caption as printed. - `depth` (integer, required) — How far the line is indented on the statement, 0 for the outermost level. - `is_total` (boolean, required) — Whether the line is a total or a subtotal of the lines above it. - `values` (list of string, required) — The line's figure per period, as the statement prints it. Null where the statement prints none. - `sources` (list of StatementMappingSource, required) — Where each figure of `values` comes from, in the same order. Null where the figure is null. - `filed_under` (string, optional, nullable) — The key of the tree node the line is placed on. Null when no node received it, and on every line of an `unfooted` statement. - `filed_values` (list of string, optional, nullable) — The line's figure per period as that node counts it, positive in the direction of the node's `effect`. Null when `filed_under` is null. ### StatementMappingMeasures The statement's headline figures. Each is one figure per period, null where the period has none, and null as a whole when the statement states no such figure. On a `mapped` statement revenue, gross profit, operating expenses, operating income, income before income taxes and net income are the tree's own figures. On an `unfooted` statement they are the figures the statement prints. - `revenue` (list of string, optional, nullable) — Net revenue. - `gross_profit` (list of string, optional, nullable) — Gross profit. - `operating_expenses` (list of string, optional, nullable) — Total operating expenses. - `operating_income` (list of string, optional, nullable) — Operating income. - `pretax_income` (list of string, optional, nullable) — Income before income taxes. - `net_income` (list of string, optional, nullable) — Net income: the bottom line the statement prints. - `ebitda` (list of string, optional, nullable) — Earnings before interest, taxes, depreciation and amortization. - `noi` (list of string, optional, nullable) — Net operating income, stated for a rental property's statement only. Null for every other statement. ### StatementMappingUnmappedLine A printed line that carries a figure and that no account received. - `key` (string, required) — The line's key, the `key` of a member of `lines`. - `section` (string, optional, nullable) — The section of the statement the line prints in: `revenue`, `cogs`, `other_income`, `opex`, `other_expenses`, `interest`, `dispositions` or `taxes`, as on a node. Null when the line prints outside every section, or the statement's sections could not be read. - `suggested_account_id` (string, optional, nullable) — Reserved for an account suggested for the line. Always null. ### StatementMappingNode One row of the mapped statement: a section or a grouping of accounts (`folder`), an account (`leaf`), or a computed row such as gross profit (`measure`). The tree can be recomputed from the payload, to the cent. Every figure on a folder or an account is positive in the direction of the node's `effect`: a positive figure on a cost is a cost, a negative one is a credit against it, and a gain or loss on dispositions is positive for a gain. A node's figure is the sum of the nodes under it, measures aside, each added when its `effect` is the node's own and subtracted otherwise, plus the `filed_values` of the lines placed on it, plus its `unitemized`. A null counts as no figure. Gross profit is revenue less cost of goods sold. Operating income is gross profit less operating expenses. Income before income taxes is operating income plus other income, less other expenses, less interest, plus gains on dispositions. The net income row is the bottom line the statement prints. The nodes at the top of the tree, measures aside, each counted by its `effect`, sum to `foot.line_sum`, and `foot.residual` is the difference. A line's `values` are the figures as the statement prints them, in the statement's own sign presentation. Its `filed_values` are what the tree counts. - `kind` (string, required) — `folder`, `leaf` or `measure`. - `key` (string, required) — The node's key, unique within the tree. An account's key is its account id; a measure's is `m:` followed by the measure's name. - `label` (string, required) — The node's name in the chart of accounts. - `values` (list of string, required) — The node's figure per period, positive in the direction of `effect`. Null where it has none. - `unitemized` (list of string, required) — The part of each figure of `values` that the statement prints no line for: the figure, less the nodes under it, less the lines placed on it. `0.00` where they account for all of it. Null where the figure is null, and in every period on a measure. - `sources` (list of StatementMappingSource, required) — Where each figure of `values` comes from, in the same order. Null where the figure is null. - `member_keys` (list of string, required) — The keys of the printed lines the node holds, those of the nodes under it included. Each is the `key` of a member of `lines`. - `direct_member_keys` (list of string, required) — The keys of the printed lines placed on the node itself rather than on a node under it. - `flagged_keys` (list of string, required) — The keys of the node's printed lines that are marked for a reader's attention: an expense line whose caption names no expense (uncategorized, suspense), names something that is not an expense (an owner's draw, a loan payment, an asset purchase), or is a bare catch-all such as other or miscellaneous. A marked line stays where it is placed. Empty when none is marked. - `reclassified_keys` (list of string, required) — Always empty. The key stays so the shape of a node is unchanged. - `children` (list of StatementMappingNode, required) — The nodes under this one. Empty when it has none. - `account_id` (string, optional, nullable) — The chart account's id, on a `leaf`. Null on a folder and on a measure. - `section` (string, optional, nullable) — The statement section the node sits in: `revenue`, `cogs`, `other_income`, `opex`, `other_expenses`, `interest`, `dispositions` or `taxes`. Null on a node that sits in no one section, such as a measure. - `role` (string, optional, nullable) — On the folder that stands for a whole section, that section's name. Null on every other node. - `measure` (string, optional, nullable) — On a `measure`, which one: `gross_profit`, `operating_income`, `pretax_income`, `net_income`, `ebit`, `adjusted_ebit`, `ebitda`, `adjusted_ebitda`, `ebita` or `adjusted_ebita`. Null on every other node. - `external_code` (string, optional, nullable) — The account's code in the workspace's export system, when its export map gives the account one. Null otherwise. - `external_label` (string, optional, nullable) — The account's name in the workspace's export system, when its export map gives the account one. Null otherwise. - `effect` (string, optional, nullable) — `adds` or `subtracts`: how the node's figures count toward net income. A positive figure on an `adds` node raises it, on a `subtracts` node lowers it. Null on a measure. ### StatementMappingSource Where one figure comes from in the document. - `kind` (string, required) — `printed` when the document prints the figure, at `address`. `derived` when the figure is computed from figures the document prints. - `pages` (list of integer, required) — The pages of the document the figure is printed on, numbered from 1, in ascending order. A derived figure lists the pages of the figures it is computed from. Empty when the document records no page for the figure. - `document_id` (string, optional, nullable) — The id of the document the figure comes from. Null when the mapping records none for the figure. - `address` (string, optional, nullable) — A printed figure's address in the document's report data, for example `lines.12.0` for the figure of `lines[12]` in the first period column. Null on a derived figure. ## Examples **Response** ```json { "data": [ { "mapping_id": "5b0c2f4e-8d1a-4c3b-9e7f-2a6d4c8b1e90", "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "status": "ready", "extraction_version": 1, "engine_version": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", "chart_document_version": 0, "chart_rules_version": 0, "created_at": "2026-09-29T00:00:05+00:00", "stale": false, "payload": { "schema_version": 1, "statement": "profit_and_loss", "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "mapping_state": "mapped", "periods": [ { "fiscal_year": 2024, "period_end": "2024-12-31", "label": "For the Year Ended December 31, 2024", "months_covered": 12 } ], "foot": [ { "printed_bottom_line_source": { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.26.0" }, "printed_bottom_line": "793679.20", "line_sum": "793679.20", "residual": "0.00", "tolerance": "2.50" } ], "lines": [ { "key": "pl:revenue", "label": "REVENUE", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:revenue > product revenue", "label": "Product Revenue", "depth": 1, "is_total": false, "values": [ "1657352.45" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.1.0" } ], "filed_under": "pl.revenue.sales", "filed_values": [ "1657352.45" ] }, { "key": "pl:revenue > service revenue", "label": "Service Revenue", "depth": 1, "is_total": false, "values": [ "697662.95" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.2.0" } ], "filed_under": "pl.revenue.sales", "filed_values": [ "697662.95" ] }, { "key": "pl:revenue > total revenue", "label": "Total Revenue", "depth": 1, "is_total": true, "values": [ "2355015.40" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.3.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:cost of goods sold", "label": "COST OF GOODS SOLD", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:cost of goods sold > materials", "label": "Materials", "depth": 1, "is_total": false, "values": [ "544202.39" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.5.0" } ], "filed_under": "pl.cogs.purchases", "filed_values": [ "544202.39" ] }, { "key": "pl:cost of goods sold > direct labor", "label": "Direct Labor", "depth": 1, "is_total": false, "values": [ "197195.78" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.6.0" } ], "filed_under": "pl.cogs.labor", "filed_values": [ "197195.78" ] }, { "key": "pl:cost of goods sold > manufacturing overhead", "label": "Manufacturing Overhead", "depth": 1, "is_total": false, "values": [ "96048.44" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.7.0" } ], "filed_under": "pl.cogs.other_costs", "filed_values": [ "96048.44" ] }, { "key": "pl:cost of goods sold > total cogs", "label": "Total COGS", "depth": 1, "is_total": true, "values": [ "837446.61" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.8.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:gross profit", "label": "GROSS PROFIT", "depth": 0, "is_total": false, "values": [ "1517568.79" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.9.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:operating expenses", "label": "OPERATING EXPENSES", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:operating expenses > salaries and wages", "label": "Salaries and Wages", "depth": 1, "is_total": false, "values": [ "290836.02" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.11.0" } ], "filed_under": "pl.opex.labor.salaries", "filed_values": [ "290836.02" ] }, { "key": "pl:operating expenses > rent expense", "label": "Rent Expense", "depth": 1, "is_total": false, "values": [ "45745.93" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.12.0" } ], "filed_under": "pl.opex.rent", "filed_values": [ "45745.93" ] }, { "key": "pl:operating expenses > utilities", "label": "Utilities", "depth": 1, "is_total": false, "values": [ "6212.66" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.13.0" } ], "filed_under": "pl.opex.utilities", "filed_values": [ "6212.66" ] }, { "key": "pl:operating expenses > insurance", "label": "Insurance", "depth": 1, "is_total": false, "values": [ "15227.27" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.14.0" } ], "filed_under": "pl.opex.insurance", "filed_values": [ "15227.27" ] }, { "key": "pl:operating expenses > marketing and advertising", "label": "Marketing and Advertising", "depth": 1, "is_total": false, "values": [ "71176.85" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.15.0" } ], "filed_under": "pl.opex.advertising", "filed_values": [ "71176.85" ] }, { "key": "pl:operating expenses > depreciation", "label": "Depreciation", "depth": 1, "is_total": false, "values": [ "36904.38" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.16.0" } ], "filed_under": "pl.opex.depreciation", "filed_values": [ "36904.38" ] }, { "key": "pl:operating expenses > office supplies", "label": "Office Supplies", "depth": 1, "is_total": false, "values": [ "5628.98" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.17.0" } ], "filed_under": "pl.opex.ga.office", "filed_values": [ "5628.98" ] }, { "key": "pl:operating expenses > professional fees", "label": "Professional Fees", "depth": 1, "is_total": false, "values": [ "24651.53" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.18.0" } ], "filed_under": "pl.opex.professional", "filed_values": [ "24651.53" ] }, { "key": "pl:operating expenses > total operating expenses", "label": "Total Operating Expenses", "depth": 1, "is_total": true, "values": [ "496383.62" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.19.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:operating income", "label": "OPERATING INCOME", "depth": 0, "is_total": false, "values": [ "1021185.17" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.20.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:other income / (expense)", "label": "OTHER INCOME / (EXPENSE)", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:other income / (expense) > interest expense", "label": "Interest Expense", "depth": 1, "is_total": false, "values": [ "-24791.92" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.22.0" } ], "filed_under": "pl.interest", "filed_values": [ "24791.92" ] }, { "key": "pl:other income / (expense) > other income", "label": "Other Income", "depth": 1, "is_total": false, "values": [ "8263.96" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.23.0" } ], "filed_under": "pl.other_income", "filed_values": [ "8263.96" ] }, { "key": "pl:derived:lines.21:total", "label": "Total OTHER INCOME / (EXPENSE)", "depth": 0, "is_total": true, "values": [ "-16527.96" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "filed_under": null, "filed_values": null }, { "key": "pl:income before tax", "label": "INCOME BEFORE TAX", "depth": 0, "is_total": false, "values": [ "1004657.21" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.24.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:income tax expense (21%)", "label": "Income Tax Expense (21%)", "depth": 0, "is_total": false, "values": [ "-210978.01" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.25.0" } ], "filed_under": "pl.taxes", "filed_values": [ "210978.01" ] }, { "key": "pl:net income", "label": "NET INCOME", "depth": 0, "is_total": false, "values": [ "793679.20" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.26.0" } ], "filed_under": null, "filed_values": null } ], "measures": { "revenue": [ "2355015.40" ], "gross_profit": [ "1517568.79" ], "operating_expenses": [ "496383.62" ], "operating_income": [ "1021185.17" ], "pretax_income": [ "1004657.21" ], "net_income": [ "793679.20" ], "ebitda": [ "1066353.51" ], "noi": null }, "unmapped_lines": [], "unmapped_export_account_ids": [ "bs.cash" ], "overrides_applied": false, "export_system": "ledger_one", "tree": [ { "kind": "folder", "key": "pl.revenue", "label": "Net Revenue", "values": [ "2355015.40" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.3.0" } ], "member_keys": [ "pl:revenue > product revenue", "pl:revenue > service revenue" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.revenue.sales", "label": "Sales", "values": [ "2355015.40" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.3.0" } ], "member_keys": [ "pl:revenue > product revenue", "pl:revenue > service revenue" ], "direct_member_keys": [ "pl:revenue > product revenue", "pl:revenue > service revenue" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.revenue.sales", "section": "revenue", "role": null, "measure": null, "external_code": "4000", "external_label": null, "effect": "adds" }, { "kind": "leaf", "key": "pl.revenue.returns_allowances", "label": "Returns and allowances", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.revenue.returns_allowances", "section": "revenue", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "adds" }, { "kind": "leaf", "key": "pl.revenue.unclassified", "label": "Unclassified", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.revenue.unclassified", "section": "revenue", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "adds" }, { "kind": "leaf", "key": "pl.revenue.other", "label": "Other", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.revenue.other", "section": "revenue", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "adds" } ], "account_id": null, "section": "revenue", "role": "revenue", "measure": null, "external_code": null, "external_label": null, "effect": "adds" }, { "kind": "folder", "key": "pl.cogs", "label": "COGS", "values": [ "837446.61" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [ "pl:cost of goods sold > materials", "pl:cost of goods sold > direct labor", "pl:cost of goods sold > manufacturing overhead" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.cogs.purchases", "label": "Purchases", "values": [ "544202.39" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.5.0" } ], "member_keys": [ "pl:cost of goods sold > materials" ], "direct_member_keys": [ "pl:cost of goods sold > materials" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.cogs.purchases", "section": "cogs", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.cogs.labor", "label": "Labor (COGS)", "values": [ "197195.78" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.6.0" } ], "member_keys": [ "pl:cost of goods sold > direct labor" ], "direct_member_keys": [ "pl:cost of goods sold > direct labor" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.cogs.labor", "section": "cogs", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.cogs.depreciation", "label": "Depreciation", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.cogs.depreciation", "section": "cogs", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.cogs.inventory", "label": "Inventory", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.cogs.inventory", "section": "cogs", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.cogs.other_costs", "label": "Other costs", "values": [ "96048.44" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.7.0" } ], "member_keys": [ "pl:cost of goods sold > manufacturing overhead" ], "direct_member_keys": [ "pl:cost of goods sold > manufacturing overhead" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.cogs.other_costs", "section": "cogs", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" } ], "account_id": null, "section": "cogs", "role": "cogs", "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "measure", "key": "m:gross_profit", "label": "Gross profit", "values": [ "1517568.79" ], "unitemized": [ null ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": null, "role": null, "measure": "gross_profit", "external_code": null, "external_label": null, "effect": null }, { "kind": "folder", "key": "pl.other_income", "label": "Other income", "values": [ "8263.96" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.23.0" } ], "member_keys": [ "pl:other income / (expense) > other income" ], "direct_member_keys": [ "pl:other income / (expense) > other income" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": "other_income", "role": "other_income", "measure": null, "external_code": null, "external_label": null, "effect": "adds" }, { "kind": "folder", "key": "pl.opex", "label": "Operating expenses", "values": [ "496383.62" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [ "pl:operating expenses > salaries and wages", "pl:operating expenses > rent expense", "pl:operating expenses > utilities", "pl:operating expenses > insurance", "pl:operating expenses > marketing and advertising", "pl:operating expenses > depreciation", "pl:operating expenses > office supplies", "pl:operating expenses > professional fees" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.opex.advertising", "label": "Advertising", "values": [ "71176.85" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.15.0" } ], "member_keys": [ "pl:operating expenses > marketing and advertising" ], "direct_member_keys": [ "pl:operating expenses > marketing and advertising" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.advertising", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.commissions", "label": "Commissions", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.commissions", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.officer", "label": "Officer compensation", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.officer", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.labor", "label": "Labor cost", "values": [ "290836.02" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.11.0" } ], "member_keys": [ "pl:operating expenses > salaries and wages" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.opex.labor.salaries", "label": "Salaries and wages", "values": [ "290836.02" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [ "pl:operating expenses > salaries and wages" ], "direct_member_keys": [ "pl:operating expenses > salaries and wages" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.labor.salaries", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.labor.payroll_taxes", "label": "Payroll taxes", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.labor.payroll_taxes", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.labor.pension", "label": "Pension and profit-sharing plans", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.labor.pension", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.labor.benefits", "label": "Employee benefits", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.labor.benefits", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.labor.workers_comp", "label": "Workers compensation", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.labor.workers_comp", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" } ], "account_id": "pl.opex.labor", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.rent", "label": "Rent", "values": [ "45745.93" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.12.0" } ], "member_keys": [ "pl:operating expenses > rent expense" ], "direct_member_keys": [ "pl:operating expenses > rent expense" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.rent", "section": "opex", "role": null, "measure": null, "external_code": "6100", "external_label": "Rent expense", "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.professional", "label": "Professional fees and services", "values": [ "24651.53" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.18.0" } ], "member_keys": [ "pl:operating expenses > professional fees" ], "direct_member_keys": [ "pl:operating expenses > professional fees" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.professional", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.research_development", "label": "Research and development", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.research_development", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.da", "label": "Depreciation & amortization", "values": [ "36904.38" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.16.0" } ], "member_keys": [ "pl:operating expenses > depreciation" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.opex.depreciation", "label": "Depreciation", "values": [ "36904.38" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.16.0" } ], "member_keys": [ "pl:operating expenses > depreciation" ], "direct_member_keys": [ "pl:operating expenses > depreciation" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.depreciation", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.amortization", "label": "Amortization", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.amortization", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" } ], "account_id": "pl.opex.da", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.taxes", "label": "Taxes and licenses", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.taxes", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.bad_debts", "label": "Bad debts", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.bad_debts", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.charitable", "label": "Charitable contributions", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.charitable", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.software", "label": "Software and subscriptions", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.software", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.bank_charges", "label": "Bank charges", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.bank_charges", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.repairs", "label": "Repairs and maintenance", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.repairs", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.utilities", "label": "Utilities", "values": [ "6212.66" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.13.0" } ], "member_keys": [ "pl:operating expenses > utilities" ], "direct_member_keys": [ "pl:operating expenses > utilities" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.utilities", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.insurance", "label": "Insurance", "values": [ "15227.27" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.14.0" } ], "member_keys": [ "pl:operating expenses > insurance" ], "direct_member_keys": [ "pl:operating expenses > insurance" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.insurance", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.administrative", "label": "Administrative", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.administrative", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.unclassified", "label": "Unclassified", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.unclassified", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.ga", "label": "Other G&A", "values": [ "5628.98" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.17.0" } ], "member_keys": [ "pl:operating expenses > office supplies" ], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [ { "kind": "leaf", "key": "pl.opex.ga.travel", "label": "Travel and entertainment", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.ga.travel", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.ga.meals", "label": "Meals", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.ga.meals", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.ga.office", "label": "Office and supplies", "values": [ "5628.98" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.17.0" } ], "member_keys": [ "pl:operating expenses > office supplies" ], "direct_member_keys": [ "pl:operating expenses > office supplies" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.ga.office", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "leaf", "key": "pl.opex.ga.auto", "label": "Auto and vehicle", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": "pl.opex.ga.auto", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" } ], "account_id": "pl.opex.ga", "section": "opex", "role": null, "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" } ], "account_id": null, "section": "opex", "role": "opex", "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "folder", "key": "pl.other_expenses", "label": "Other expenses", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": "other_expenses", "role": "other_expenses", "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "folder", "key": "pl.interest", "label": "Interest expense", "values": [ "24791.92" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [ "pl:other income / (expense) > interest expense" ], "direct_member_keys": [ "pl:other income / (expense) > interest expense" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": "interest", "role": "interest", "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "folder", "key": "pl.dispositions", "label": "Gain (loss) on dispositions", "values": [ null ], "unitemized": [ null ], "sources": [ null ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": "dispositions", "role": "dispositions", "measure": null, "external_code": null, "external_label": null, "effect": "adds" }, { "kind": "folder", "key": "pl.taxes", "label": "Income taxes", "values": [ "210978.01" ], "unitemized": [ "0.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": null } ], "member_keys": [ "pl:income tax expense (21%)" ], "direct_member_keys": [ "pl:income tax expense (21%)" ], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": "taxes", "role": "taxes", "measure": null, "external_code": null, "external_label": null, "effect": "subtracts" }, { "kind": "measure", "key": "m:net_income", "label": "Net income", "values": [ "793679.20" ], "unitemized": [ null ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "7a1d4e9c2b3f4a5d8e6c1b0f", "address": "lines.26.0" } ], "member_keys": [], "direct_member_keys": [], "flagged_keys": [], "reclassified_keys": [], "children": [], "account_id": null, "section": null, "role": null, "measure": "net_income", "external_code": null, "external_label": null, "effect": null } ] }, "error_code": null, "chart_version": "platform-2026-09-24" }, { "mapping_id": "2c7e9b4d-1f3a-4d6c-8e5b-7a9f0c2d4e61", "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "status": "ready", "extraction_version": 1, "engine_version": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", "chart_document_version": 0, "chart_rules_version": 0, "created_at": "2026-09-29T00:00:04+00:00", "stale": false, "payload": { "schema_version": 1, "statement": "profit_and_loss", "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "mapping_state": "unfooted", "periods": [ { "fiscal_year": 2024, "period_end": "2024-12-31", "label": "January - December 2024", "months_covered": 12 } ], "foot": [ { "printed_bottom_line_source": { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.20.0" }, "printed_bottom_line": "121300.00", "line_sum": "128800.00", "residual": "-7500.00", "tolerance": "1.50" } ], "lines": [ { "key": "pl:income", "label": "Income", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:income > catering sales", "label": "Catering Sales", "depth": 1, "is_total": false, "values": [ "412500.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.1.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:income > delivery fees", "label": "Delivery Fees", "depth": 1, "is_total": false, "values": [ "18300.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.2.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:total income", "label": "Total Income", "depth": 0, "is_total": true, "values": [ "430800.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.3.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:cost of goods sold", "label": "Cost of Goods Sold", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:cost of goods sold > food and beverage", "label": "Food and Beverage", "depth": 1, "is_total": false, "values": [ "151200.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.5.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:cost of goods sold > kitchen labor", "label": "Kitchen Labor", "depth": 1, "is_total": false, "values": [ "84600.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.6.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:total cost of goods sold", "label": "Total Cost of Goods Sold", "depth": 0, "is_total": true, "values": [ "235800.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.7.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:gross profit", "label": "Gross Profit", "depth": 0, "is_total": false, "values": [ "195000.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.8.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses", "label": "Expenses", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses > rent", "label": "Rent", "depth": 1, "is_total": false, "values": [ "36000.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.10.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses > utilities", "label": "Utilities", "depth": 1, "is_total": false, "values": [ "9450.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.11.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses > insurance", "label": "Insurance", "depth": 1, "is_total": false, "values": [ "6200.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.12.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses > marketing", "label": "Marketing", "depth": 1, "is_total": false, "values": [ "4850.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.13.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:expenses > office supplies", "label": "Office Supplies", "depth": 1, "is_total": false, "values": [ "2300.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.14.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:total expenses", "label": "Total Expenses", "depth": 0, "is_total": true, "values": [ "58800.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.15.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:net operating income", "label": "Net Operating Income", "depth": 0, "is_total": false, "values": [ "136200.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.16.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:other expenses", "label": "Other Expenses", "depth": 0, "is_total": false, "values": [ null ], "sources": [ null ], "filed_under": null, "filed_values": null }, { "key": "pl:other expenses > interest expense", "label": "Interest Expense", "depth": 1, "is_total": false, "values": [ "7400.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.18.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:total other expenses", "label": "Total Other Expenses", "depth": 0, "is_total": true, "values": [ "7400.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.19.0" } ], "filed_under": null, "filed_values": null }, { "key": "pl:derived:pretax_income", "label": "Income before taxes", "depth": 0, "is_total": true, "values": [ "128800.00" ], "sources": [ { "kind": "derived", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": null } ], "filed_under": null, "filed_values": null }, { "key": "pl:net income", "label": "Net Income", "depth": 0, "is_total": false, "values": [ "121300.00" ], "sources": [ { "kind": "printed", "pages": [ 1 ], "document_id": "3c9e5b7a1d2f4e6a8b0c4d2e", "address": "lines.20.0" } ], "filed_under": null, "filed_values": null } ], "measures": { "revenue": [ "430800.00" ], "gross_profit": [ "195000.00" ], "operating_expenses": [ "58800.00" ], "operating_income": [ "136200.00" ], "pretax_income": null, "net_income": [ "121300.00" ], "ebitda": [ "128700.00" ], "noi": null }, "unmapped_lines": [ { "key": "pl:income > catering sales", "section": null, "suggested_account_id": null }, { "key": "pl:income > delivery fees", "section": null, "suggested_account_id": null }, { "key": "pl:cost of goods sold > food and beverage", "section": null, "suggested_account_id": null }, { "key": "pl:cost of goods sold > kitchen labor", "section": null, "suggested_account_id": null }, { "key": "pl:expenses > rent", "section": null, "suggested_account_id": null }, { "key": "pl:expenses > utilities", "section": null, "suggested_account_id": null }, { "key": "pl:expenses > insurance", "section": null, "suggested_account_id": null }, { "key": "pl:expenses > marketing", "section": null, "suggested_account_id": null }, { "key": "pl:expenses > office supplies", "section": null, "suggested_account_id": null }, { "key": "pl:other expenses > interest expense", "section": null, "suggested_account_id": null } ], "unmapped_export_account_ids": [], "overrides_applied": false, "export_system": null, "tree": null }, "error_code": null, "chart_version": "platform-2026-09-24" } ], "limit": 10, "pending_document_ids": [ "c1d2e3f4a5b6c7d8e9f0a1b2" ], "next_cursor": null } ``` **SDK Code** ```python import requests url = "https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings" querystring = {"limit":"10"} headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript const url = 'https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.spreadspace.app/api/borrowers/9f8e7d6c5b4a3210a1b2c3d4/extractions/mappings?limit=10")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```