Expenses
Keep track of your expenses and include them in your invoices
You are viewing an older version of this documentation page. A newer version is available here.
- Record all your expenses and show them in a table view
- The data can be searched- and filtered (see screenshots)
- All (billable) expenses will be automatically included in your invoices
- Negative amounts allow for complex bookings, budget and invoice adjustments
- Manage expenses via API
- Export expenses in: Excel, PDF, HTML
- Support for custom-fields
- Include expenses in Kimai export module
- Import expenses from Kimai 1
Expenses will be assigned to free configurable categories and each category has:
- name
- visibility flag
- default cost
- color
- help text (will be shown when creating an expense)
- description (will be copied into the expense description upon selection)
Each expense has the following fields:
- a date-time
- category (see above)
- user
- project (and customer)
- activity (optional)
- description (free text field)
- the cost (can be hidden for default user, if you use default cost via category)
- an amount (see it as multiplier, use 1 if you want to charge the cost only)
- a billable flag (non-billable expenses will not be added to your invoices)
- an export flag (to make sure, that each expense will be invoiced only once)
If turned on, Expenses count towards budgets and revenue statistics.
Expense summaries are displayed on the detail pages for customer, project and activity.
Usage
When logged in as user with sufficient permissions, you will see the expense administration screen at /en/expenses/
.
During the installation a Demo
category will be created, so you can immediately start adding expenses.
You can rename it after your first test.
Invoices
As expenses will be automatically included in your invoices, you might want to distinguish between expenses and timesheets.
Since Kimai 1.6.2 and ExpensesBundle 1.5 this can be done with the invoice template variable ${entry.type}
.
The value will be expense
and can be used for example in Excel with ifthan
formulas or in combination with a conditional format
.
The invoice template variable ${entry.category}
will contain the category name of the expense.
Filter and search
The search supports filtering by the fields:
daterange
customer
project
activity
expense category
user
billable
exported
The free search term will query the field:
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 office
Office
This office is beautiful
Our 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 termhello
with the custom fieldlocation
matching the termhomeoffice
location:homeoffice contract:fulltime
- find all entries with the custom field combination:location
matchinghomeoffice
andcontract
matchingfulltime
expired:0
finds all items whoseexpired
checkbox isoff
There are also special operators, which can be used in conjunction with custom fields (since Kimai 1.19.1):
- The
location:
) will find all entries whose value in thelocation
field 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 thelocation
field (basically the opposite of~
)
Permissions
Permission Name | Description |
---|---|
view_expense |
allows access to the expenses screen |
edit_expense |
edit existing expenses |
edit_expense_cost |
edit the cost of a single expense (deactivate this, if you want to provide default costs via the category) |
export_expense |
export expenses |
create_expense |
create new expenses |
delete_expense |
delete existing expenses |
manage_expense_category |
manage expense types |
edit_exported_expense |
allow to edit and delete exported expenses |
Pre-defined permissions are assigned to all default user roles.
The following restrictions are in place for accessing other user’s data:
- can only be seen by users who own the
view_other_timesheet
- users that own the
view_expense
permission but NOTview_other_timesheet
will only see own expenses - the visible data for non-admin users (permission
view_all_data
) is limited by team assignments
Read how to assign these permissions to your user roles in the permission documentation.