---
title: "Preview Consolidation Entries"
method: POST
path: "/extensions/roboledger/{graph_id}/operations/preview-consolidation-entries"
tags: ["RoboLedger: Analytical Views"]
---

# Preview Consolidation Entries

`POST /extensions/roboledger/{graph_id}/operations/preview-consolidation-entries`

## Request

- Base URL: `https://api.robosystems.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/preview-consolidation-entries`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The consolidating entries a group's month needs, computed from the books and posting nothing. For each member consolidated in full: the parent's investment eliminated against the member's capital (its contributions net of distributions), the outside owners' share of that capital as noncontrolling interest, the intercompany balances, the month's intercompany income against the matching expense, and the outside owners' share of the month's result; for each member on the equity method, the parent's share of its result. Accounts are found by the rs-gaap concept they map to, and an intercompany line by the group entity its event names as counterparty. Each entry is the difference between the balance its kind should hold for the member at the month end and what the consolidation entity already holds, so the entries a person posted with the same kind count. A difference between the parent's investment and its share of a member's capital is returned as a residual and its entry withheld, never plugged; intercompany figures the two sides do not agree on are returned as reconciling items. Rejected on shared-repository graphs.

**Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

## Path parameters

- `graph_id` string, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- PreviewConsolidationEntriesRequest: The month to compute the consolidating entries for.
  - `period` string, required: The month, as YYYY-MM.

## Response `200`

Successful Response

- OperationEnvelopePreviewConsolidationEntriesResponse
  - `operation` string, required: Kebab-case operation name
  - `operationId` string, required: op_-prefixed ULID for audit and SSE correlation
  - `status` 'completed' | 'pending' | 'failed', required: Operation lifecycle state
  - `result` PreviewConsolidationEntriesResponse: The consolidating entries a month needs, computed from the books.
    - `period` string, required: The month, as YYYY-MM.
    - `period_start` string, date, required: The month's first day.
    - `period_end` string, date, required: The month's last day.
    - `consolidation_entity_id` string, required: The entity the entries post in.
    - `proposals` ConsolidationProposal[]: The entries to post; empty when the month is up to date.
      - `adjustment_kind` 'elimination_investment' | 'elimination_intercompany' | 'elimination_unrealized_profit' | 'nci_allocation' | 'nci_distribution' | 'equity_method_pickup' | 'equity_method_distribution' | 'acquisition' | 'deconsolidation' | 'translation' | 'manual', required: What the entry adjusts.
      - `adjusts_entity_id` string, required: The entity whose figures the entry adjusts.
      - `adjusts_entity_name` string, required: That entity's name.
      - `posting_date` string, date, required: The month's last day; for an opening, the eve of the consolidation entity's first month.
      - `memo` string, required: The entry's memo.
      - `basis` string, required: How the amounts were computed.
      - `lines` ConsolidationProposalLine[], required: The entry's lines; they balance.
        - `element_id` string, required: The consolidation entity's account.
        - `account_name` string, required: The account's name.
        - `concept` string, required: The rs-gaap concept the account maps to.
        - `debit_amount` integer: Debit, in cents.
        - `credit_amount` integer: Credit, in cents.
        - `flow_qname` string, nullable: The cash flow row the line offsets, when it eliminates one: the row the member's own line produced, so the consolidated cash flow nets it.
      - `opening` boolean: Part of the consolidation entity's opening balance: what the members' history before the group's first month already needed eliminated, so the consolidated statements open on it rather than move by it. Proposing records it, posted, replacing the earlier one until the first close.
    - `residuals` ConsolidationResidual[]: Differences withheld from the proposals until explained.
      - `entity_id` string, required: The member.
      - `entity_name` string, required: The member's name.
      - `amount` integer, required: Cents: the parent's investment balance less its share of the member's capital. Positive when the parent carries more than its share.
      - `explanation` string, required: What the two figures are.
    - `reconciling_items` ConsolidationReconcilingItem[]: Intercompany figures the two sides do not agree on.
      - `entity_ids` string[], required: The two entities.
      - `concept` string, required: The rs-gaap concept left uneliminated.
      - `entity_id` string, required: The entity whose figure is left.
      - `amount` integer, required: Cents left uneliminated, debit-positive.
      - `description` string, required: What does not agree.
    - `notes` string[]: Anything the engine left out, and why.
    - `up_to_date` boolean, required: True when nothing is withheld or left out and the consolidation entity holds what the month needs, posted or in the month's drafts (then `proposals` lists what the drafts hold). A closed month is up to date as posted; read `closed` first.
    - `closed` boolean: True when the consolidation entity has closed the month: its entries are as posted, and nothing is recomputed.
    - `incomplete` boolean: True when the engine left an entry out — a member's books it cannot read, an account the consolidation entity lacks; `notes` says which. The group close waits on it whatever the residuals.
    - `drafted_entry_ids` string[]: The month's drafts propose-consolidation-entries wrote, waiting for the consolidation entity's close to post them.
  - `at` string, required: ISO-8601 UTC timestamp
  - `createdBy` string, nullable: User ID that initiated the operation
  - `idempotentReplay` boolean: True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: Access denied
- `404`: Resource not found
- `409`: Idempotency-Key conflict — key reused with different body
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/robosystems/apis/robosystems-api.md) · [All operations](https://skmtc.dev/robosystems/apis/robosystems-api/llms.txt) · [OpenAPI document](https://skmtc.dev/robosystems/apis/robosystems-api/revisions/e661e2d5ca6a?raw)
