Income Statement: Fiscal Year, Projections and Goal Planner
The income statement panel reports results by fiscal year, forecasts the periods left to close it, measures how accurate those forecasts have been, and lets you plan what would have to happen to reach a profit target.
Nothing on this page changes reported results. Projections and plans are shown alongside actual figures, never merged into them.
This page covers how to use those features. For how the forecast itself is computed — the level, the seasonal factors, the accuracy figures and every formula behind them — see The Projection Model.
Getting There
Navigate to Finance > Income Statement.
Choosing the Window
The window follows the Period scale, so the table never grows past a width you can read. Only one window control is shown at a time:
| Scale | Control | Columns |
|---|---|---|
| Month | Fiscal year | Up to 12 |
| Day | Month | Up to 31 |
| Year | None, the available years are shown | Up to 3 |
The fiscal year is the calendar year, January through December, and the panel opens on the current fiscal year with the end date clamped to today. Both the fiscal year and the month selectors reach back three years at most, and never offer a period without precomputed data.
Switching scale keeps you where you were: going from a fiscal year to the day scale lands on the most recent month of that year rather than restarting somewhere else.
There is no free date range. Any range wide enough to be worth the extra control produced more columns than a person reads at once, and it was also the slowest thing the panel could be asked to do. Links shared before this change still work: their dates are snapped to the nearest window the scale supports.
The period in progress is marked In progress, with a tooltip showing how many days of it have elapsed. Its amounts are not scaled or extrapolated: the badge exists so a partial month is not mistaken for a closed one.
Projections
Set Projection to forecast forward from the last actual period. Beyond the fixed horizons, each scale offers the rest of its own cycle: Rest of the year on the month scale, which projects exactly the months left to close the fiscal year, and Rest of the month on the day scale, which projects the days left in the month. At the end of a cycle there is nothing left to project and no projection is shown. The year scale has no such option, because a span of years closes nothing.
Projected columns are shaded, and hovering a projected amount explains how it was built: the periods used as the basis, their average, and the seasonal factor applied.
The growth factor
The model reads the recent past. How fast the business intends to grow is not in the recent past, so you state it: the Growth factor is the first input of the goal planner, and it says how far above the previous cycle you intend this one to close, measured on revenue.
It is a target for the whole fiscal year, not for each month. That distinction is the whole point, and it has a consequence worth understanding before typing a number: the months that have already closed cannot move, so the entire growth you ask of the year has to be carried by the months still open. Half way through the year, asking for 10% demands close to 20% of each remaining month. The planner shows both figures — what you asked of the cycle, and what that turns into for the periods still open — and warns when the second grows beyond what a cost structure plausibly absorbs.
Above the input sits the figure that makes the rest readable: where the cycle closes on its current course. A business already heading for +24% that is asked for +10% will watch its projection fall, and that is correct — +10% is a smaller year than the one it was on course for. One click adopts the on-course rate, which is the natural place to start before adjusting.
If the previous cycle is not fully behind the window — on the day scale, or in a country with less than a full year of records — the percentage falls back to its older meaning, a flat lift on every projected period, and the planner says so under the input.
Two things follow from it being part of the model rather than a view of it. Moving it recomputes the statement, so the projected columns, the projected close and the whole plan move with it. And the projection popover reports it alongside the basis and the seasonal factor, showing both the target and the lift it produced, so a grown figure never reads as a plain run rate.
With Projection vs actual on, the planner offers the factor that would have centred the model over the closed periods, next to the input, and one click adopts it. That closes a loop worth using: set the factor, look at the accuracy card again, and it will tell you whether the assumption now holds.
The period in progress
With the projection on, the column for the period in progress is completed by the forecast. It shows what has been recorded plus what the forecast still expects from the days that are left, so the total of the table is a closing figure for the cycle rather than one missing part of a month. Hovering the column, or any amount in it, splits the figure into the forecast for the whole period, what has been recorded and the completion between them.
The rest of the period is not extrapolated from the days already recorded, and this is the reason the forecast is used instead. Revenue is recorded the day it happens while costs post later, so a few days in, the recorded margin is not the month's margin. Scaling that snapshot by elapsed time reproduces the lag at full-month scale and invents profit that will never arrive: measured six days into August it added 98M that was not there. The forecast is built from closed periods, where the costs have posted, so it completes the period without repeating the lag.
If a period has already recorded more than its forecast, nothing is added and the column stays on what it actually booked. With the projection off, nothing is completed at all and the column shows only the days recorded so far.
Percentages
Under every amount you see what that line represents as a share of a base. A small bar shows the same proportion, so you can compare weights down a column without reading the digits.
The share is always there; what you choose with Percentage of is what it is measured against.
Its section is the default and reads as a breakdown: what share of total sales came from Envia, or what share of expenses came from finance. Section headers and profit rows carry no percentage in this mode, because a section is all of itself and the number would say nothing.
Total revenue reads as a margin instead, and it is the mode that turns the table into a margin structure. Every row is divided by operating income plus other income for that column, section totals and profit rows included, so you can read cost of sales at 62% of revenue and net profit as the net margin, straight down the column. Revenue lines are measured against total revenue too: against their own section they would all read 100% and you could not tell operating from other income apart.
Switching the base changes nothing behind the scenes; both denominators are already on screen, so it re-renders without reloading. The choice travels in the link you share.
No percentage is shown when the base for that column is zero, where the proportion is undefined.
Two details worth knowing. Shares are computed against the absolute value of the section total, so a negative total does not invert every sign. And when a line exceeds its section, which happens when other lines in it are negative, the bar fills completely rather than spilling out of the cell, while the percentage still reads above 100%.
Projection vs Actual
Turn on Projection vs actual to replay the forecast over periods that have already closed, using only the data available before each one. This answers whether the model can be trusted, not whether targets were met.
- Each closed cell gains the difference between what the model expected of the period and where it actually closed, as a percentage of the forecast. Above the forecast is positive, below is negative.
- The colour says whether that is good news. More revenue than forecast reads green; more cost than forecast reads red, because outspending a forecast is not the same as outselling one. A period that closed on its forecast is neutral.
- Hovering shows the forecast, the actual, and that difference in money and as a percentage.
- The Model accuracy card answers the other question — how far the forecast landed from reality, overall and per section, and on which side of it.
The cell and the card read the same gap from opposite ends, which is deliberate. The cell is about the period: did the business come in above or below what was expected. The card is about the model: how far it misses and whether it leans. A cell showing +6% and a card saying the model projects 7% low are not in conflict; they are the same fact described from each side.
The two figures answer different questions and are worth reading together. The percentage says how far off the model was; the line under it says whether it kept projecting too high, too low, or neither. A model that is consistently 8% low and one that swings 8% either way produce the same error and call for opposite responses: the first wants a growth factor, the second wants nothing. When the card reports a direction, the planner offers the factor that would remove it.
Two things are deliberately left out. Periods without at least three prior closed periods are skipped rather than reported against an empty basis, and periods whose actual amount was zero are excluded from the accuracy figure because a percentage error is undefined there.
Against Last Year
Turn on Against last year to read every column against the same period one cycle earlier: May 2026 against May 2025, or one fiscal year against the one before it. Each cell gains the relative change, and hovering it shows both amounts, the difference and the percentage. Growth reads green on revenue and red on costs, because spending more than last year is not the same kind of news.
Projected columns are compared too. Whether the forecast implies growth or decline is the whole point of asking, and the popover says plainly that the figure rests on the forecast rather than on records. The period in progress is compared once the forecast has completed it; with the projection off it is left out, because a handful of days against a whole month would read as a collapse.
Some columns cannot be compared, and they say so rather than showing a change of zero. A period whose counterpart falls outside the queried history has nothing to compare against. And when last year recorded nothing at all, the difference is still reported while the percentage is not, since a relative change against zero has no meaning.
While it is on, the comparison replaces the projection-versus-actual variance and the plan adjustment in the cell. Those two never meet — one owns the closed periods, the other the open ones — but the comparison applies to both, so a cell would otherwise carry two signals at once. Turning it off restores whichever was there.
It is offered on the month and year scales only. By day the panel looks back ninety days, and a comparison needs a full year, so the option is absent and the reason is stated under the filters.
Goal Planner
Click Goal planner to open the planner.
The planner works on a cost-volume-profit model. Costs are split into a fixed block and a share that grows with revenue, so the answers reflect operating leverage instead of assuming every cost is frozen.
The vocabulary comes from managerial accounting, so every concept in the panel carries a question mark beside its label. Hover it and the panel says what the concept is, gives an example in the terms of this business, and, where the concept is one you can move, says what raising and lowering it mean. Nothing below has to be memorized to use the planner.
The goal belongs to the cycle
A goal is a closing figure for the whole cycle: the fiscal year when the table is by month, the current month when it is by day. You state where the year should land, not what the remaining months should add up to, so the goal is entered once and never restated as the year advances.
The planner then works out what the open periods have to produce, which is simply the goal minus what has already closed. Halfway through a year with 60 recorded against a goal of 100, the open months carry 40 whether that is nine months or three.
At the top, the progress bar reads the cycle in three parts: what has been recorded, where the projection takes it, and what is still missing. A hatched segment marks the projected part, because a forecast should not look like money already earned. If what has closed already exceeds the goal, the planner says the goal is met instead of asking for a negative amount.
The period in progress belongs to both halves. What it has recorded counts as closed, and the completion the statement built for the rest of it joins the plan. The planner does not work that split out on its own: it reads it from the table, which is the one place the forecast lives, so the two always agree.
The four levers
A plan is four figures tied together by one identity:
net profit = revenue × contribution margin − fixed costsFixing any three determines the fourth. Choose in Solve for which figure you want the planner to work out. The other three become editable cards, and each one shows how far it sits from the projection.
When a cycle goal is set, the card for that figure stops being editable and shows what the open periods have to produce, marked Goal. The goal and the lever are the same control, so there is never a profit target in one place and a different one in another. Solve for the same figure the goal is on and the goal steps aside, becoming a reference line the answer is read against.
The planner opens solving for revenue, which is the classic question: set the profit you want and it tells you how much has to be sold to get there.
That covers questions in both directions with the same screen:
| Question | Solve for | What you edit |
|---|---|---|
| How much do I have to sell to make this profit? | Revenue | Net profit |
| What happens if operating costs come down 10%? | Net profit | Fixed costs |
| What happens if the margin improves two points? | Net profit | Contribution margin |
| How much has to come out of costs to hit this profit? | Fixed costs | Net profit and revenue |
| What margin would this plan need? | Contribution margin | Net profit and revenue |
Back to the projection clears every lever so the plan sits on the forecast again.
The answer
Directly under the levers the planner states what it solved: the projection against what the goal requires, with the gap between them. Set a profit of 2.5 million and it reads as projected revenue of 10 million against 12 million needed, a gap of 2 million, that is 20% more.
The goal is restated next to the figure, because a number like "12,000,000" means nothing without "to make 2,500,000 of profit" attached to it. Until a lever is moved there is no answer to give, and the planner says so rather than presenting the untouched projection as a plan.
The gap is not coloured green or red. Needing 20% more revenue is neither good nor bad; it is what the goal costs.
Below it, the comparison table breaks the same answer down by line of the income statement.
Spreading the plan over what is left
An answer for the whole remaining window is not yet something anyone can act on. The planner therefore spreads it across the open periods in proportion to the projection, so the seasonality the forecast already found survives: a December that was projected to weigh twice a September still weighs twice as much under the plan.
Path towards the goal charts the three cumulative lines against the goal: what has been recorded as a solid line, where the projection takes it and where the plan takes it as dashed ones. The plan line lands on the goal by construction; what the chart shows is how steeply it has to climb to get there.
Period by period lists each open period with its projection, its planned amount and the adjustment between them. A period asked to move more than 30% from its own projection is flagged, because an average adjustment can hide one month carrying the whole plan.
Reading the plan in the statement
Turn on Plan in the filters to lay the same figures over the table itself. Every open cell gains the adjustment it is being asked for, and hovering it shows the projection, the planned amount and the adjustment in both money and percentage. Every line carries its own plan, not just the totals, so you can see which service or which account the plan is actually leaning on.
Closed periods are left alone. They belong to Projection vs actual, which reads the other direction, so no cell ever carries two comparisons at once. The toggle only changes what is drawn: nothing is requested and no column is added, because the plan is computed from figures already on screen. It stays unavailable until a plan exists.
For the period in progress, the table reports where it lands rather than what its remaining days produce, so the comparison stays like for like against the projection next to it.
Reading the plan
The header carries three figures that turn a target into a reading about risk:
- Break-even is the revenue at which the plan stops losing money.
- Margin of safety is how far sales can fall before reaching it, as a share of revenue. A thin margin of safety means a small dip in volume hurts.
- Operating leverage says how much profit moves for each percent of revenue. A leverage of five means one percent more sales is five percent more profit, in both directions.
From projection to plan breaks the profit change into what caused it: how much came from selling more, how much from a better margin, and how much from moving fixed costs. The three bars always add up to the total change, so nothing is left unexplained.
Which lever weighs most moves each lever the same relative amount on its own and ranks them by how much profit swings. It answers where attention is worth spending, which is not always where change feels easiest.
Assumptions
Everything that explains where the base numbers came from lives behind Assumptions.
Each slider sets how much of a cost grows with revenue; the rest is treated as fixed. Cost of goods sold defaults to fully variable, because there is no freight to pay without a shipment, and operating expenses default to fully fixed, because rent is due whether or not anything sold. Adjust the share per section, or override an individual line, whenever those defaults do not match how a cost actually behaves. Reset to defaults puts every slider back.
Moving a slider changes the answer in a specific direction. Lowering the variable share of operating expenses leaves more of them in the fixed block, which raises the break-even point and means the plan has to cut them outright to gain profit. Raising it ties them to revenue, so they grow on their own as sales grow and shrink when sales fall.
The revenue breakdown shows how the planned revenue lands on each line. Lines grow in proportion by default; hold one and the remainder is absorbed by the others.
Scenarios
Name a plan and save it. Saved scenarios are scoped to the organization and the cycle they plan, so a plan for March and a plan for the whole year can share a name without one overwriting the other. Saving under an existing name in the same cycle updates it.
Copy link shares what is on screen. A saved scenario travels by its id; an unsaved one travels encoded in the link, so work in progress can be shared before anyone names it.
Frequently Asked Questions
Why does the planner ask for more revenue than I expected?
Because part of the operating cost grows with revenue. Selling more costs more, so reaching a higher profit takes more additional revenue than a model treating every cost as fixed would suggest. Check the contribution margin lever: it is the share of each additional unit of revenue left to cover fixed costs and profit.
Why is my target reported as not reachable?
Either the contribution margin is zero or negative, in which case no level of revenue reaches the target, or the target implies negative revenue or negative fixed costs. The message names which case applies.
What does the warning about the relevant range mean?
The model treats fixed costs as fixed, which only holds while the business keeps roughly its current shape. Push revenue far enough and that stops being true: at some point the plan needs another warehouse, another shift, more people. When the plan moves revenue more than 30% away from the projection the planner says so and keeps computing, because the answer is still the best available direction. It just is not a precise figure any more.
Why can I not turn the plan on in the table?
Because there is no plan yet. The toggle needs a feasible plan and at least one open period. Once the cycle has closed there is nothing left to act on, and the planner says so instead of drawing a plan over periods that cannot change.
The planned amounts do not add up to what I typed
They do, but at the cycle rather than at the window. What you typed is where the cycle should close; the periods only carry the part of it that has not happened yet. Add what has already closed to the planned periods and you land on the goal, which is exactly what the plan line in the chart shows.
I typed a growth factor and the projection went down
The factor is a target for the year, not a lift on the forecast, so it can point either way. Look at the line above the input: it says where the cycle closes if you declare nothing. If that reads +24% and you asked for +10%, you asked for a smaller year than the one the business is already on course for, and the forecast obeyed. Adopt the on-course figure and adjust from there.
Should I use the growth factor the planner suggests?
It is a good starting point, not an answer. The suggestion is the factor that would have centred the model over the periods that have already closed, so it encodes the assumption that whatever the model has been missing keeps holding. That is reasonable when the gap is steady and wrong when it came from something that happened once. Read the accuracy figure beside it: a small error with a clear direction is worth correcting, a large error in no particular direction is noise and a uniform factor will not fix it.
I adopted the suggested factor and the accuracy did not improve
That is expected, and it is the two figures doing their job. Adopting the suggestion centres the direction by construction — that is what it was computed to do — but it does not make the model less noisy. If the error stays where it was while the direction disappears, the model is now aiming at the right level and still scattering around it. Only the second problem is left, and a growth factor cannot solve it.
The projections moved and I did not change any filter
The forecast now measures the season differently, and the change was adopted because it lands closer to reality. A seasonal factor is meant to say how strong a month is compared to a normal month. It used to be worked out by comparing each month against the average of the whole history, which quietly mixed in growth: in a business that grows, the later months look strong simply for being later, and the model read that as a busy season. Each month is now compared against the level of the year around it, which leaves the factor describing the season and nothing else.
Measured across all countries on the current cycle, eight of ten forecast closer to what actually happened. Revenue improved the most.
A country needs a full year of history before this applies, because the new method has nothing to compare a month against until it has seen a complete cycle. Below that the forecast works the way it always did, and switches over on its own once the year is complete. Hovering a projected figure tells you which of the two produced it.
The projected close dropped, and nothing changed in the data
Two corrections landed together and both lower it. The period in progress used to be extrapolated from its own recorded days, which manufactured profit because costs post later than revenue; it is now completed by the forecast instead. And the seasonal index used to include that partial period, which dragged its bucket toward zero and distorted every factor around it; it is now built from closed periods only. Neither changes a single recorded amount. The earlier figure was the optimistic one.
Why do the first months of the year have no variance shown?
They do now. The model needs three closed periods behind a period before it can say what it would have forecast for it, and it takes them from wherever they are: January is measured against the previous October through December, not against columns of the year on screen. A month is only skipped when nothing precedes it anywhere in the loaded history, which in practice means the very beginning of the data.
The accuracy percentage changed and I did not touch anything
Turning the opening months into measurable periods added them to the average, so the figure now covers a different set of periods than before. The model itself did not change. On the largest locale it moved from 28.7% to 26.3% for that reason alone.
One vendor's year-end payment is inflating the forecast
Mark it as fiscal strategy in the provider screen. Its spending stays in the results in full and stops feeding the projections, so an extraordinary payment is no longer read as a high season.
Seeing what the forecast would say if it did count is a diagnostic rather than a way to read the statement, so it has no switch in the filter bar. Add includeFiscalStrategy=true to the address instead. A notice appears under the filters while it is on.
Two things to expect. The mark only reaches the forecast once the expense history has been rebuilt, because the seasonal factor is built from closed periods. And where an account's spending came entirely from marked vendors, that line simply stops at the forecast boundary instead of projecting zero.
Do manual entries and scenarios affect each other?
No. Manual entries are added to reported results; scenarios are planning only and are never written into the reported figures.
