StabisoDocs

API reference

Consolidation

Group consolidation: the group structure and its approval, a run that translates the subsidiaries to the reporting currency (IAS 21) and aggregates them, the translated trial balances, the group statements before eliminations and the translation reserve roll-forward.

Operation Summary Scope Idempotency-Key
GET /v1/consolidation-groups List the consolidation groups read
POST /v1/consolidation-groups Create a consolidation group draft required
GET /v1/consolidation-groups/{group} Get a consolidation group read
GET /v1/consolidation-groups/{group}/checklist Get the close checklist of a group read
GET /v1/consolidation-groups/{group}/members List the member versions of a group read
POST /v1/consolidation-groups/{group}/members Request a subsidiary's place in the group draft required
GET /v1/consolidation-groups/{group}/runs List the runs of a group read
POST /v1/consolidation-groups/{group}/runs Run a consolidation draft required
GET /v1/consolidation-runs/{consolidation_run} Get a consolidation run read
GET /v1/consolidation-runs/{consolidation_run}/balance-sheet Get the group balance sheet of a run read
GET /v1/consolidation-runs/{consolidation_run}/cash-flow Get the group cash flow statement of a run read
GET /v1/consolidation-runs/{consolidation_run}/cta Get the translation reserve roll-forward of a run read
GET /v1/consolidation-runs/{consolidation_run}/eliminations List the eliminations of a run read
GET /v1/consolidation-runs/{consolidation_run}/exceptions List the exceptions of a run read
GET /v1/consolidation-runs/{consolidation_run}/profit-and-loss Get the group profit and loss of a run read
GET /v1/consolidation-runs/{consolidation_run}/rates List the rates a run used read
GET /v1/consolidation-runs/{consolidation_run}/trial-balance Get an entity's translated trial balance read

GET /v1/consolidation-groups

List the consolidation groups

The organization's groups by code, each with the latest approved version of every subsidiary, the member versions that wait for a second person and how many runs it has.

Required scope read (admin implies every scope)
Operation id list_groups_v1_consolidation_groups_get

Parameters

In Name Type Required Description
query limit integer At most this many rows. (min 1; max 500; default 100)

Example request

curl "$ERP_URL/v1/consolidation-groups" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of GroupOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "code": "string",
    "name": "string",
    "parent_entity": "string",
    "reporting_currency": "string",
    "framework": "fer",
    "framework_verified": true,
    "framework_implemented": true,
    "goodwill_policy": "amortise",
    "goodwill_years": 1,
    "ic_tolerance_amount": "string",
    "members": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "group": "string",
        "entity": "string",
        "entity_name": "string",
        "currency": "string",
        "version": 1,
        "ownership_percent": "string",
        "method": "full",
        "control_basis": "string",
        "goodwill_policy": "amortise",
        "acquired_on": "2026-09-21",
        "consolidated_from": "2026-09-21",
        "effective_from": "2026-09-21",
        "corrects_version": null,
        "acquisition_cost": null,
        "acquisition_cost_currency": null,
        "net_assets_at_acquisition": null,
        "investment_account": null,
        "approval_id": null,
        "requested_by": {},
        "approved_by": {},
        "approved_at": "2026-09-21T09:30:00Z"
      }
    ],
    "pending": [
      {
        "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "entity": "string",
        "ownership_percent": "string",
        "consolidated_from": "2026-09-21",
        "requested_by": {},
        "requested_at": "2026-09-21T09:30:00Z"
      }
    ],
    "runs": 1,
    "created_by": {},
    "created_at": "2026-09-21T09:30:00Z"
  }
]

POST /v1/consolidation-groups

Create a consolidation group

Create a group: a parent entity, the reporting currency and the framework (ifrs, fer or hgb). A human does it (the policy action approve_group_structure denies agents with 403 policy_denied). The reporting currency is the parent's functional currency in this version. The goodwill policy and the useful life of goodwill must be ones the framework allows; a life left empty is the framework's for goodwill whose life cannot be determined (5 years under fer, 10 under hgb). The group has no subsidiary until a member version is requested (POST /v1/consolidation-groups/{group}/members) and approved by a second person. 409 when the code is taken. Needs an Idempotency-Key.

Required scope draft (admin implies every scope)
Idempotency-Key required
Operation id create_group_v1_consolidation_groups_post

Request body

application/json (required): GroupInput

Field Type Required Description
code string or null The group's own code, unique in the organization (letters, digits, ., _, -, at most 30 characters). Omitted: made from the name (Demo Group is DEMO-GROUP, with -2 when taken). (pattern ^[A-Za-z0-9][A-Za-z0-9._-]{0,29}$)
name string yes The group's name. (min length 1; max length 200)
parent_entity string yes Code of the parent entity: the entity that controls the others. It is in the group without being a member, and is not translated.
reporting_currency string or null The presentation currency (ISO 4217). In this version it is the parent's functional currency: the parent is carried over unchanged. Omitted: that currency. (pattern ^[A-Z]{3}$)
framework "fer" | "hgb" | "ifrs" yes The framework the group reports under: ifrs, fer (Swiss GAAP FER 30) or hgb (sections 290 to 315e HGB). A run under a framework whose rules have not been checked against its standard is refused (framework_unverified, framework_not_implemented); today all three run.
goodwill_policy "amortise" | "impairment_only" | "offset_equity" or null How goodwill is treated: impairment_only (IFRS), offset_equity (FER) or amortise (FER, HGB); default: the framework's first. It must be one the framework allows.
goodwill_years integer or null The useful life of goodwill in years, for the policies that take one: amortise, and under fer also offset_equity (the notes show a theoretical capitalisation over it). Left empty, the framework's life for goodwill whose life cannot be determined: 5 years under fer, 10 under hgb. At most 20; null for impairment_only. (min 1; max 20)
ic_tolerance_amount decimal string The difference between two sides of an intragroup balance, or of intragroup income and expense, that is still accepted, in the reporting currency: a residual of an elimination whose sides do not agree is the blocking exception ic_difference above it and a warning within it. (min 0; default "1")

Example request

curl -X POST "$ERP_URL/v1/consolidation-groups" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "code": "DEMO",
  "framework": "ifrs",
  "name": "Demo Group",
  "parent_entity": "CH01",
  "reporting_currency": "CHF"
}'

Responses

Status Meaning Body
201 Created GroupOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "code": "string",
  "name": "string",
  "parent_entity": "string",
  "reporting_currency": "string",
  "framework": "fer",
  "framework_verified": true,
  "framework_implemented": true,
  "goodwill_policy": "amortise",
  "goodwill_years": 1,
  "ic_tolerance_amount": "string",
  "members": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "group": "string",
      "entity": "string",
      "entity_name": "string",
      "currency": "string",
      "version": 1,
      "ownership_percent": "string",
      "method": "full",
      "control_basis": "string",
      "goodwill_policy": "amortise",
      "acquired_on": "2026-09-21",
      "consolidated_from": "2026-09-21",
      "effective_from": "2026-09-21",
      "corrects_version": 1,
      "acquisition_cost": "string",
      "acquisition_cost_currency": "string",
      "net_assets_at_acquisition": "string",
      "investment_account": "string",
      "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "requested_by": {},
      "approved_by": {},
      "approved_at": "2026-09-21T09:30:00Z"
    }
  ],
  "pending": [
    {
      "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "entity": "string",
      "ownership_percent": "string",
      "consolidated_from": "2026-09-21",
      "requested_by": {},
      "requested_at": "2026-09-21T09:30:00Z"
    }
  ],
  "runs": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z"
}

