Timesheet
View and manage your time-tracking data in the timesheet view
Starting and stopping records
Re-start timesheet records
- Click one of your last activities in the modal, opened through the upper toolbar - this will start a record for the same customer/project & activity “now”
- Click the restart action from one of the records in your timesheet - this will start a record for the same customer/project & activity “now” and copy description and tags
Start new records
- Clicking the big play button in the toolbar (if no record is active right now)
- Click the “+” action is the upper right page actions to open the “edit new record” modal
- Select a time-range in the calendar (deactivated if the timeclock-mode is active)
- Click a day in the calendar (deactivated if the timeclock-mode is active)
Stop records
- Click the stop button in the “active records” dropdown in the upper toolbar
- Click the stop action in the running record in your timesheet
- Save a running record after setting an end date (deactivated if the timeclock-mode is active)
Problem: cannot be stopped
Kimai has a few rules in place, which could prevent to stop a running timesheet, e.g.:
- prevent excessive long timesheets from being accidentally created
- prevent a timesheet to be stopped before it was started, which can happen if you create a running timesheet with a start date in the future
When a user tries to stop such a timesheet, a warning like one of the following will be shown:
End date must not be earlier then start dateAn empty duration is not allowedMaximum 08:00 hours allowed
You have several options to solve this problem.
All of them involve that you switch to My times and find the record (usually the last one created):
- Edit the record and set a different start date
- Edit the record and set a different end date
- Edit the record and set a shorter duration
- Delete the record from the listing
An administrator can fix the problem by opening the All times view and filtering the user.
Administrators can also configure the duration for this check or deactivate it entirely at System > Settings > Timesheet.
Batch update
You can change many timesheets at once, by using the “Batch update mode”. First use the search to filter the correct results (tip: increase page size to see everything on one page).
Now click the checkbox in the top left corner of the results list to select all records (or select individual records if you only want to change a few). Scroll down to the bottom of the table where the new “Batch Mode” buttons appeared. Click “Edit” and confirm that you want to edit all the selected records.
You will see a new “Batch Update” page with various options to update all the selected timesheets.
Time input
The begin and end time input fields accept various formats, to allow correct and also speed typing.
- Leave the
endfield empty, if you want to record a duration greater than 24:00 hours - Conversion between 12 and 24 hour format happens automatically when leaving the field
Here are some examples of valid user inputs and how Kimai will interpret them:
| User Input | Result 12-hour | Result 24-hour |
|---|---|---|
| 0 | 12:00 AM | 0:00 |
| 7 | 7:00 AM | 7:00 |
| 12 | 12:00 PM | 12:00 |
| 17 | 5:00 PM | 17:00 |
| 545 | 5:45 AM | 5:45 |
| 1645 | 4:45 PM | 16:45 |
| 845am | 8:45 AM | 8:45 |
| 1245pm | 12:45 PM | 12:45 |
| 1245 pm | 12:45 PM | 12:45 |
| 12:45 pm | 12:45 PM | 12:45 |
| 13:45 PM | 1:45 PM | 1:45 |
| 13:45 AM | 1:45 PM | 13:45 |
| 1045 | 10:45 AM | 10:45 |
| 2:15 | 2:15 AM | 2:15 |
| 13:15 | 1:15 PM | 13:15 |
| 2:15 PM | 2:15 PM | 14:15 |
| 2:15 AM | 2:15 PM | 2:15 |
| : | 12:00 AM | 0:00 |
| :1 | 12:01 AM | 0:01 |
| 1:1 | 1:01 AM | 1:01 |
| 19:1 | 7:01 PM | 19:01 |
| :1 PM | 12:01 PM | 12:01 |
| 0:1pm | 12:01 PM | 12:01 |
Duration
The duration field provides several easy ways to change its value, the most obvious one being the dropdown next to it.
Important
- Using
0or00:00as duration will stop the entry with a duration of zero seconds - To create a running entry the
endanddurationfield needs to be empty
Change the duration
The duration field can be changed by using your keyboard:
ArrowUpkey to increase the duration either 5 minutes or 1 hour, depending on the cursor positionArrowDownkey to decrease the duration either 5 minutes or 1 hour, depending on the cursor positionPageUpkey to increase the duration by 1 hourPageDownkey to decrease the duration by 1 hourHomekey to set the duration to 00:00Endkey to set the duration to 08:00
Input format
Please read the full documentation about accepted inputs for the duration format.
Short version:
- The main format is
time span, as example2:30 - The other option is
decimal inputwhere a value like2.5will be converted to2:30 - You can also use
time periodsformat, where2h30mwill be converted to2:30
Exported records
Exported records will be locked to prevent manipulation of cleared data.
The permission edit_exported_timesheet does allow editing and deletion of these
locked entries nevertheless, which by default is given to users with ROLE_ADMIN and ROLE_SUPER_ADMIN.
The export state can be set manually or via the invoice and export screens.
Billable vs. not billable
You can define whether a timesheet record is billable or not.
Non-billable timesheets are excluded from invoices and budget calculations.
Please read the billable documentation to understand the billable flag.
Filter and search
The search supports filtering by the fields:
user(only in team timesheets)daterangecustomerprojectactivitytagsstate(running / stopped)
Besides these filters, you can query for a free search term, which will be searched in the fields:
description
Additionally, you can filter for custom fields by using a search phrase like location:homeoffice.
This would find all entries 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 officeOfficeThis office is beautifulOur offices are very noisy
Attention: checkboxes have the values 0 (not checked) and 1 (checked).
You can mix the search term and use multiple meta-field queries:
location:homeoffice hello- find all entries matching the search termhellowith the custom fieldlocationmatching the termhomeofficelocation:homeoffice contract:fulltime- find all entries with the custom field combination:locationmatchinghomeofficeandcontractmatchingfulltimeexpired:0finds all items whoseexpiredcheckbox isoff
There are also special operators, which can be used in conjunction with custom fields:
- The
empty string (e.g.location:) will find all entries whose value in thelocationfield is either empty or not existing - The
~search term (e.g.location:~) will find all entries that are missing the custom field (created before the field was created) - The
*search term (e.g.location:*) will find all entries that have any value in thelocationfield (basically the opposite of~)
Permissions
Admin
| Name | Description |
|---|---|
edit_exported_timesheet |
Edit and delete timesheet records which were exported |
lockdown_grace_timesheet |
All records in the last lockdown period can be edited, even after the grace period ended |
lockdown_override_timesheet |
None of the lockdown rules apply |
Permissions for your own timesheets
| Name | Description |
|---|---|
create_own_timesheet |
Create a new timesheet record with the dialog |
delete_own_timesheet |
Delete own timesheet records |
edit_export_own_timesheet |
Set the export state for your own timesheet record |
edit_billable_own_timesheet |
Set the billable state for your own timesheet record |
edit_own_timesheet |
Edit own timesheet records |
edit_rate_own_timesheet |
Edit the rates for own timesheet records (fixed, hourly and total) |
export_own_timesheet |
Export your own timesheet in the timesheet panel |
start_own_timesheet |
Create a running timesheet record (restart and create) |
stop_own_timesheet |
Stop the own running timesheets records |
view_own_timesheet |
Allows access to the own timesheet views |
view_rate_own_timesheet |
View the rates for own timesheet records (fixed, hourly and total) |
weekly_own_timesheet |
Gives access to the Weekly hours screen |
Permissions for timesheets of other users
| Name | Description |
|---|---|
create_other_timesheet |
Create a new timesheet record in the name of another user |
delete_other_timesheet |
Delete timesheets of other users |
edit_export_other_timesheet |
Set the export state for other users timesheet records |
edit_billable_other_timesheet |
Set the billable state for other users timesheet record |
edit_other_timesheet |
Edit existing records of other users |
edit_rate_other_timesheet |
Edit the rates for other users timesheet records (fixed, hourly and total) |
export_other_timesheet |
Export timesheet in the timesheet admin panel |
start_other_timesheet |
Start running timesheet records for other users |
stop_other_timesheet |
Stop running timesheet records of other users |
view_other_timesheet |
Allows access to the timesheet admin panel, listing records for all users |
view_rate_other_timesheet |
View the rates for other users timesheet records (fixed, hourly and total) |
Read how to assign these permissions to your user roles in the permission documentation.
Related articles
- Prices (rates) – How rates for your timesheet records are calculated
- Calendar – Manage your timesheet records in a calendar view
- Weekly hours – Manage your time records in quick and easy weekly spreadsheet-like view.