Logo - Keleo


Software development company founded by Kevin Papst

Try it

You can test this plugin in our dedicated plugin demo:

  • Username: susan_super
  • Password: kitten

Find more testing accounts here.

Click to enlarge
Keep track of your expenses and include them in your invoices.
Last update: 14 Sep 2019

A Kimai 2 plugin, which allows to keep track of your expenses based on customer, project and activity. These spendings can be categorized and included in your Kimai generated invoices.


  • Record all your expenses and show them in a table view
    • The data can be searched- and filtered (see screenshots)
  • All (refundable) expenses will be automatically included in your invoices
  • Manage expenses via API
  • Import expenses from Kimai 1
  • Support for custom fields (see Custom-fields plugin)

Expenses are sorted into free configurable types (categories). Each type has a:

  • name
  • visibility flag
  • default cost

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)
  • refundable flag (non-refundable expenses will not be added to your invoices)
  • an export flag (to make sure, that each expense is invoiced only once)



Please make sure to use the correct version of the plugin, which must be compatible with your Kimai version:

Bundle version Minimum Kimai 2 version
1.11 - 1.12 1.9
1.7 - 1.10 1.7
1.5 - 1.6 1.6.2
1.4 1.6.1
1.3 1.6
1.1 - 1.2 1.4
1.0 1.3


Copy files

Extract the ZIP file and upload the included directory and all files to your Kimai installation to the new directory: var/plugins/ExpensesBundle/

The file structure needs to like like this afterwards:

├── ExpensesBundle
│   ├── ExpensesBundle.php
|   └ ... more files and directories follow here ...

Clear cache

After uploading the files, Kimai needs to know about the new plugin. It will be found once the cache was re-built. Call these commands from the Kimai directory:

How to reload Kimai cache

bin/console kimai:reload --env=prod

FTP users: please have a look at this documentation.

If you are running an older version of Kimai (before 1.8) you have to use:

bin/console cache:clear --env=prod
bin/console cache:warmup --env=prod

You might have to set file permissions afterwards:

Fix Kimai file permission

You have to allow PHP (your webserver process) to write to var/ and it subdirectories.

Here is an example for Debian/Ubuntu (to be executed inside the Kimai directory):

chown -R :www-data .
chmod -R g+r .
chmod -R g+rw var/
chmod -R g+rw public/avatars/

Test Kimai before executing these commands (they are likely not required in a shared-hosting environment). You probably need to prefix them with sudo and the group might be called different than www-data.

Create database

Run the following command:

bin/console kimai:bundle:expenses:install

This will install all required databases.


When logged in as SUPER_ADMIN, you will now see the expenses administration screen at /en/expenses/.

If this was successful, you can now think about giving permissions to other users as well.

Setup categories

Before you can start tracking expenses, you will have to create at least one visible category. You will be redirected to the category creation screen if Kimai doesn’t find one.


This bundle ships a couple of new permissions, which limits the access to certain functions:

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)
create_expense create new expenses
export_expense export expenses
delete_expense delete existing expenses
manage_expense_category manage expense types

By default, these are assigned to each user with the role ROLE_SUPER_ADMIN.

Updating the plugin

Updating the bundle works the same way as the installation does.

  • Delete the directory var/plugins/ExpensesBundle/ (to remove deleted files)
  • Execute all installation steps again:
    • Copy files
    • Clear cache
    • Update database with bin/console kimai:bundle:expenses:install


The overview page of all expenses:


The category management:


You can search through all existing expense records:


When creating a new expense, you can record the following fields:


All items by Keleo

Audit-Trail plugin

Records detailed change/audit logs for timesheets, customers, projects and activities and displays them in a per-item timeline.

Custom-fields plugin

Create free configurable additional (optional and mandatory) fields for timesheets, customers, projects and activities in various formats.

Expenses plugin

Keep track of your expenses based on customer, project and activity. These spendings can be categorized and included in your invoices.

Kiosk plugin

Attendance time-tracking in an environment, where the user has no access to Kimai (eg. in a warehouse) by using a barcode scanner to start and stop timesheets.

Task management plugin

Create tasks, start/stop/pause them, assign them to users and teams - a todo-list management plugin that is connected to your time-tracker and features two new dashboard widgets