GET /v1/consolidation-groups/{group}

Get a consolidation group

One group: the framework (and whether its sources are verified, so that a run is allowed), the latest approved version of every subsidiary and the versions that wait for approval. 404 for an unknown group.

Required scope read (admin implies every scope)
Operation id get_group_v1_consolidation_groups__group__get

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).

Example request

curl "$ERP_URL/v1/consolidation-groups/DEMO" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK GroupOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "code": "string",
  "name": "string",
  "parent_entity": "string",
  "reporting_currency": "string",
  "framework": "fer",
  "framework_verified": true,
  "framework_implemented": true,
  "goodwill_policy": "amortise",
  "goodwill_years": 1,
  "ic_tolerance_amount": "string",
  "members": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "group": "string",
      "entity": "string",
      "entity_name": "string",
      "currency": "string",
      "version": 1,
      "ownership_percent": "string",
      "method": "full",
      "control_basis": "string",
      "goodwill_policy": "amortise",
      "acquired_on": "2026-09-21",
      "consolidated_from": "2026-09-21",
      "effective_from": "2026-09-21",
      "corrects_version": 1,
      "acquisition_cost": "string",
      "acquisition_cost_currency": "string",
      "net_assets_at_acquisition": "string",
      "investment_account": "string",
      "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "requested_by": {},
      "approved_by": {},
      "approved_at": "2026-09-21T09:30:00Z"
    }
  ],
  "pending": [
    {
      "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "entity": "string",
      "ownership_percent": "string",
      "consolidated_from": "2026-09-21",
      "requested_by": {},
      "requested_at": "2026-09-21T09:30:00Z"
    }
  ],
  "runs": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z"
}

GET /v1/consolidation-groups/{group}/checklist

Get the close checklist of a group

The group close checklist at a month end, in the shape of an entity's checklist (pass, warn, fail, n/a): the member periods are closed, every intercompany relationship between two members agrees, and, from the latest run at the date, every rate is available, every account maps, every elimination agrees within the tolerance, the translation reserve ties and the balance sheet balances. A run older than the books is a warning on run. The checks of later versions (manual adjustments, finalising, non-controlling interests) are n/a. ready is true when nothing fails. 422 when the date is not a month end.

Required scope read (admin implies every scope)
Operation id get_checklist_v1_consolidation_groups__group__checklist_get

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).
query as_of string (date) yes The group date: a month end (YYYY-MM-DD).

Example request

curl "$ERP_URL/v1/consolidation-groups/DEMO/checklist?as_of=2026-09-30" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK GroupChecklist
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "group": "string",
  "as_of": "2026-09-21",
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "run_version": 1,
  "ready": true,
  "checks": [
    {
      "id": "string",
      "title": "string",
      "status": "fail",
      "detail": "string",
      "code": "string",
      "details": {}
    }
  ]
}

GET /v1/consolidation-groups/{group}/members

List the member versions of a group

Every approved version of every subsidiary, by entity and version: who requested and who approved it, the share, the control basis and the dates. Versions are append-only; a change is a new version.

Required scope read (admin implies every scope)
Operation id list_members_v1_consolidation_groups__group__members_get

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).

Example request

curl "$ERP_URL/v1/consolidation-groups/DEMO/members" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of MemberOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "group": "string",
    "entity": "string",
    "entity_name": "string",
    "currency": "string",
    "version": 1,
    "ownership_percent": "string",
    "method": "full",
    "control_basis": "string",
    "goodwill_policy": "amortise",
    "acquired_on": "2026-09-21",
    "consolidated_from": "2026-09-21",
    "effective_from": "2026-09-21",
    "corrects_version": 1,
    "acquisition_cost": "string",
    "acquisition_cost_currency": "string",
    "net_assets_at_acquisition": "string",
    "investment_account": "string",
    "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "requested_by": {},
    "approved_by": {},
    "approved_at": "2026-09-21T09:30:00Z"
  }
]

POST /v1/consolidation-groups/{group}/members

Request a subsidiary's place in the group

Ask for a new version of a subsidiary in the group: its ownership share, the control assessment (IFRS 10.5 to 10.7, Art. 963 para. 2 OR), when it was acquired and from when it is consolidated. A human does it (the policy action approve_group_structure denies agents with 403 policy_denied); by default the version waits for a second person (POST /v1/approvals/{approval_id}/approve, status: pending_approval), and a one-person organization allows approve_group_structure in its approval policy (PUT /v1/approval-policy), which puts the version in force at once (status: approved). A key the system issued can only request. 409 rate_source_missing when the subsidiary's currency is not published by the rate source (the ECB), 409 fx_rate_missing when no rate is published yet for the date, 409 when a version of the subsidiary already waits for approval, 422 for the parent or a share beyond 100 %. Only direct subsidiaries are supported. Needs an Idempotency-Key.

Required scope draft (admin implies every scope)
Idempotency-Key required
Operation id request_member_v1_consolidation_groups__group__members_post

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).

Request body

application/json (required): MemberInput

Field Type Required Description
entity string yes Code of the subsidiary entity (a direct subsidiary of the parent).
ownership_percent decimal string yes The parent's share of the subsidiary, in percent. A percentage with up to four decimals (a decimal string). (max 100; greater than 0)
control_basis string yes The control assessment (IFRS 10.5 to 10.7; Art. 963 para. 2 OR): why the parent controls the subsidiary. It is kept with the approval and is what a second person confirms. (min length 3; max length 2000)
acquired_on string (date) yes The date the parent acquired control (ISO 8601).
consolidated_from string (date) yes The date from which the subsidiary is consolidated and translated: its equity at this date is translated at the rate of the date. Not before acquired_on.
effective_from string (date) or null The group date from which this version applies; default: consolidated_from. A run takes the version in force at its date.
acquisition_cost decimal string or null What the parent paid for the shares; used by the acquisition entries. (min 0)
acquisition_cost_currency string or null The currency of acquisition_cost; required with it. (pattern ^[A-Z]{3}$)
net_assets_at_acquisition decimal string or null The fair value of the subsidiary's identifiable net assets at acquired_on (IFRS 3.18), in its functional currency. This version takes the book value: it must equal the net assets the subsidiary's ledger holds at that date, else the run reports fair_value_adjustment_unsupported. Required, with the cost and the investment account, for the capital consolidation (E4, E5).
investment_account string or null Code of the account in the parent entity that holds the cost of the shares.

Example request

curl -X POST "$ERP_URL/v1/consolidation-groups/DEMO/members" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "acquired_on": "2026-01-02",
  "acquisition_cost": "800000",
  "acquisition_cost_currency": "CHF",
  "consolidated_from": "2026-01-02",
  "control_basis": "80 % of the voting rights and the right to appoint the management board (IFRS 10.7).",
  "entity": "DE01",
  "ownership_percent": "80"
}'

Responses

