| Object | Content | Note |
|---|---|---|
| Plan | ID, company (entityID), name, type BUDGET / FORECAST, fromYear–toYear, company currency, dimension0–dimension5 |
The structure is set at creation and does not change. |
| Scenario | ID, name (default Main) |
Values, custom rows and comments are per scenario. |
| Headers | List of months YYYY-MM-01 for all plan years |
A 2026–2027 plan has 24 months. |
| Row | rowID = IDs of dimension values joined by a slash, e.g. REVENUE/<category>/<subcategory>/null/null/null |
Flag isCustom for added rows, intercompanyValue 0–5. |
| History | Array of monthly actuals per row | Calculated from accounting, not editable. |
| Plan data | Array of monthly planned values per row and scenario | Saved with Save plan. |
| Comment | Text, author, time, cell (row + month), thread state | Belongs to a scenario. |
The app works with the plan through GraphQL. Reads: getIncomeStatementPlans, getIncomeStatementPlanHistory, getIncomeStatementPlanData, getIncomeStatementPlanScenarios, getIncomeStatementPlanComments, getCategories. Writes are mutations for creating a plan, creating a scenario and saving plan data (the Symfio MCP server offers the same operations: create_income_statement_plan, create_income_statement_plan_scenario, update_income_statement_plan_data).