Inventur and PackScan
Overview
PackScan and Inventur are two free, open-source mobile web applications for Dolibarr. They support barcode-based order picking, packing verification, stock counting and storage location management.
The applications are developed by Stefan Grumpelt, gRoods.de, and are used daily in his own warehouse.
They run in the smartphone browser and communicate directly with an existing Dolibarr installation through its REST API. No additional application backend or database is required.
Project information
| Item | Information |
|---|---|
| Applications | PackScan and Inventur (Inventory) |
| Author | Stefan Grumpelt, gRoods.de |
| Version documented | 1.2.0 |
| License | GNU General Public License v3.0 or later |
| Price | Free download; optional paid setup and support |
| Dolibarr compatibility | Developed and used with Dolibarr 24 |
| Platforms | Safari on iPhone from iOS 16; Chrome on Android |
| Interface languages | 24 languages, including English, German, French, Italian and Spanish |
| Website | Project website |
| Source code | GitHub repository |
| Documentation | English / German |
| Contact | info@groods.de |
Features
PackScan: order picking
- Combine open orders into a picking list sorted by storage location.
- Group identical products across multiple orders.
- Display product images, quantities and prominent barcode end digits.
- Display storage locations in a visual wall or shelf grid.
- Scan products or enter quantities manually.
- Allocate picked quantities to the oldest orders first.
- Release complete orders while leaving incomplete orders pending.
- Exclude postage and other non-pickable products through the settings.
PackScan: packing verification
- Scan a shipment label to open the matching Dolibarr shipment.
- Verify products by barcode before packing them.
- Receive visual and audible feedback for correct and incorrect items.
- View packing progress for each shipment.
- Validate shipments and close orders according to the application settings.
Shipment lookup supports DHL labels and the Data Matrix code of Deutsche Post Internetmarke labels. The shipment number must already be recorded in the corresponding Dolibarr shipment.
Inventur: stock counting
- Find products using their standard barcode or an additional GTIN field.
- Display product information, images and stock by warehouse.
- Assign or update storage locations.
- Suggest the next storage column when placing products sequentially.
- Adjust stock quantities by warehouse.
- Record the date and time of the last count.
- Warn if a product has already been counted on the same day.
Scanning a product does not change stock. Selecting Save immediately posts the stock difference as a Dolibarr stock movement with an INV-prefixed reference. Current stock is reloaded before posting.
Mobile operation
- Camera scanning for EAN, Code 128, QR and Data Matrix.
- Torch control on supported devices and browsers.
- Audible feedback and visual confirmation.
- Protection against repeatedly counting a barcode that remains in view.
- Support for Bluetooth scanners that act as a keyboard.
- Home-screen icons for direct access to each application.
Requirements
- An existing Dolibarr installation accessible over HTTPS.
- Access to the Dolibarr REST API.
- A dedicated API user with appropriate permissions.
- Configured product barcodes and extra fields.
- Products, stock/warehouses, customer orders and shipments enabled for the complete workflow.
- A reliable connection between the smartphone and Dolibarr.
Developed and used with Dolibarr 24. Older versions require separate compatibility testing.
The documented shipping workflow uses DHL and Deutsche Post shipping methods. Shipping-method codes can be adjusted in the application settings.
Installation
These applications are standalone REST API clients, rather than conventional modules installed through the Dolibarr external-module installer.
- Download and extract the application package.
- Create the directory
htdocs/custom/lager/in the Dolibarr installation. - Copy the contents of the package's
lager-appsdirectory into this directory. - Keep the HTML files, icons and manifest files together.
- Configure the required Dolibarr modules, extra fields and API permissions.
- Open
https://your-dolibarr.example/custom/lager/on the smartphone. - Select an application and open its settings.
- Enter the Dolibarr API address and API token.
- Disable demo mode if enabled and test the connection.
- Review warehouse and stock-movement settings before using live data.
The applications can optionally be added to the smartphone home screen.
Detailed instructions:
Extra fields
| Default code | Object | Type | Purpose |
|---|---|---|---|
| lagerplatz | Product | Text | Storage location, picking order and grid display |
| gtin | Product | Text, optional | Additional product barcode |
| letzte_inventur | Product | Date and time | Last stock count |
| gepickt | Customer order | Date and time | Release after picking |
Relevant field codes can be adjusted in the application settings.
The optional server-side shipping automation additionally uses the order field umgebucht to track stock transfers.
API permissions
Use a dedicated API user and grant only the permissions required for the selected workflow.
The complete workflow requires permissions to:
- Read and update products.
- Read warehouses and create stock movements.
- Read, update and close customer orders.
- Read, create and validate shipments.
- Read third parties.
For initial tests with live data, use a read-only API user where possible.
Stock configuration
Review Dolibarr's stock-movement settings before completing shipments.
If stock is already deducted when an order or invoice is validated, shipment validation must not deduct it a second time. Configure the stock trigger to match the actual warehouse workflow.
Storage locations
Storage locations are stored as text in a product extra field.
For example, 2.LW1.3.12 identifies room 2, wall LW1, row 3 and column 12.
The final two parts identify the row and column. Preceding parts describe the room, wall, shelf or other storage structure.
PackScan uses these locations to sort the picking list and display a visual storage grid.
Optional integrations
The free applications do not include:
- Marketplace or webshop order imports.
- Purchasing postage or generating shipping labels.
- Sending tracking information back to marketplaces.
- Server-side shipping automation.
These workflows require separate integrations.
Without shipping automation, labels are created in an external shipping tool and the corresponding shipments are prepared in Dolibarr.
Limitations
Connectivity
Loading lists, looking up products and saving changes require a connection to Dolibarr.
Local picking and packing progress is stored on the device and retained after a connection interruption. This is not a fully offline workflow.
Multiple users
- Picking progress is device-local. Use one picker per picking run.
- Multiple people can pack simultaneously when working on different shipments.
- Coordinate stock counts to avoid concurrent updates to the same product and warehouse. Reloading stock before saving does not constitute a reservation or lock.
Partial shipments
Create genuine partial shipments in Dolibarr.
Finishing packing with missing items does not automatically reduce the quantities recorded in the shipment.
Sets and variants
- Sets are handled as individual products with their own barcode.
- Components of Dolibarr kits are not expanded.
- Product variants are handled as separate products with their own barcode.
Inventory scope
- Stock corrections involving lots or serial numbers must be performed in Dolibarr.
- Inventur does not currently provide a separate count sheet or an expected-versus-counted export.
- Inventory movements can be reviewed and exported in Dolibarr.
- The last-count field can be used to identify products that have not yet been counted.
Products without a barcode can be counted manually using the quantity controls.
Data storage and access
Business records are stored in the user's Dolibarr installation.
The browser stores the API address, API token, settings and local workflow progress. Camera images are processed locally and are not uploaded by the applications.
Use a dedicated API user with permissions appropriate to the workflow.
If a device is lost, its access can be revoked by renewing the relevant API user's token in Dolibarr. Other devices using the same token will then need the new token.
Languages
Version 1.1.0 supports 24 interface languages:
Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish and Ukrainian.
The applications follow the browser language by default and fall back to English for unsupported languages. A language can also be selected manually in the settings.
Updates
Replace the application files on the server while keeping the same application URLs. Browser-stored settings remain on the individual devices.
The installed version is displayed in the application settings.
See the project version history for release information.
Demonstrations and download
- PackScan demonstration
- Inventur demonstration
- Source code on GitHub
- Download application package
- English setup guide
- German setup guide
The demonstrations use example data and require no registration.
When testing with an existing Dolibarr installation, self-hosting the application files on the same origin is the most reliable option. Cross-origin connections from the public demonstration may be blocked by the server, proxy or security configuration.
Support and contributions
Documentation and demonstrations are available online.
Individual support is not included in the free download. Optional paid setup, training and assistance are available by arrangement.
Bugs and feature requests can be submitted through the GitHub repository.
Reports should include the application version, Dolibarr version, browser, device and steps to reproduce the issue.
Do not publish API tokens, credentials or customer data.
Contact: info@groods.de
License and third-party components
Copyright 2026 Stefan Grumpelt, gRoods.de.
PackScan and Inventur are distributed under the GNU General Public License v3.0 or later.
SPDX-License-Identifier: GPL-3.0-or-later
The software is provided without warranty as described in the license.
Barcode recognition uses ZXing-C++ (Apache-2.0) through zxing-wasm (MIT). Internetmarke Data Matrix decoding follows the approach used by BinaryEye (MIT).
Third-party components retain their respective licenses and notices.
Dolibarr, eBay, DHL and Deutsche Post are trademarks of their respective owners. This is an independent project and is not an official product of those providers.