Status Meaning Body
201 Created MemberResult
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "status": "approved",
  "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "member": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "group": "string",
    "entity": "string",
    "entity_name": "string",
    "currency": "string",
    "version": 1,
    "ownership_percent": "string",
    "method": "full",
    "control_basis": "string",
    "goodwill_policy": "amortise",
    "acquired_on": "2026-09-21",
    "consolidated_from": "2026-09-21",
    "effective_from": "2026-09-21",
    "corrects_version": 1,
    "acquisition_cost": "string",
    "acquisition_cost_currency": "string",
    "net_assets_at_acquisition": "string",
    "investment_account": "string",
    "approval_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "requested_by": {},
    "approved_by": {},
    "approved_at": "2026-09-21T09:30:00Z"
  }
}

GET /v1/consolidation-groups/{group}/runs

List the runs of a group

The group's runs, newest date and version first, each with its status and how many blocking exceptions and warnings it has.

Required scope read (admin implies every scope)
Operation id list_runs_v1_consolidation_groups__group__runs_get

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).
query limit integer At most this many rows. (min 1; max 500; default 100)

Example request

curl "$ERP_URL/v1/consolidation-groups/DEMO/runs" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of ConsolidationRunSummary
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "as_of": "2026-09-21",
    "version": 1,
    "status": "draft",
    "complete": true,
    "blocking": 1,
    "warnings": 1,
    "created_by": {},
    "created_at": "2026-09-21T09:30:00Z"
  }
]

POST /v1/consolidation-groups/{group}/runs

Run a consolidation

Make a draft run at a month end: read each entity's ledger by entry date (posted entries, without the year-end closing entries), translate the subsidiaries to the reporting currency at the closing, average and historical rates of data-vNext (IAS 21.39 to 21.41), aggregate by report line, eliminate intragroup balances (E1), loans (E2), income and expense (E3) and dividends (E6) between the entities, set the investment against the subsidiary's equity at acquisition with goodwill and non-controlling interests (E4, E5) and amortise goodwill where the framework's policy does (E7), and keep the snapshot. It is one transaction and it never edits an earlier run. Two sides that do not agree in the document currency are the exception ic_difference (blocking above the group's ic_tolerance_amount). A missing rate is the blocking exception rate_missing (the entity is left out and the run says so), never an invented rate. 422 framework_unverified or framework_not_implemented for a framework whose rules are not checked or not built, 422 when the date is not a month end, 409 no_members when no subsidiary is consolidated by the date, and 502 when data-vNext is unavailable. Needs an Idempotency-Key.

Required scope draft (admin implies every scope)
Idempotency-Key required
Operation id create_run_v1_consolidation_groups__group__runs_post

Parameters

In Name Type Required Description
path group string yes Code or id of the consolidation group (GET /v1/consolidation-groups).

Request body

application/json (required): RunInput

Field Type Required Description
as_of string (date) yes The group date: a month end (ISO 8601), because the rates are the calendar months of data-vNext. The ledger is read up to this date by entry date.
comment string or null A note kept on the run. (max length 1000)

Example request

curl -X POST "$ERP_URL/v1/consolidation-groups/DEMO/runs" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "as_of": "2026-09-30",
  "comment": "September close"
}'

Responses

Status Meaning Body
201 Created RunOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "group": "string",
  "as_of": "2026-09-21",
  "version": 1,
  "status": "draft",
  "comment": "string",
  "reporting_currency": "string",
  "framework": "fer",
  "policy": {},
  "members": [
    {
      "entity": "string",
      "role": "parent",
      "currency": "string",
      "version": 1,
      "ownership_percent": "string",
      "consolidated_from": "2026-09-21",
      "acquired_on": "2026-09-21",
      "purchase_data_version": 1,
      "acquisition_cost": "string",
      "acquisition_cost_currency": "string",
      "net_assets_at_acquisition": "string",
      "investment_account": "string",
      "translated": true
    }
  ],
  "complete": true,
  "blocking": 1,
  "warnings": 1,
  "eliminations_applied": true,
  "eliminations": [
    "string"
  ],
  "eliminations_pending": [
    "string"
  ],
  "inputs_digest": "string",
  "entity_heads": {},
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z"
}

GET /v1/consolidation-runs/{consolidation_run}

Get a consolidation run

The header of a run: the group date, the framework and its resolved switches (fixed when the run was made), the entities and member versions used, whether it is complete, the digest of its inputs and the position of each entity's ledger chain. 404 for an unknown run.

Required scope read (admin implies every scope)
Operation id get_run_v1_consolidation_runs__consolidation_run__get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK RunOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "group": "string",
  "as_of": "2026-09-21",
  "version": 1,
  "status": "draft",
  "comment": "string",
  "reporting_currency": "string",
  "framework": "fer",
  "policy": {},
  "members": [
    {
      "entity": "string",
      "role": "parent",
      "currency": "string",
      "version": 1,
      "ownership_percent": "string",
      "consolidated_from": "2026-09-21",
      "acquired_on": "2026-09-21",
      "purchase_data_version": 1,
      "acquisition_cost": "string",
      "acquisition_cost_currency": "string",
      "net_assets_at_acquisition": "string",
      "investment_account": "string",
      "translated": true
    }
  ],
  "complete": true,
  "blocking": 1,
  "warnings": 1,
  "eliminations_applied": true,
  "eliminations": [
    "string"
  ],
  "eliminations_pending": [
    "string"
  ],
  "inputs_digest": "string",
  "entity_heads": {},
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z"
}

GET /v1/consolidation-runs/{consolidation_run}/balance-sheet

Get the group balance sheet of a run

The group balance sheet by report line from the run's snapshot (never recomputed from the ledger): assets, liabilities and equity (capital, retained earnings, the results of earlier years not yet appropriated, the translation reserve) and the result of the year. balanced says assets equal liabilities plus equity. Intragroup balances, income and expense are eliminated (eliminations_applied; a run made before the eliminations existed is the aggregate of the entities); complete is false while the run has a blocking exception.

Required scope read (admin implies every scope)
Operation id get_balance_sheet_v1_consolidation_runs__consolidation_run__balance_sheet_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/balance-sheet" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK GroupBalanceSheet
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "as_of": "2026-09-21",
  "currency": "string",
  "framework": "fer",
  "complete": true,
  "eliminations_applied": true,
  "assets": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "liabilities": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "equity": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "result_of_year": "string",
  "total_assets": "string",
  "total_liabilities": "string",
  "total_equity": "string",
  "after_equity": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "total_after_equity": "0.00",
  "balanced": true
}

GET /v1/consolidation-runs/{consolidation_run}/cash-flow

Get the group cash flow statement of a run

The group cash flow statement of the group year (1 January to the run's date) by the indirect method, from the run and the group's run at the end of the previous year (both snapshots): the group's profit, depreciation added back, the change of each report line in operating, investing or financing activities, and the effect of exchange rates on the cash of subsidiaries in other currencies; the rest of the translation reserve's movement is its own operating line. Each line lists its report lines. 409 group_opening_run_missing (as_of) when the entities had books before the year and the group has no run at the end of the previous year; a group whose books start in the year starts from nothing.

Required scope read (admin implies every scope)
Operation id get_cash_flow_v1_consolidation_runs__consolidation_run__cash_flow_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/cash-flow" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK GroupCashFlow
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "opening_run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "start": "2026-09-21",
  "as_of": "2026-09-21",
  "currency": "string",
  "framework": "string",
  "complete": true,
  "eliminations_applied": true,
  "opening_cash": "string",
  "sections": [
    {
      "section": "financing",
      "total": "string",
      "lines": [
        null
      ]
    }
  ],
  "net_change": "string",
  "closing_cash": "string",
  "balanced": true
}

