Budgets now count billable hours – and weekly hours are finally editable
Budgets measure only what gets charged. Plus: weekly hours per person, approving agent time on the ticket, and credit notes in the invoice list.

This release settles a place where the numbers contradicted each other: a project could read "121% used" while the customer was only ever going to be charged the agreed budget. Two long-standing gaps close with it – weekly hours could not be entered anywhere, and agent time had to be approved somewhere other than where it was created.
A budget measures what gets charged
Until now the budget bar counted every booked hour. On a fixed-price ticket, though, the hours past the agreed budget are automatically flagged non-billable and never invoiced. The bar counted them anyway – a project exactly on budget read as over, and the budget alert went out regardless.
A budget is a billing promise, so Spedy now measures it against the hours that actually get billed. The percentage, "near budget", "over budget" and the remaining hours all derive from the billable hours.
The booked total doesn't disappear, it is drawn separately: a second, neutral segment sits behind the fill for the non-billable share, with a legend spelling it out underneath:
7.25h non-billable – not counted against the budget (42.25h tracked)
This applies everywhere a budget is shown:
- Time & Budget (the customer-facing view)
- Planning & Reports → Budgets (the overview across all projects)
- the budget alert card on the dashboard
- the time & budget chip in a project board's header
Ticket rows in those lists now measure against the same reference as fixed-price capping – budget, else estimate – and show their own capped share. A ticket whose overrun was capped long ago no longer renders as a red bar.
What this means for you: projects that appeared to be over budget now sit where they always sat commercially. When a number differs, the legend says where the difference comes from.
Which hour field is in effect
A ticket's properties list Estimated and Budget one under the other. Which of the two actually counts was written nowhere – the rule ("budget, else estimate") existed, it was just invisible.
Now it's spelled out:
- Under Estimated: "Internal effort estimate. Counts as the budget as long as none is set below."
- Under Budget, a line naming the value in effect – "The budget counts: 3h. Progress bar and fixed-price capping both use it.", "No separate budget – the estimate counts: 2h.", or "Neither budget nor estimate – progress bar and fixed-price capping stay inactive."
The time budget progress bar on the ticket follows the same rule. Before, a ticket with a budget but no estimate either lost the bar entirely or showed one with nothing to measure against, while fixed-price capping and the project budget had been using the budget all along.
Only roles that may see the budget field see these hints – nothing changes for customer accounts.
Planning & Reports opens on Overview
Planning & Reports used to land on Workload, even though Overview – throughput, lead time, on-time delivery – answers the first question: are we delivering?
- Clicking it in the sidebar now takes you to the first tab you're allowed to see, in the order Overview → Workload → Budgets → Time & Budget → Timeline. Without access to Overview you land where you landed before.
- Workload got an address of its own:
/project-management/workload. Old bookmarks on/project-managementnow open Overview rather than Workload. - The sidebar entry now also appears for people who hold only
reports:viewand none of the other permissions.
Keeping weekly hours on file
The Utilization column in Overview stayed empty as long as no weekly hours were on file – and the hint underneath pointed at a place that did not exist yet. It does now.
Settings → Members → on a person's row:
- Fill in Weekly hours (e.g.
40) - Anything from 0 to 168 hours is accepted
- Leave it empty to keep no capacity on file
Stored hours then read as "40 hrs/week" on the row. The field only exists for internal members – customer accounts are not capacity.
Anyone with members:edit gets there in one click from Overview via Set weekly hours. Everyone else still sees the explanatory sentence only.
Spedy still assumes no 40-hour week: without weekly hours on file the utilization column stays empty instead of inventing a number.
Approving agent time on the ticket
Time an agent tracks over MCP arrives as a draft and only counts once approved. Until now that meant leaving the ticket, opening Time → Approvals and finding the ticket again.
A ticket's Time tracking tab now shows that ticket's drafts at the top, above the day groups, under the heading Agent time to approve. Each draft offers the same three actions as the inbox:
- Approve – books the draft
- Adjust + approve – change the minutes, then book
- Discard – deletes the draft without booking
Approve all clears the whole block at once. The block is visible to the person the time belongs to and to admins. Time → Approvals stays as the collected inbox across all tickets.
Two things come with it:
- Descriptions are multiline. Line breaks survive and are no longer truncated in the ticket panel, the time lists or the approvals inbox. In the editor, Enter saves and Shift+Enter inserts a line break.
- Day groups are expanded. In the ticket panel you see every entry and its full description without a click. Entries from MCP carry an MCP label there.
Credit notes in the invoice list
When an issued invoice is reversed in part or in full – after a refund or a chargeback, say – a separate document is created for it: a credit note under § 17 UStG, with negative amounts. It existed before, but nothing in the list told it apart from an ordinary invoice.
Under Settings → Billing → Invoices it does now:
- a Credit note marker on the row
- the note corrects 2026-000123, the number of the invoice it refers to
- negative amounts shown as what they are, with a tax line ("€1,000.00 net + €190.00 VAT (19%)", and the matching wording for reverse charge or non-taxable supplies)
- Download credit note as PDF in the same place as for an invoice
The correction also goes out by e-mail to your billing recipients the moment it is issued – with its number, the invoice it corrects and the amount going back. So you don't have to watch the list to find out about it.
Read on
- Time & Budget – how the budget status is calculated now
- Tickets → Budget and fixed price – which hour field counts when
- Delivery metrics – Overview, the team table and utilization
- Members – putting weekly hours on file
- Time tracking – approving drafts, on the ticket and in the inbox
- Billing – invoices and credit notes
Frequently asked questions
Quick answers to the most common questions about this topic.
Why is my project suddenly no longer over budget?
Which of the two hour fields on a ticket counts now?
Where do I enter someone's weekly hours?
Do I still have to switch to the approvals page for agent time?
What is a credit note and when do I get one?
Keep reading

Three bookable plans, preview media on the PR, and time & budget in the board header
Spedy now has four plans (Free, Starter, Pro, Business) you can book directly. Plus: automatic screenshots and video on the pull request, a compact time & budget summary in the board header, and natural duration formats for quick time booking.

A dashboard sorted by decisions, delivery metrics, and better bulk actions
Four buckets instead of fourteen sections on the dashboard, a new delivery-metrics overview, budget and fixed price per ticket – and more bulk actions.

Time & Budget for customers, all GitLab pipelines, and duplicating permission groups
Customers get a transparent Time & Budget overview with one-click approvals. Plus: every GitLab pipeline instead of only merge-request ones, duplicable permission groups, and status text on linked tickets.