✓ Month-end close & pay · 9 min read
Was the job worth it? Post-calculation with budget and contribution margin
What you need
Assigning times to a project, a site or a cost centre works on every plan — including the free one. How that works is explained under Assigning times to projects or sites.
The analysis built on top of it — traffic light, budget, contribution margin, ranking, export — is the Pro feature. That is why the Projects menu item only appears on the Pro plan; on the other plans it is not shown at all, so that nobody ends up in front of a locked page. In addition, the module Project/cost centre times must be switched on under Settings → Business → Modules. In almost all industry templates — from Trades & construction through Hospitality to Office & agency — it is switched on from the start; only the “Medical practice & therapy” template leaves it off and merely recommends it.
Only the owner and the shift manager may see the analysis. Employees see neither labour costs nor budgets — not even their own.
At the top, the page has a period bar: Month, Quarter or Year (default: Quarter). Everything below refers to this period.
Which hours are counted
A project’s actual hours are net hours, calculated day by day — the same figure that the month-end close pays. For each person and calendar day, Zeitflex first deducts the clocked breaks and, depending on the business’s break mode, the statutory break under § 4 ArbZG (German Working Hours Act), and applies rounding. The net time determined in this way is then distributed across the day’s projects in proportion to the gross times.
In concrete terms: anyone who spent five hours on site A in the morning and three hours on site B in the afternoon has the 30-minute break deducted proportionally from both — not entirely from one. The sum of project hours is always exactly the net working time, with no rounding remainder. A clocked break never counts as project time, even if a project is attached to the entry.
Entries that are still running (no clock-out) are not counted. Entries that have not yet been approved, on the other hand, are counted — the analysis does not wait for the month-end close. For reliable figures: check the times first, then analyse.
Time without an assignment appears as a separate row Unassigned. It is not wrong — workshop, fetching materials, office — but it shows how much of your working time goes to jobs at all.
What the labour costs include — and what they don’t
Labour costs per project are base pay plus premiums. A night premium belongs to the project where it arose: anyone on site A at 23:00 and on site B at 0:30 generates two separate premium items. The calculation uses the premium rules of your business — if you don’t pay a night premium, you won’t see one in the post-calculation either.
For salaried employees, Zeitflex derives an hourly rate: monthly salary divided by (weekly target × 4.33) — the same formula as in payroll preparation. Without it, every project worked on only by salaried staff would have costs of €0 — the most tempting of all wrong figures. If a person has no pay stored at all, their costs are 0 — their hours still count, and the page reports for how many people no pay is stored.
Setting a budget and reading the traffic light
On the project, under Costing (optional), there are four fields — all voluntary, all can be added at any time:
| Field | What for |
|---|---|
| Hours budget | planned hours, e.g. “120” or “7.5” |
| Cost budget (€) | upper limit for labour costs |
| Contract value net (€) | the agreed revenue, the basis for the contribution margin |
| Calculated hourly rate (€) | the rate from your quotation |
Plus Start and End (planned). Budget and contract value affect the traffic light immediately, retroactively for the entire period — everything is recalculated on each visit.
The traffic light has four states:
| Traffic light | When |
|---|---|
| No budget set | neither an hours budget nor a cost budget — the analysis only shows consumption |
| Exceeded | actual hours above the hours budget or labour costs above the cost budget |
| At risk | one of three: the projection breaks the budget; more than 90% used; consumption is more than 10 percentage points ahead of time progress |
| On track | everything else |
The projection is deliberately simple: the pace so far extended over the planned duration. Anything cleverer requires data that time tracking does not have. Without End (planned) there is no projection — only the current actual figure, no guessed number.
By default, the project list is sorted by Urgency: Exceeded first, then At risk. That is the to-do list for Monday morning.
The contribution margin: contract value minus labour costs
In the Post-calculation tab, you choose a project and see:
- Contribution margin = contract value − labour costs from time tracking, plus the margin as a percentage.
- Revenue per hour = contract value divided by hours worked — the key figure. Only the comparison with the calculated hourly rate turns it into a statement: 85% realisation means you worked 15% below the quotation.
- Rating: Covers costs, Tightly calculated (contribution margin below 10% of the contract value), Loss-making (labour costs above the contract value) or *No revenue set*.
With Trial contract value (€) you can run the numbers on a quotation without changing the value on the project: “What if I had charged 14,000 instead of 12,000?” The trial value is not saved.
Ranking, comparison, productivity
Ranking puts all projects in the period side by side: most profitable first, biggest loss-makers last. Projects without a stored contract value are at the end — they are not bad but unrated, and must not obscure the top.
Comparison sets the selected period against the immediately preceding period of the same length — not the previous year, because a business that has been recording for eight months does not have one. Projects that only appear in one of the two periods show 0 on the other side; that is the interesting case.
Productivity shows what share of the recorded time was booked to projects — for the team and per person. With fewer than three people, the team value is marked as not meaningful: the average of two people is not anonymisation. Employees have no access to this page; the rule that they could only see their own row is defined in the calculation logic but does not currently take effect in the interface.
Reassigning times afterwards
In the Assignment tab, the owner and shift manager move entries in bulk to a different project — up to 200 entries at once, with Reason (optional). Every reassignment is a correction with a version chain, as in the timesheet; the old entry is kept as its predecessor. Entries in a month that has already been closed are skipped and reported as a count — nothing changes any more in a locked month. Entries cannot be moved to an archived project.
Export: for Excel and for the invoice
The CSV export button delivers a CSV file for Excel (semicolon, comma as decimal separator) in three scopes, which you choose next to it:
| Scope | One row per |
|---|---|
| per project | project — with hours, budget, labour costs, revenue, contribution margin, margin, traffic light |
| per project and person | project × person — with hours, base pay, premiums, labour costs and share |
| per project and month | project × month — with hours and labour costs, for further processing in Excel |
For the outgoing invoice there is a second route that has nothing to do with this analysis: the file “Times for accounting (Saldy)” in Timesheets, below the table. For each person, day and project it contains the duration in minutes and decimal hours, cost centre, note and — if stored on the project — the calculated hourly rate. Requirements: Starter plan or higher and a closed month, because an invoice must not be based on figures that can still change afterwards. You download the file and upload it in Saldy under “Zeiterfassung” (time tracking); there is currently no direct transfer. It is the basis for the invoice to the customer, not for pay.
Still stuck?
If the traffic light does not calculate or a project is missing from the ranking, support can help. How times get onto a project in the first place is explained under Assigning times to projects or sites; the other analyses under Reports for management.
Last checked on . We check every article against the application — if something no longer matches, that is a bug and not a difference of opinion.
Was this helpful?
Related articles
- Assigning times to projects or sitesHow to split working time across jobs, sites, wards or cost centres, how to assign times retroactively — and what Zeitflex analyses from it.
- Reports: overtime, target/actual, labour costs, sickness rateFour analyses over freely selectable periods as CSV and PDF, plus the shift plan analysis Planned vs. worked — on the Pro plan.
- Month-end close in 10 minutesReview, calculate, lock, export — the complete process with the four places where things get stuck.