GET /v1/consolidation-runs/{consolidation_run}/cta

Get the translation reserve roll-forward of a run

For each translated subsidiary the translation reserve at the group date twice: as the balancing amount of its translated balance sheet, and as the roll-forward of the rates (opening net assets, each month's profit and each equity movement times the move of the closing rate since then, IAS 21.41). They agree within rounding (reconciled); a difference beyond it is the blocking exception cta_unreconciled. The reserve starts at zero at the date the subsidiary is consolidated from.

Required scope read (admin implies every scope)
Operation id get_cta_v1_consolidation_runs__consolidation_run__cta_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/cta" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK CtaRollForward
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "string",
  "entities": [
    {
      "entity": "string",
      "currency": "string",
      "start": "2026-09-21",
      "opening_reserve": "string",
      "opening_net_assets": "string",
      "opening_rate": "string",
      "closing_rate": "string",
      "opening_effect": "string",
      "results": [
        null
      ],
      "movements": [
        null
      ],
      "rounding": "string",
      "closing_reserve": "string",
      "translated_reserve": "string",
      "difference": "string",
      "reconciled": true
    }
  ],
  "closing_reserve": "string",
  "reconciled": true
}

GET /v1/consolidation-runs/{consolidation_run}/eliminations

List the eliminations of a run

The elimination layer of the run, per rule and pair of entities: what each side held in every document currency, whether they agree, every line that reverses an account (at the closing rate for a balance, at each month's average for income and expense) and where the residual went. E1 (intragroup balances): an agreed residual is an exchange difference that stays in profit or loss (IAS 21.45). E3 (intragroup income and expense): an agreed residual is a translation difference and goes to the translation reserve (IAS 21.41). Sides that disagree keep their residual on a line of its own (unreconciled) and the run carries ic_difference. Every pair balances. A run made before the eliminations has none (rules is empty).

Required scope read (admin implies every scope)
Operation id get_eliminations_v1_consolidation_runs__consolidation_run__eliminations_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/eliminations" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK RunEliminations
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "currency": "string",
  "rules": [
    "string"
  ],
  "pending": [
    "string"
  ],
  "acquisitions": [
    {
      "entity": "string",
      "parent": "string",
      "currency": "string",
      "ownership_percent": "string",
      "nci_percent": "string",
      "nci_measurement": "proportionate_share",
      "fair_value_basis": "book_value",
      "acquired_on": "2026-09-21",
      "policy": "string",
      "goodwill_years": 1,
      "investment_account": "string",
      "consideration": "string",
      "net_assets_local": "string",
      "historical_rate": "string",
      "closing_rate": "string",
      "equity_at_acquisition": "string",
      "nci_at_acquisition": "string",
      "goodwill_at_acquisition": "string",
      "goodwill_treatment": "asset",
      "goodwill_local": "string",
      "goodwill_closing": "string",
      "goodwill_translation": "string",
      "bargain_purchase_gain": "string",
      "amortisation": null,
      "theoretical_capitalisation": null,
      "negative_goodwill": null,
      "net_assets_closing": "string",
      "profit_of_year": "string",
      "nci_profit": "string",
      "owners_profit": "string",
      "reserve": "string",
      "nci_reserve": "string",
      "other_equity": "string",
      "nci_other": "string",
      "nci_closing": "string",
      "nci_exact": "string",
      "nci_rounding": "string",
      "sources": {},
      "lines": [
        null
      ]
    }
  ],
  "pairs": [
    {
      "rule": "E1",
      "entity_a": "string",
      "entity_b": "string",
      "documents": [
        null
      ],
      "agreed": true,
      "residual": "string",
      "treatment": "cash_in_transit",
      "in_transit": "string",
      "lines": [
        null
      ]
    }
  ],
  "debit": "string",
  "credit": "string"
}

GET /v1/consolidation-runs/{consolidation_run}/exceptions

List the exceptions of a run

What the run could not do or the reader should know, blocking first: rate_missing, unmapped_report_line, cta_unreconciled, ic_capitalised (blocking), ic_difference (blocking above the group's tolerance, else a warning), period_open, member_not_consolidated, cta_starts_at_zero and ic_exchange_difference (warnings), and eliminations_pending (blocking while a subsidiary is in the group, else a warning).

Required scope read (admin implies every scope)
Operation id get_exceptions_v1_consolidation_runs__consolidation_run__exceptions_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/exceptions" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK RunExceptions
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "exceptions": [
    {
      "code": "string",
      "severity": "blocking",
      "entity": "string",
      "detail": "string",
      "details": {}
    }
  ]
}

GET /v1/consolidation-runs/{consolidation_run}/profit-and-loss

Get the group profit and loss of a run

The group profit and loss of the group year (1 January to the run's date) by report line from the snapshot: each month translated at that month's average rate, so it is not one rate for the year. net_income equals the result of the year on the balance sheet. Intragroup income and expense are eliminated (eliminations_applied).

Required scope read (admin implies every scope)
Operation id get_profit_and_loss_v1_consolidation_runs__consolidation_run__profit_and_loss_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/profit-and-loss" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK GroupProfitAndLoss
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "as_of": "2026-09-21",
  "currency": "string",
  "framework": "fer",
  "complete": true,
  "eliminations_applied": true,
  "year_start": "2026-09-21",
  "revenue": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "expenses": [
    {
      "report_line": "string",
      "labels": {},
      "amount": "string",
      "unmapped": true
    }
  ],
  "total_revenue": "string",
  "total_expenses": "string",
  "net_income": "string",
  "attributable_to_nci": "0.00",
  "attributable_to_owners": "0.00"
}

GET /v1/consolidation-runs/{consolidation_run}/rates

List the rates a run used

Every rate the run used: closing, average, historical and the rates of equity-movement dates, each with its source (the ECB reference rates), its fixing dates and the data-vNext dataset version, so the run can be checked later against the same pinned data. No rate is invented and no manual rate is accepted.

Required scope read (admin implies every scope)
Operation id get_rates_v1_consolidation_runs__consolidation_run__rates_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/rates" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK RunRates
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "pinned_version": "string",
  "rates": [
    {
      "kind": "average",
      "entity": "string",
      "base": "string",
      "quote": "string",
      "period": "string",
      "date": "2026-09-21",
      "rate": "string",
      "source": "string",
      "first_fixing": "2026-09-21",
      "last_fixing": "2026-09-21",
      "fixings": 1,
      "dataset_version": "string"
    }
  ]
}

GET /v1/consolidation-runs/{consolidation_run}/trial-balance

Get an entity's translated trial balance

The translated trial balance of one entity of the run, by account: the amount that was translated in the entity's functional currency, the amount in the reporting currency and the rate. Assets and liabilities are at the closing rate, the group year's income and expenses at each month's average rate, equity at the historical rate, the results of earlier years are one line and the translation reserve is the balancing amount. The reporting-currency debits equal the credits. 404 when the entity is not part of the run.

Required scope read (admin implies every scope)
Operation id get_trial_balance_v1_consolidation_runs__consolidation_run__trial_balance_get

Parameters

In Name Type Required Description
path consolidation_run string (uuid) yes Id of the consolidation run (GET /v1/consolidation-groups/{group}/runs).
query entity string yes Code of the entity of the run (GET /v1/consolidation-runs/{id} lists them).

