199€ (excl. VAT)

License and purchase details
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
Start and stop timesheets with a barcode scanner for attendance time-tracking
Last update: 06 Mar 2020

A Kimai 2 plugin, which allows to use barcodes for punch-in and punch-out time tracking with Kimai. You can use it with an attached barcode scanner or you run Kimai on a device (eg. tablet) with a built-in camera.

If you want to use Kimai in a kiosk mode, where your users should only register their attendance time through
punch-in and punch-out mode when entering/leaving the building, then this bundle is the solution for you.

It could be as simple as:

  • Print the barcodes on your employee cards
  • Mount a tablet to the wall in your entrance room
  • Let your users check-in & check-out when entering the building by scanning the barcode from the emplyoee card

You can test it in the “Plugins” demo.


  • Start/Stop work with device camera or a hardware barcode scanner (eg. via USB)
  • Upon starting/stopping a record via this plugin, the user will see a short overview screen with the entries of the current week, including some statistics
  • The following 1D barcodes are currently supported:
    • Code 128
    • Code 39
    • UPC-A (scanner needs to transmit check digit)
    • Code 2 of 5
    • Code 2 of 5 interleaved
    • Codabar (scanner needs to transmit start & stop digits)
  • New user profile screen for the “barcode”
    • Display current barcode (randomly generated if empty)
    • Regenerate random barcode
    • Re-use existing barcode for user
  • User specific settings for allowed start and end time (user can only clock in between these times)

You need to configure a non-global activity for starting the record via this plugin. This will be used for every recorded timesheet that is created using the kiosk mode.



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.0 - 1.3 1.8


Copy files

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

The file structure needs to like like this afterwards:

├── KioskBundle
│   ├── KioskBundle.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:kiosk:install

This will install all required databases.

Install the bundle assets

The following command will install the required assets (images, javascripts, styles):

bin/console assets:install

Configure the plugin

You have to configure the bundle before you can use it via the Plugin screen. Click the actions dropdown and select Preferences (see screenshot).

The following configurations are available:

  • Login mode - whether to use camera or usb mode
  • Barcode format - you have to decide which code format you want to use
  • Barcode includes readable code - whether the barcode in the user profile will include the human readable code
  • Duration to display confirmation dialog (in seconds) - how long the start/stop screens will be shown after a successful scan
  • Activity - the non-global activity that will be used to track the times


This bundle ships a new permission, which limit access to certain functions:

  • barcode_own_profile - allows to see and administrate barcode for the own user profile
  • barcode_other_profile - allows to see and administrate barcode for all user profiles
  • kiosk_own_profile - allows to configure user specific kiosk settings (eg. start and end time) for the own user profile
  • kiosk_other_profile - allows to configure user specific kiosk settings (eg. start and end time) for all user profiles

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

Please adjust all permission settings in your administration.

Updating the plugin

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

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


When logged in as SUPER_ADMIN, change to the Plugins menu:


Open the plugins preferences, which you need to save once before you can use the plugin:


After updating the settings, change to the user menu. You will see a new entry in the action menu for every user:


Choose Barcode to open the users barcode:


This new barcode can now be printed and handed out to the user.

The Barcode with USB scanner login mode show a screen like this, the input field is pre-selected and the scanner will submit it after finding a code:


The Barcode with device cam login mode will show the camera video and scan constantly for barcodes:


When scanning an existing barcode and the user does not have a running record a new one will be started:


Or when a record is running, it will be stopped:


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
Custom CSS plugin
Fail2Ban plugin
Grandtotal plugin
3rd party
Installation & Update support
upon request
Recalculate rates plugin