Skip to main content
To set a budget, open the project, go to Settings, find the Budget card, choose a budget type, enter an amount and click Set budget.

Before you start

You need:
  • the budget.manage capability – Owner, Admin or Project Manager
  • the Budgets & profitability app switched on
  • the Pro plan
If you cannot see a Budget card in project Settings, one of those three is missing.

How to set a budget

1

Open the project's settings

Go to Projects, open the project, then click Settings.
2

Find the Budget card

It is described as “The target this project is measured against. Overview shows spend, forecast and health once a budget is set.”
3

Choose the budget type

Pick Total hours or Total money. This decides what the budget measures.
4

Enter the amount

The field is labelled Total hours or Total amount (USD) depending on your choice. Enter a positive number.
5

Set the reset schedule

The Resets control only appears on a retainer project. Choose One-time or Monthly.
6

Add a margin floor (optional)

Under Alert if margin falls below, enter a percentage between 0 and 100. Leave it blank to skip margin-floor alerts.
7

Save

Click Set budget. Once a budget exists the button reads Save budget. A toast confirms Budget saved.

Every field on the form

Budget type

  • Total hours measures every hour logged against the project, whatever its approval state.
  • Total money measures approved labour cost, in your workspace base currency.
An hours budget never carries a currency. A money budget always does, and it is always the workspace base currency – the field label tells you which, for example Total amount (USD). See hours vs money budgets for how to choose.

Resets

The Resets dropdown only appears when the project’s Billing method is set to Retainer. Everything else is one-time.
  • One-time – a single pool for the whole project.
  • Monthly – the pool refills at the start of each calendar month, read in your workspace timezone.
The helper text under the control says so: “A monthly retainer resets its budget at the start of each calendar month.” To turn a project into a retainer, change Billing method in the same Settings screen and save that first. The Budget card reads the saved billing method, so an unsaved switch does not reveal the control. See recurring retainers.

Alert if margin falls below

An optional margin floor, as a percentage from 0 to 100. When set, an alert fires if the project’s forecast margin drops below it. Leave it blank and no margin-floor alert can ever fire on this project. A value outside 0 to 100 is rejected.
Set the floor to the margin you actually need to stay in business, not the one you hope for. A floor of 40% on a project you have sold at 45% will alert on almost any slippage, which trains people to ignore it.

Changing a budget

Setting a budget on a project that already has one replaces it. There is never a second budget on the same project. When you change the amount:
  • utilisation recalculates immediately against the new ceiling
  • health recalculates
  • already-fired alerts do not re-fire, because each rung fires once per project
That last point catches people out. If a project crossed 90% of a 10,000budgetandyouraisethebudgetto10,000 budget and you raise the budget to 20,000, the 90% alert has already fired and will not fire again on this budget’s pool. See budget alerts.

Example

Northwind Studio sets up three of its four projects.
A fixed-fee build sold at $40,000.Priya clicks Set budget. The Overview now shows a budget bar, and an alert fires if forecast margin drops under 35%.
Fenwick Legal – Brand Refresh gets no budget at all. It is a small job and the Financials panel reads No budget set.

The Task & section caps list

If any task on the project carries a cap, the Budget card lists them under Task & section caps, read-only. Each row shows the task name and the cap amount with its unit – 8h for hours, 500 USD for money. The helper text is explicit: “Informational only – they don’t reduce this project’s budget. Add or remove a cap on the task itself.” Caps are added and removed on the task, never here. One writer per concern. See task-level caps.

What happens next

Once the budget saves:
  1. The project’s Overview → Financials panel replaces No budget set with the budget bar and tiles.
  2. Utilisation, forecast and health start being calculated.
  3. The alert ladder arms at 50%, 75%, 90% and 100%.
  4. The project appears with a health colour anywhere projects are listed.
  5. The change is recorded in the workspace audit trail.

Permissions

The Budget card is hidden entirely without budget.manage, not shown as disabled. Project Settings as a whole is a project.manage surface, so a manager can administer a project without seeing its money. The Budget card saves through its own button rather than the surrounding Save changes button. A different mutation under a different capability must not ride along with a general project save.

Common questions

No. A money budget is always denominated in your workspace base currency. That keeps every project’s utilisation comparable.
No. Saving again replaces the existing budget rather than adding a second one.
It only appears when the project’s saved billing method is Retainer. Change the billing method, save it, then reopen the Budget card.
The Budget card has no delete action. To stop measuring against a ceiling in practice, raise the amount to something the project cannot reach – but the honest move is usually to set the right number.
No. It only changes what those entries are measured against. No cost, rate or entry is rewritten.
Not necessarily. Estimates are how long the work should take. The budget is what you sold. A budget below the estimate total is a useful early signal that the job is underpriced.

Troubleshooting

How budgets work

What the budget is measured against.

Hours vs money budgets

Choosing the right unit.

Recurring retainers

Setting a budget that refills monthly.

Task-level caps

The read-only list on this card.

Budget alerts

What the ladder fires and when.

Budget permissions

Who may set a budget.