Example request

curl "$ERP_URL/v1/consolidation-runs/3fa85f64-5717-4562-b3fc-2c963f66afa6/trial-balance?entity=DE01" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK TranslatedTrialBalance
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "run": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "entity": "string",
  "currency": "string",
  "group_currency": "string",
  "translated": true,
  "lines": [
    {
      "account": "string",
      "name": "string",
      "report_line": "string",
      "local_debit": "string",
      "local_credit": "string",
      "group_debit": "string",
      "group_credit": "string",
      "rate_kind": "string",
      "rate": "string"
    }
  ],
  "local_debit": "string",
  "local_credit": "string",
  "group_debit": "string",
  "group_credit": "string",
  "balanced": true
}

Schemas

Acquisition

The basis of the capital consolidation of one subsidiary: every figure its lines rest on.

Field Type Required Description
entity string yes The subsidiary.
parent string yes The parent that holds the investment.
currency string yes The subsidiary's functional currency.
ownership_percent string yes The parent's share, in percent.
nci_percent string yes The non-controlling share: 100 less it.
nci_measurement "proportionate_share" yes How the non-controlling interest is measured at acquisition: its proportionate share of the identifiable net assets (IFRS 3.19(b); section 307 HGB).
fair_value_basis "book_value" yes The identifiable net assets at acquisition are taken at the book value the member version states as their fair value (IFRS 3.18); no purchase price allocation.
acquired_on string (date) yes The acquisition date.
policy string yes The goodwill policy.
goodwill_years integer or null yes The useful life of goodwill (for amortise, and for the theoretical capitalisation of offset_equity).
investment_account string yes The parent's account eliminated.
consideration string yes The consideration, in the reporting currency.
net_assets_local string yes The subsidiary's net assets at acquisition in its currency.
historical_rate string or null yes The rate of the acquisition date; null without translation.
closing_rate string or null yes The closing rate; null without translation.
equity_at_acquisition string yes The equity at acquisition in the reporting currency, at the historical rate.
nci_at_acquisition string yes The non-controlling interest at acquisition.
goodwill_at_acquisition string yes Consideration + non-controlling interest - net assets (IFRS 3.32); negative for a bargain purchase.
goodwill_treatment "asset" | "bargain_purchase" | "negative_goodwill" | "none" | "offset_equity" yes asset (kept in the subsidiary's currency at the closing rate, IAS 21.47, DRS 23.137), offset_equity (FER, a positive or negative difference), bargain_purchase (a gain, IFRS 3.34), negative_goodwill (a liability: released over five years under FER, kept after equity under HGB) or none.
goodwill_local string or null Goodwill in the subsidiary's currency.
goodwill_closing string or null Goodwill at the closing rate (before amortisation).
goodwill_translation string or null Goodwill at closing less at acquisition: to the owners' translation reserve.
bargain_purchase_gain string or null The gain, if any.
amortisation Amortisation or null E7, for amortise.
theoretical_capitalisation TheoreticalCapitalisation or null For goodwill offset against equity with a useful life (FER): what a capitalisation would have given.
negative_goodwill NegativeGoodwill or null A negative difference kept as a liability, if any.
net_assets_closing string yes The subsidiary's translated net assets at the group date.
profit_of_year string yes Its translated profit of the group year.
nci_profit string yes The non-controlling interests' share of it.
owners_profit string yes The owners' share of it.
reserve string yes Its translation reserve.
nci_reserve string yes The non-controlling interests' share of it.
other_equity string yes Its other equity movements since the acquisition (earlier years' results, capital, dividends), translated.
nci_other string yes The non-controlling interests' share of them.
nci_closing string yes The non-controlling interest at the group date: the sum of the four shares.
nci_exact string yes The non-controlling share of the translated net assets, rounded once.
nci_rounding string yes nci_closing less nci_exact: the rounding of the parts, a cent or two.
sources map of string yes Per rule the paragraphs it is computed by.
lines array of EliminationLine The lines of E4, E5 and E7 for this subsidiary.

Amortisation

Field Type Required Description
months integer yes Months amortised up to the group date.
of_months integer yes Months of the useful life.
accumulated_local string yes Accumulated amortisation in the subsidiary's currency.
of_year_local string yes Of which in the group year.
accumulated_closing string yes The accumulated amount at the closing rate, off the goodwill.

ConsolidationRunSummary

Field Type Required Description
id string (uuid) yes Id of the run.
as_of string (date) yes The group date.
version integer yes The run's number for this group and date.
status "draft" | "final" | "superseded" yes draft, final or superseded.
complete boolean yes True when no blocking exception was found.
blocking integer yes Blocking exceptions.
warnings integer yes Warnings.
created_by object yes Who made it, as an actor object.
created_at string (date-time) yes When it was made (UTC).

CtaRollForward

Field Type Required Description
run string (uuid) yes Id of the run.
currency string yes The reporting currency.
entities array of EntityRollForward yes One roll-forward per translated subsidiary (an entity in the reporting currency has none).
closing_reserve string yes The group's translation reserve: the sum over the entities.
reconciled boolean yes True when every entity reconciles.

DocumentSides

Field Type Required Description
currency string yes The document currency.
a string yes What entity_a holds towards entity_b in it, signed debit less credit.
b string yes What entity_b holds towards entity_a, signed the same way.

EliminationLine

Field Type Required Description
rule string The rule of the line: E1 to E7. (default "")
entity string yes The entity whose amount the line reverses (for E4, E5 and E7 the subsidiary, or the parent on the investment line).
partner string yes Its group partner.
account string or null yes The account reversed; null for the residual of the pair.
name string yes The account's name, or what the residual is.
report_line string yes The group report line it is added to.
debit string yes Debit in the reporting currency.
credit string yes Credit in the reporting currency.
amount_local string or null yes The amount reversed in the entity's functional currency; null for the residual.
rate_kind string or null yes closing (a balance), average (income or expense), historical (the equity a dividend debited, at the rate of its day), none (the reporting currency) or null (the residual).
rate string or null yes The rate, or the effective rate over several months.

EliminationPair

Field Type Required Description
rule "E1" | "E2" | "E3" | "E6" yes E1 intragroup balances (IFRS 10.B86(c), section 303 HGB), E2 intragroup loans, E3 intragroup income and expense (IFRS 10.B86(c), section 305 HGB) or E6 intragroup dividends.
entity_a string yes One entity of the pair (the first by code).
entity_b string yes The other.
documents array of DocumentSides yes Per document currency what each side holds: the two agree when they add to zero.
agreed boolean yes True when the sides agree in every document currency.
residual string yes What the reversal of both sides leaves in the reporting currency, signed debit less credit; zero when they cancel to the cent.
treatment "cash_in_transit" | "none" | "profit_or_loss" | "translation_reserve" | "unreconciled" yes Where the residual went: profit_or_loss (E1 or E2, agreed: the exchange difference on an intragroup monetary item stays in profit or loss, IAS 21.45), translation_reserve (E3 or E6, agreed: the two sides translated at different rates, IAS 21.41; E2 of a loan that is part of the net investment, IAS 21.32), cash_in_transit (E1: the sides disagree only by payments one side booked and the other not yet: the line cash in transit and the warning ic_cash_in_transit), unreconciled (the sides disagree: a line of its own and the exception ic_difference) or none.
in_transit string yes The cash in transit of cash_in_transit in the reporting currency (each document currency at the closing rate), signed debit less credit; zero otherwise.
lines array of EliminationLine yes The lines of the pair's elimination.

EntityRollForward

Field Type Required Description
entity string yes Entity code.
currency string yes Its functional currency.
start string (date) or null yes The date it is consolidated from.
opening_reserve string yes The reserve at the start: zero in this version.
opening_net_assets string yes Net assets at the start, in the functional currency.
opening_rate string yes The historical rate at the start.
closing_rate string yes The closing rate of the month of the group date.
opening_effect string yes Net assets at the start x (closing rate - historical rate).
results array of RollForwardEffect yes The effect of each month's profit.
movements array of RollForwardEffect yes The effect of each equity movement.
rounding string yes The sum of the rounding residuals of the translated amounts (each rounded to the minor unit; rounded less exact, signed like the amount), exact: what rounding added to the balancing amount. Zero when every translated amount is exact.
closing_reserve string yes The reserve at the group date by the roll-forward, rounded to the minor unit for display (credit positive; a debit reserve is negative).
translated_reserve string yes The balancing amount of the translated trial balance, same sign.
difference string yes translated_reserve less the roll-forward (unrounded) less rounding, computed exactly: zero, or the run has the blocking exception cta_unreconciled.
reconciled boolean yes True when difference is exactly zero. There is no tolerance.

GroupBalanceSheet

Field Type Required Description
run string (uuid) yes Id of the run.
as_of string (date) yes The group date.
currency string yes The reporting currency.
framework "fer" | "hgb" | "ifrs" yes The framework of the run.
complete boolean yes False while the run has a blocking exception.
eliminations_applied boolean yes True when intragroup items are eliminated (eliminations names the rules); false for a run made before the eliminations existed, which is the aggregate of the entities.
assets array of StatementLine yes Asset lines.
liabilities array of StatementLine yes Liability lines.
equity array of StatementLine yes Equity lines: capital, retained earnings, the results of earlier years not yet appropriated, the translation reserve (the owners' share) and the non-controlling interests (bs.equity.nci, including their share of the year's result; IFRS 10.22).
result_of_year string yes The profit (positive) or loss of the group year attributable to the owners of the parent: the profit and loss lines less the share of the non-controlling interests, which is inside bs.equity.nci.
total_assets string yes Total assets.
total_liabilities string yes Total liabilities.
total_equity string yes Equity lines plus the result of the year.
after_equity array of StatementLine Lines shown after equity, neither liabilities nor equity: under HGB the negative difference from capital consolidation (section 301 para. 3 HGB).
total_after_equity string The sum of after_equity. (default "0.00")
balanced boolean yes True when assets equal liabilities plus equity plus the lines after equity.

GroupCashFlow

Field Type Required Description
run string (uuid) yes Id of the consolidation run, the end of the statement.
opening_run string (uuid) or null yes The run at the end of the previous year the statement starts from; null when no entity of the group had books before the year, so the group starts from nothing.
start string (date) yes The first day of the group year (ISO 8601).
as_of string (date) yes The run's date (ISO 8601).
currency string yes The reporting currency; all amounts are in it.
framework string yes The framework the group reports under.
complete boolean yes False while either run has a blocking exception.
eliminations_applied boolean yes True when the run eliminates the intragroup items (as its statements).
opening_cash string yes The group's cash at the start (the opening run's).
sections array of CashFlowSection yes Operating, investing and financing activities from the change of each group report line, then the effect of exchange rates on cash held in other currencies.
net_change string yes The sum of the sections.
closing_cash string yes The group's cash at the run's date.
balanced boolean yes True when the opening cash plus the net change is the closing cash.

GroupCheck

Field Type Required Description
id string yes Check id: run (a run exists at the date), periods_closed (no member period starting on or before the date is open), ic_reconciled (every relationship between two members agrees within its tolerance), rates_available, report_lines (every account maps to the group vocabulary), ic_eliminated (every elimination's sides agree within the group's tolerance), cta_reconciled, balanced (consolidated assets equal liabilities plus equity), opening_position (a member consolidated after its acquisition has a stated opening position), capital_consolidated (the investment in every subsidiary is eliminated against its equity at acquisition, with goodwill and non-controlling interests), nci_attributed (net income equals the owners' plus the non-controlling interests' share), adjustments_approved and final_run_current (later slices: n/a).
title string yes What the check verifies.
status "fail" | "n/a" | "pass" | "warn" yes pass, fail (a final run could not be made), warn (to know) or n/a.
detail string yes The result in English words.
code string or null The result by a stable code (erp.contracts.words.GROUP_CHECKS): the screens word it as consolidation.check.<code> in the person's language.
details object or null The values the words of code name, by name: amounts as decimal strings, days as ISO dates, lists, or reasons with their own words, code, details and text (such as the run's exceptions a check lists).

GroupChecklist

Field Type Required Description
group string yes Code of the group.
as_of string (date) yes The group date.
run string (uuid) or null yes The run the run-based checks read: the latest at the date (null if none).
run_version integer or null yes Its version; null without a run.
ready boolean yes True when no check has the status fail.
checks array of GroupCheck yes The checks in the order evaluated.

GroupInput

Field Type Required Description
code string or null The group's own code, unique in the organization (letters, digits, ., _, -, at most 30 characters). Omitted: made from the name (Demo Group is DEMO-GROUP, with -2 when taken). (pattern ^[A-Za-z0-9][A-Za-z0-9._-]{0,29}$)
name string yes The group's name. (min length 1; max length 200)
parent_entity string yes Code of the parent entity: the entity that controls the others. It is in the group without being a member, and is not translated.
reporting_currency string or null The presentation currency (ISO 4217). In this version it is the parent's functional currency: the parent is carried over unchanged. Omitted: that currency. (pattern ^[A-Z]{3}$)
framework "fer" | "hgb" | "ifrs" yes The framework the group reports under: ifrs, fer (Swiss GAAP FER 30) or hgb (sections 290 to 315e HGB). A run under a framework whose rules have not been checked against its standard is refused (framework_unverified, framework_not_implemented); today all three run.
goodwill_policy "amortise" | "impairment_only" | "offset_equity" or null How goodwill is treated: impairment_only (IFRS), offset_equity (FER) or amortise (FER, HGB); default: the framework's first. It must be one the framework allows.
goodwill_years integer or null The useful life of goodwill in years, for the policies that take one: amortise, and under fer also offset_equity (the notes show a theoretical capitalisation over it). Left empty, the framework's life for goodwill whose life cannot be determined: 5 years under fer, 10 under hgb. At most 20; null for impairment_only. (min 1; max 20)
ic_tolerance_amount decimal string The difference between two sides of an intragroup balance, or of intragroup income and expense, that is still accepted, in the reporting currency: a residual of an elimination whose sides do not agree is the blocking exception ic_difference above it and a warning within it. (min 0; default "1")

GroupOut

Field Type Required Description
id string (uuid) yes Id of the group.
code string yes The group's code.
name string yes The group's name.
parent_entity string yes Code of the parent entity.
reporting_currency string yes The presentation currency.
framework "fer" | "hgb" | "ifrs" yes The framework the group reports under.
framework_verified boolean yes True when the framework's sources have been read and cited, so a run is allowed.
framework_implemented boolean yes False for a framework that is documented only.
goodwill_policy "amortise" | "impairment_only" | "offset_equity" yes The goodwill policy.
goodwill_years integer or null yes The useful life of goodwill in years (amortised, or under fer offset against equity for the theoretical capitalisation), if any.
ic_tolerance_amount string yes The tolerance of intragroup differences.
members array of MemberOut yes The version in force today of every subsidiary, by entity code.
pending array of PendingMember yes Member versions that wait for a second person's approval.
runs integer yes How many runs the group has (GET .../runs lists them).
created_by object yes Who created the group, as an actor object.
created_at string (date-time) yes When it was created (UTC).

GroupProfitAndLoss

Field Type Required Description
run string (uuid) yes Id of the run.
as_of string (date) yes The group date.
currency string yes The reporting currency.
framework "fer" | "hgb" | "ifrs" yes The framework of the run.
complete boolean yes False while the run has a blocking exception.
eliminations_applied boolean yes True when intragroup items are eliminated (eliminations names the rules); false for a run made before the eliminations existed, which is the aggregate of the entities.
year_start string (date) yes The first day of the group year: 1 January.
revenue array of StatementLine yes Revenue lines.
expenses array of StatementLine yes Expense lines.
total_revenue string yes Total revenue.
total_expenses string yes Total expenses.
net_income string yes Revenue less expenses: the group's profit or loss, before its attribution.
attributable_to_nci string The part of net_income attributable to non-controlling interests (rule E5; IFRS 10.B94, IAS 1.81B). It is not an expense. (default "0.00")
attributable_to_owners string The part attributable to the owners of the parent: net_income less attributable_to_nci; the balance sheet's result of the year. (default "0.00")

MemberInput

Field Type Required Description
entity string yes Code of the subsidiary entity (a direct subsidiary of the parent).
ownership_percent decimal string yes The parent's share of the subsidiary, in percent. A percentage with up to four decimals (a decimal string). (max 100; greater than 0)
control_basis string yes The control assessment (IFRS 10.5 to 10.7; Art. 963 para. 2 OR): why the parent controls the subsidiary. It is kept with the approval and is what a second person confirms. (min length 3; max length 2000)
acquired_on string (date) yes The date the parent acquired control (ISO 8601).
consolidated_from string (date) yes The date from which the subsidiary is consolidated and translated: its equity at this date is translated at the rate of the date. Not before acquired_on.
effective_from string (date) or null The group date from which this version applies; default: consolidated_from. A run takes the version in force at its date.
acquisition_cost decimal string or null What the parent paid for the shares; used by the acquisition entries. (min 0)
acquisition_cost_currency string or null The currency of acquisition_cost; required with it. (pattern ^[A-Z]{3}$)
net_assets_at_acquisition decimal string or null The fair value of the subsidiary's identifiable net assets at acquired_on (IFRS 3.18), in its functional currency. This version takes the book value: it must equal the net assets the subsidiary's ledger holds at that date, else the run reports fair_value_adjustment_unsupported. Required, with the cost and the investment account, for the capital consolidation (E4, E5).
investment_account string or null Code of the account in the parent entity that holds the cost of the shares.

MemberOut

Field Type Required Description
id string (uuid) yes Id of this version.
group string yes Code of the group.
entity string yes Code of the subsidiary entity.
entity_name string yes Its name.
currency string yes Its functional currency.
version integer yes The version number of this subsidiary in the group, from 1.
ownership_percent string yes The parent's share, in percent.
method "full" yes The consolidation method: full.
control_basis string yes The control assessment that was approved.
goodwill_policy "amortise" | "impairment_only" | "offset_equity" yes The group's goodwill policy when approved.
acquired_on string (date) yes When control was acquired.
consolidated_from string (date) yes From when it is consolidated.
effective_from string (date) yes The group date this version applies from.
corrects_version integer or null yes The version this one corrects, or null: a version on the same date as the one before replaces it, and one that keeps the share and the acquisition date but states other purchase data (cost, investment account, net assets) replaces that data from the acquisition on. The corrected version stays in the history.
acquisition_cost string or null yes What was paid for the shares, if recorded.
acquisition_cost_currency string or null yes The currency of the cost.
net_assets_at_acquisition string or null yes Net assets at acquisition, if recorded.
investment_account string or null yes The parent's account holding the cost.
approval_id string (uuid) or null yes The approval request that was decided, or null when the policy let one person approve.
requested_by object yes Who requested the version, as an actor object.
approved_by object yes Who approved it, as an actor object.
approved_at string (date-time) yes When it was approved (UTC).

MemberResult

Field Type Required Description
status "approved" | "pending_approval" yes approved: the version is in force (the policy let this person approve it); pending_approval: a second person decides it.
approval_id string (uuid) or null yes The approval request when it waits for a second person; else null.
member MemberOut or null yes The version once approved; null while it waits.

NegativeGoodwill

A negative difference at acquisition kept as a liability (Swiss GAAP FER 30/17; under HGB the "Unterschiedsbetrag aus der Kapitalkonsolidierung", section 301 para. 3).

Field Type Required Description
amount string yes The negative difference at acquisition.
release_years integer or null yes The years it is released to profit or loss over (FER); null when the group releases it itself (HGB, section 309 para. 2).
released_of_year string yes Released in the group year.
released string yes Released up to the group date.
closing string yes Still on the liability at the group date.

PendingMember

Field Type Required Description
approval_id string (uuid) yes The approval request: POST /v1/approvals/{approval_id}/approve, by a second person with the approve scope.
entity string yes Code of the subsidiary entity.
ownership_percent string yes The proposed share, in percent.
consolidated_from string (date) yes The proposed date it is consolidated from.
requested_by object yes Who requested it, as an actor object.
requested_at string (date-time) yes When it was requested (UTC).

RateUse

Field Type Required Description
kind "average" | "closing" | "historical" | "transaction" yes closing (the last fixing of the month of the date), average (the mean of the month's fixings), historical (the rate of the date a subsidiary is consolidated from) or transaction (the rate of the date of an equity movement).
entity string yes The entity whose currency it translates.
base string yes The functional currency.
quote string yes The reporting currency: the rate is units of it per unit of base.
period string or null yes The calendar month YYYY-MM of a closing or average rate.
date string (date) or null yes The date of a historical or transaction rate.
rate string yes The rate used.
source string yes The rate source: the ECB euro foreign exchange reference rates.
first_fixing string (date) or null yes The first fixing the rate rests on.
last_fixing string (date) or null yes The last fixing the rate rests on.
fixings integer or null yes How many fixings an average is the mean of.
dataset_version string yes The data-vNext dataset version that served the rate, so the run can be checked against the same pinned data.

RollForwardEffect

Field Type Required Description
on string yes The month YYYY-MM of a profit, or the date of an equity movement.
amount string yes The profit or the movement, in the functional currency.
rate string yes The average rate of the month or the rate of the date.
effect string yes amount x (closing rate - rate): what the move of the closing rate did to the reserve.

RunEliminations

Field Type Required Description
run string (uuid) yes Id of the run.
currency string yes The reporting currency.
rules array of string yes The rules the run applied.
pending array of string yes The rules of the design not applied yet.
acquisitions array of Acquisition Per subsidiary the capital consolidation (E4, E5, E7) with its basis.
pairs array of EliminationPair yes One entry per rule and pair of entities that hold anything towards each other.
debit string yes Total debit of the elimination layer, the capital rules included.
credit string yes Total credit: equal to the debit, every pair balances.

RunException

Field Type Required Description
code string yes rate_missing (a rate the rate source does not publish), unmapped_report_line (an account on a line outside the group's vocabulary), cta_unreconciled (the reserve and its roll-forward differ by more than rounding), period_open (a period of the entity is still open), member_not_consolidated (a member starts after the date), opening_position_missing (a member is consolidated from a date after it was acquired: its investment cannot be eliminated, blocking), acquisition_basis_incomplete, ownership_change_unsupported, investment_differs_from_cost and fair_value_adjustment_unsupported (the capital consolidation cannot be computed as it should: blocking), bargain_purchase (a gain on a bargain purchase, to be reassessed, IFRS 3.36), goodwill_impairment_not_tested and negative_goodwill_not_released (HGB: a negative difference after equity that the group releases itself, section 309 para. 2 HGB) (warnings), ic_difference (two entities' intragroup balances, or income and expense, do not agree in the document currency: blocking above the group's tolerance), ic_capitalised (an intragroup cost sits in an asset: blocking), ic_exchange_difference (agreed balances differ in the reporting currency beyond the tolerance: a balance was probably not revalued), ic_cash_in_transit (two entities disagree only by a payment one booked and the other not yet: shown as cash in transit, a warning); a run made before the capital consolidation also has eliminations_pending and cta_starts_at_zero.
severity "blocking" | "warning" yes blocking: the statements are incomplete or wrong and a final run could not be made; warning: to know, not blocking.
entity string or null yes Code of the entity concerned; null for the group.
detail string yes What it is, in English words.
details object or null The values the words of the code name, by name (amounts as decimal strings, days as ISO dates, lists, or reasons with their own words, code, details and text): the screens word the exception as consolidation.exception.<code> in the person's language. Null for runs made before they were kept, and for eliminations_pending and cta_starts_at_zero.

RunExceptions

Field Type Required Description
run string (uuid) yes Id of the run.
exceptions array of RunException yes The exceptions of the run, blocking first.

RunInput

Field Type Required Description
as_of string (date) yes The group date: a month end (ISO 8601), because the rates are the calendar months of data-vNext. The ledger is read up to this date by entry date.
comment string or null A note kept on the run. (max length 1000)

RunMember

Field Type Required Description
entity string yes Entity code.
role "parent" | "subsidiary" yes The parent or a subsidiary.
currency string yes Its functional currency.
version integer or null yes The member version used; null for the parent.
ownership_percent string or null yes The share used; null for the parent.
consolidated_from string (date) or null yes From when it is consolidated; null for the parent.
acquired_on string (date) or null When control was acquired; null for the parent.
purchase_data_version integer or null The member version whose purchase data (cost, investment account, net assets) the run used: version, or a later version that corrects them; null for the parent.
acquisition_cost string or null The consideration used by E4; null when not stated.
acquisition_cost_currency string or null Its currency.
net_assets_at_acquisition string or null The stated fair value of the net assets at acquisition.
investment_account string or null The parent's account holding the investment.
translated boolean yes False when the entity could not be translated (a rate is missing): it is not in the consolidated lines and a blocking exception says why.

RunOut

Field Type Required Description
id string (uuid) yes Id of the run.
group string yes Code of the group.
as_of string (date) yes The group date.
version integer yes The run's number for this group and date, from 1.
status "draft" | "final" | "superseded" yes draft (all that can be made in this version).
comment string or null yes The note kept on the run.
reporting_currency string yes The presentation currency, fixed when the run was made.
framework "fer" | "hgb" | "ifrs" yes The framework, fixed when the run was made.
policy object yes The resolved switches of the framework (goodwill policy, how the translation reserve is presented, the statements) with the source of each: what the run was made under.
members array of RunMember yes The entities of the run and the versions used.
complete boolean yes True when no blocking exception was found: every entity is translated, the intragroup items agree and the statements are whole for the rules applied.
blocking integer yes The number of blocking exceptions.
warnings integer yes The number of warnings.
eliminations_applied boolean yes True when the run eliminated intragroup items (eliminations names the rules); false for a run made before the eliminations existed.
eliminations array of string yes The elimination rules the run applied: E1 (intragroup balances), E2 (loans), E3 (intragroup income and expense), E4 (the investment against the equity at acquisition, goodwill), E5 (non-controlling interests), E6 (dividends) and, under amortise, E7 (goodwill amortisation); an earlier run names fewer.
eliminations_pending array of string yes The rules of the design the run did not apply: empty for a current run; a run made before the capital consolidation names E4, E5 and E7.
inputs_digest string yes SHA-256 of the canonical JSON of everything the run was computed from: the entity balances and monthly movements, the member versions and the rates.
entity_heads object yes Per entity the position and hash of its ledger chain when the run was made.
created_by object yes Who made the run, as an actor object.
created_at string (date-time) yes When it was made (UTC).

RunRates

Field Type Required Description
run string (uuid) yes Id of the run.
pinned_version string or null yes The dataset version the ERP was pinned to when the run was made, if any.
rates array of RateUse yes Every rate the run used.

StatementLine

Field Type Required Description
report_line string yes The group report line.
labels map of string yes Its label in en, de, fr, it and sv.
amount string yes The amount in the reporting currency, positive in the line's own direction (an asset or revenue as a debit or credit balance respectively).
unmapped boolean yes True for a line outside the group's vocabulary (a blocking exception names it).

TheoreticalCapitalisation

What goodwill offset against equity would have given if capitalised and amortised over the group's useful life (Swiss GAAP FER 30/43: shown in the notes).

Field Type Required Description
goodwill string yes The goodwill at acquisition offset against equity.
years integer yes The useful life it would be amortised over.
amortisation_of_year string yes The amortisation of the group year: the effect on the year's result.
amortisation_earlier string yes The amortisation of earlier years.
translation_difference string yes The translation difference on it up to the group date (credit positive).
carrying_amount string yes The theoretical carrying amount at the group date: the effect on equity.

TranslatedTrialBalance

Field Type Required Description
run string (uuid) yes Id of the run.
entity string yes Entity code.
currency string yes The entity's functional currency.
group_currency string yes The reporting currency.
translated boolean yes False when the entity could not be translated: no lines.
lines array of TranslatedTrialBalanceLine yes The translated trial balance, by account code.
local_debit string yes Total debit in the functional currency.
local_credit string yes Total credit in the functional currency.
group_debit string yes Total debit in the reporting currency.
group_credit string yes Total credit in the reporting currency.
balanced boolean yes True when the reporting-currency debits equal the credits.

TranslatedTrialBalanceLine

Field Type Required Description
account string or null yes Account code; null for the lines translation adds: the result of earlier years and the translation reserve.
name string yes Account name, or the name of the added line.
report_line string yes The group report line it is aggregated on.
local_debit string yes Debit in the entity's functional currency (what was translated).
local_credit string yes Credit in the entity's functional currency.
group_debit string yes Debit in the reporting currency.
group_credit string yes Credit in the reporting currency.
rate_kind string or null yes closing, average, historical, mixed (several rates) or none.
rate string or null yes The rate, or the effective rate of a line at several rates.
Stabiso, the Enterprise System of Record · generated from the code and its guides · release 20b7dd5b0c4d