Activities in Kimai are meant to explain the kind of work done for a specific task/timesheet.

Activity types

Activities can have two different types: global and project specific.

Project specific

Activities can be assigned to a project, which means you can only choose them if the linked project is active.

Global activities

Activities can be global, meaning they are not linked to a project and can be used in combination with every project.

Examples for global activities could be:

  • meetings
  • phone calls
  • administrative tasks

These examples might vary heavily between different industries, the main usage are recurring tasks throughout all of your projects.

Activity colors

Each activity can be assigned its own color, for easier identification in various screens.

If no color has been selected, the project color will be used. If that is not defined as well, Kimai will fallback to the customer color and finally to the default color.


Budgets help you to watch your progress and to stay within contract boundaries.

If the System > Settings configuration Allow overbooking of stored budgets is not active, Kimai will prevent that records will be created, which would go beyond your configured budgets.

Currently, the visibility of budgets cannot be limited independently. So if you want to show progress to your users, you cannot show only the time budget (this will be changed in the future).

The permissions budget_team_activity, budget_teamlead_activity and budget_activity are used to check if the logged-in user can see the budgets.

Budget type

Kimai knows two budget types. The default budget type is lifetime (which is used if the budget type is empty), the other available budget type is monthly.

  • Lifetime budget - uses all records of all times to calculate progress and budget usage
  • Monthly budget - uses all records of the selected month to calculate progress and budget usage

No matter which budget type is used, it does not influence invoice amounts. There is no automatism that will add a monthly budget to your invoice (you have to create expenses or time records for that).

Money budget

Money budgets will be used to calculate reports.

For Kimai there is no difference between money and time budgets. If there are multiple people with a different hourly rate working on the same tasks, then money and time budget will differ in their outcome.

Only billable records will be used to calculate the remaining budget.

Time budget

The time budget should be entered in the format hh:mm or decimal hh.m.

Time budgets will be used to calculate reports.

If you are using money budget and want to show progress to your users, it is a good idea to calculate the hourly rate by using money budget / average hourly rate.

Only billable records will be used to calculate the remaining budget.


You can configure rates on different levels in Kimai. It starts from the user hourly rate and goes from Customers to Projects and Activities. Please read the rates documentation to find out more how rates are calculated.

On the detail page of the selected item (which you find by clicking a row in the listing table or select Show from the dropdown menu) you find the Hourly rate section. By default, you see the message No hourly rates have yet been configured.

The rates section table

You configure new rate rules by clicking the + button in the upper-right of the Hourly rates table.

A user needs the two permissions to be able to see and edit rates:

  • one of: view_activity, view_team_activity, view_teamlead_activity
  • one of: edit_activity, edit_team_activity, edit_teamlead_activity

Edit rate screen

The edit rate screen has four settings:

The edit rates screen

  • User - the user this rate applies to - if no user is chosen it applies to everyone without explicit personal rule
  • Rate - the rate to be charged (per hour)
  • Internal rate - the internal rate (or “costs” if you will) to apply (per hour); if this is not specified, the normal rate is used for calculation.
  • Fixed rate - if this is ticked, each time record gets the configured Rate value applied, regardless of the record duration

Catch-all rate

If no user was chosen, this rule applies to every user, except those who have a explicit User specific rate configured.

User specific rate

Every rule the defines a user is a user specific rate and those always win over Catch-all rate configurations.

Rates example

The following example contains two rate rules:

A sample rates configuration

The first one is a Catch-all rate that applies to everyone who is recording times for this activity. So every hour counts with 50 € towards the budget of this activity and has internal costs of 25 €. Every recorded hour has a gross margin of 25 € / hour.

The second rule applies to the user Susan Super who (as only user) has a User specific rate for this activity. Even though she has a higher internal cost of 45 € / hour, her work earns 85 € / hour, which leads to a gross margin of 40 € / hour.


By toggling the visibility on an activity, you:

  • hide the activity from all drop-downs, regardless of their visibility state
  • hide the activity from the default list in the activities administration

Please note:

  • all currently linked objects will still show the activity in the dropdown as pre-selected option
    • you can still change the activity on timesheet record, which used it before
    • you cannot create new timesheet records for this activity
  • you can still access the hidden entries by changing the visibility filter on the toolbars

The visibility filter in the toolbar has three state:

  • Visible: Yes (all activities that are “really” visible, meaning: the activity, linked project and customer are visible)
  • Visible: No (all activities that are exclusively invisible by their own visibility state)
  • Visible “empty” (all activities: not filtering on their own, the projects or customers visibility)

The search drop-down supports filtering by the fields:

  • customer
  • project
  • global / non-global
  • visibility

Besides these filters, you can query for a free search term, which will be searched in the fields:

  • name
  • comment

Additionally you can filter for custom fields by using a search phrase like location:homeoffice. This would find all activities with the custom field location matching the term homeoffice.

The search terms will be found within the full value, so searching for office would find:

  • I love working in my office
  • Office
  • This office is beautiful
  • Our offices are very noisy

You can mix the search term and use multiple meta-field queries:

  • location:homeoffice activityname foo - find all activities matching the search term activityname foo with the custom field location matching the term homeoffice
  • location:homeoffice contract:foo activityname - find all activities matching the search term activityname with the custom field combination: location matching the term homeoffice and contract matching the term foo
  • location:homeoffice contract:foo - find all activities with the custom field combination: location matching the term homeoffice and contract matching the term foo