The following Bash commands will ensure that you continue receiving updates from the new package repository configuration. The update procedure, package structure and general commands are unchanged.
sudo curl -fsSL "https://go.packager.io/srv/deb/inventree/InvenTree/gpg-key.gpg" -o /usr/share/keyrings/InvenTree.gpg
sudo curl -fsSL "https://go.packager.io/srv/inventree/InvenTree/stable/installer/ubuntu/26.04.list" -o /etc/apt/sources.list.d/InvenTree.list
sudo apt update
sudo apt install -y inventree
sudo curl -fsSL "https://go.packager.io/srv/deb/inventree/InvenTree/gpg-key.gpg" -o /usr/share/keyrings/InvenTree.gpg
sudo curl -fsSL "https://go.packager.io/srv/inventree/InvenTree/stable/installer/ubuntu/24.04.list" -o /etc/apt/sources.list.d/InvenTree.list
sudo apt update
sudo apt install -y inventree
sudo curl -fsSL "https://go.packager.io/srv/deb/inventree/InvenTree/gpg-key.gpg" -o /usr/share/keyrings/InvenTree.gpg
sudo curl -fsSL "https://go.packager.io/srv/inventree/InvenTree/beta/installer/debian/13.list" -o /etc/apt/sources.list.d/InvenTree.list
sudo apt update
sudo apt install -y inventree
We are phasing out versions of Ubuntu and Debian that are at, or approaching, end of support, particularly as Python 3.11 has only one year until EOL.
If you are on Ubuntu 20.04 (LTS) - which many of the old Docker droplet deployments were on - it is strongly recommended to update to 26.04 (LTS) to continue receiving updates. This will likely also require you to update your postgres version to at least 14, recommended is 17 or 18. Note that postgres updates should be done in single version steps (13 -> 14 -> 15 -> 16 -> 17 -> 18) or with pgupgrade.
The volunteer InvenTree core team does not have the resources to assist with individual upgrades.
As of InvenTree version 1.5.3, the supported versions are Debian 13 and Ubuntu 24.04 / 26.04 LTS. This is mainly because Bookworm is the only supported Debian release shipping Python 3.11 (as does Ubuntu 22.04).
As Python 3.11 has received only security updates since 2024 and will reach EOL in October 2027, the libraries on which we depend have increasingly announced that they will soon end support for it. Although most still support it, this is likely to change. Therefore, we are raising the minimum versions in advance so that we are not caught off guard by dependency issues that require urgent releases.
Python 3.12 also has some nice QoL features that developers using Python 3.14 (myself included) can forget are relatively new. It also drops distutils and a few importlib functions. Raising the minimum versions allows us to drop shims and use these newer features.
We are very thankful to Cyril Rohr for packager.io and the support provided on various issues and questions throughout the years. We are not switching away from his solutions, but using the newer version, go.packager.io, as the old one is being sunset in the near future.
]]>Major changes are documented in the CHANGELOG.md file in the repository. For a full list of changes, please refer to the release notes.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
While we strive to maintain backward compatibility, there are some breaking changes in this release. While many of these are minor, and should not affect most users, we recommend that you review the list of breaking changes to ensure that your installation will continue to function as expected after the update. Each breaking change is documented in detail at the links below:
PR #11951 enables API request throttling by default, providing a first line of defense against trivial denial-of-service abuse of API endpoints. The default limits are intentionally generous so as to minimize impact on most instances, but administrators of smaller or resource-constrained instances should review the new throttling configuration.
PR #12223 raises the minimum supported Python version to 3.12, and drops pre-built packages for Debian 11 and Ubuntu 22.04. Users running InvenTree on an older Python version, or on one of these older distributions, will need to upgrade their environment before installing this release.
PR #12274 rewrites how “table” fields are rendered in UI forms, fixing a number of performance issues where rows were needlessly re-created on every update. As part of this refactor, each row now requires a unique ID value. Any custom plugins that use “table” field types in UI forms will need to be adjusted to match the new configuration.
PR #12294 consolidates the various object-duplication endpoints behind a single DuplicateOptionsSerializer, and extends duplication support to additional models (including the ability to copy notes). Integrations which rely on the previous per-model duplication endpoints should be reviewed against the new consolidated API.
PR #12320 changes the default behavior of the invoke update command so that it no longer automatically generates new migration files when the database schema has changed. This prevents installations from ending up with out-of-line migration files that were not committed to the repository. Developers who rely on migrations being auto-generated during update will need to generate them explicitly.
PR #12357 removes a number of legacy pricing methods from the Part model, in preparation for a larger pricing refactor. While this does not affect any internally called code, any plugins relying on these legacy methods being available will need to be adjusted.
PR #12360 removes the MPTT tree mixin from the StockItem model. The model never made real use of MPTT’s tree features, but paid the cost of expensive tree rebuilds and fragile concurrency locking on every bulk stock operation. Removing it reduces database load and eliminates a class of concurrency issues during bulk stock actions. External clients should note that the tree-related fields previously exposed on StockItem are no longer available via the API.
PR #12529 fixes a permission gap where “optional fields” exposing cross-model relations were returned regardless of whether the requesting user had permission to view the related model. These optional fields are now excluded from API responses if the user lacks view permission on the associated model, so integrations that depended on always receiving these fields may need to handle their absence.
A number of security vulnerabilities have been fixed in this release.
PR #12563 tightens access to the group and RuleSet API endpoints, which previously only checked the is_staff flag. These endpoints now also require the user to hold the StaffRole permission, closing a gap that allowed staff users without the appropriate role to view or modify permission rulesets.
PR #12595 further tightens the protections around fetching data from external URLs, reducing the risk of server-side request forgery (SSRF) when InvenTree makes outgoing requests on a user’s behalf.
This release includes a number of changes to the underlying database schema and data validation. As always, a backup of your database is recommended before performing the update.
PR #12301 introduces a custom UUID field to work around a Django 5.0 change to UUIDField handling on MariaDB. This resolves migration issues that could occur when updating existing UUID columns on MariaDB-backed installations.
PR #12336 removes the dynamically-generated currency choices from the PartPricing model definition, moving that validation into the API serializer instead, along with a dedicated validator to ensure only supported currency codes can be assigned.
PR #12388 adds uniqueness validation options to the ParameterTemplate model, allowing administrators to enforce that values for a given parameter template must be unique across parts.
PR #12568 fixes an encoding issue that could occur when importing date values from Excel files during the data import process.
PR #12217 adds a hierarchical “tree select” control for choosing stock locations and part categories in UI forms, making it much easier to navigate deeply nested location and category structures when filling out a form.
PR #12299 adds a dedicated UI for managing report assets and snippets, making it easier to create and maintain reusable template fragments for report and label generation.
PR #12328 adds a keyboard shortcut (Ctrl + Enter) to submit the currently open form, speeding up repetitive data-entry workflows.
PR #12310 introduces a long-requested “disassembly” feature, allowing an assembly to be broken apart back into its constituent BOM items. The feature is supported for untracked, tracked (serialized), and mixed assemblies, and preserves the originating purchase order and build order history on the resulting stock items.
PR #12117 adds a global “preview drawer” which provides a quick-view of a part, stock item, order, or other object without navigating away from the current page. Preview rendering is available for all core models, and is also exposed to plugins so they can supply their own preview content.
As always, we have provided a number of bug fixes with this release. Thanks to the many community members who have contributed to identifying and resolving these issues!
InvenTree is an open source project, and we welcome contributions from the community. There are many ways to contribute to the project, including code contributions, translation efforts, documentation improvements, and financial support.
As always we would like to thank all of our contributors for their hard work and dedication to the InvenTree project. In particular, we would like to welcome the following new contributors who have made their first contributions in this release:
Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer or want to become one, you can help to contribute to the project by submitting a pull request.
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.
If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.
Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!
The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
If your company benefits from InvenTree, please consider a one time sponsorship or a recurring sponsorship to help support the project.
]]>Major changes are documented in the CHANGELOG.md file in the repository. For a full list of changes, please refer to the release notes.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
While we strive to maintain backward compatibility, there are some breaking changes in this release. While many of these are minor, and should not affect most users, we recommend that you review the list of breaking changes to ensure that your installation will continue to function as expected after the update. Each breaking change is documented in detail at the links below:
PR #11723 removes various API quirks and aligns the InvenTree API with REST conventions: some operations have been moved to the correct HTTP methods (e.g. GET → POST), HTTP status codes now follow standard conventions rather than custom values, and custom permissions on the notifications endpoint have been removed. Users with custom API integrations should review their code for reliance on the previous non-standard behavior.
PR #11816 makes the issued_by field on BuildOrder (and related order models) read-only in the API; it is now automatically populated with the user who created the order and can no longer be manually overridden. Any integrations or scripts that previously wrote to this field will need to be updated.
PR #11893 upgrades the frontend build environment from Node.js 20 (which reached end-of-life on April 30, 2025) to Node.js 24. Developers building InvenTree from source must upgrade their local Node.js installation to v24 or later.
PR #11941 fixes a long-standing bug where user information was unavailable in report and label generation contexts. As part of this fix, the signatures for custom report plugin methods (add_report_context(), add_label_context(), and report_callback()) have changed: they now receive an explicit user object instead of a request object (which was previously always None in background workers). Plugin developers must update their implementations accordingly.
PR #11962 removes the remote_image field from the Part API endpoint, eliminating the ability to supply a remote URL to download a part image from an external source. This feature was removed due to security concerns around server-side outgoing requests; image uploads via other mechanisms (such as clipboard paste) remain supported.
PR #12065 corrects how RKM-style resistor values (e.g. 10R, 4R7) are parsed by ensuring the R delimiter is interpreted as ohms rather than being misread by the unit parser. Parts or parameters that previously relied on the incorrect parsing behavior may need to be reviewed.
PR #12107 corrects a misclassification of the SHIPPED sales order status: it has been moved from the COMPLETE group to the ACTIVE group in SalesOrderStatusGroups. Any external code or integrations that filter orders based on these status groups will need to be updated to reflect this corrected grouping.
PR #12142 tightens permissions for report and label printing: users must now have VIEW permission on the target model in order to print a report against it, and printing against disabled templates is blocked. Users or integrations that previously relied on printing without explicit view permissions may find certain print actions now return a permission error.
A number of security vulnerabilities have been fixed in this release.
PR #11907 bumps Django to the latest security release, addressing vulnerability GHSA-5h8x-9c6f-2j8m. All users are encouraged to update promptly to benefit from this patch.
PR #12036 tightens Django admin permissions to align with the API’s own access controls. Scheduled tasks are now read-only in the admin panel and certain actions are restricted to superusers only, reducing the risk of unauthorized modification of critical system configuration through the admin interface.
PR #12142 enforces that users must hold VIEW permission on the target model in order to print a report or label against it, and prevents printing against disabled templates. This closes a path by which users could access model data indirectly through the report printing API without the appropriate permissions.
PR #12140 replaces the n Node.js version manager with nvm (Node Version Manager) in the Docker build and CI environment. Using the officially maintained nvm toolchain reduces supply-chain risk compared to the third-party n package.
PR #12160 hardens the WeasyPrint-based PDF report generator against two classes of attack. The file:// URI scheme is now fully disabled in report templates, preventing arbitrary server-side file reads, and SSRF protections have been added for remote URL lookups — with remote URL fetching disabled by default. Users whose report templates reference remote URLs will need to explicitly enable that capability via the new configuration setting.
PR #12168 improves API security by reducing the scope of permissions required for certain API endpoints.
The following security advisories have been published in relation to this release:
For more information, please refer to our security advisories page
PR #11281 introduces a new Transfer Order type for formalizing and tracking internal stock movements between locations. Users can create transfer orders with specific source and destination locations, allocate stock to line items, and complete the transfer to move inventory — providing a full audit trail for inter-location stock movements.
PR #11825 adds a dedicated permission ruleset for Bill of Materials management, allowing administrators to control which user groups can view, edit, or modify BOMs independently of other part permissions. Existing user permissions are preserved via a data migration.
PR #11809 enables multi-level BOM expansion in the UI, letting users expand individual BOM rows to inspect nested subassemblies inline without switching away from the BOM view. A user-level setting controls whether subassembly expansion is shown by default.
PR #11853 adds a BOM comparison tool accessible from the part detail view, allowing side-by-side comparison of two assemblies’ Bills of Materials. Comparisons can also be linked to directly via URL parameters.
PR #11914 adds a maximum stock level field to parts, complementing the existing minimum stock tracking to provide full min/max inventory management. A new “high stock” filter in the part table makes it easy to identify items that have exceeded their upper limit.
PR #11961 improves attachment handling by detecting image attachments and displaying thumbnail previews in the attachment table. This release also adds a configurable maximum file upload size for administrators.
PR #12000 brings automatic stock allocation to sales orders, matching the existing behavior on build orders. Users can auto-allocate available stock to order line items with configurable sorting preferences (e.g. by expiry date or serial number), and can bulk-delete allocations through the UI and API.
PR #12011 adds a creation_date field to the StockItem model, capturing when each stock item first entered the system. The field is exposed in the API (with filtering and ordering support) and displayed in the stock item table.
PR #12060 enables Hot Module Replacement (HMR) and React Fast Refresh in the Vite development server for InvenTree plugins. Plugin developers can now see code changes reflected instantly without a full page reload, significantly speeding up the plugin development workflow.
PR #12077 introduces a comprehensive tagging system across InvenTree, covering parts, orders, companies, stock items, and more. Tags can be managed via the API and used to filter tables, providing a flexible way to categorize and locate items without changing the data model.
PR #12079 allows users to save named sets of table filters and reload them with a single click. This is particularly useful for frequently repeated filter configurations across tables and calendar views.
PR #12092 enables multi-month scrolling in calendar views, making it much easier to plan and schedule across extended time horizons. A configurable “calendar horizon” parameter allows the view to be set back to a single month if preferred.
PR #12103 exposes filter controls directly in table column headers, so users can add, edit, or remove filters without opening a separate filter panel. Active filters are also indicated visually on the relevant column headers.
PR #12146 persists the user’s last selected label template and printer plugin per model type, so the printing dialog reopens with the same settings as the previous session. This eliminates the need to reselect template and printer on every print action.
PR #12128 adds a hotkey registration system and a discoverable helper modal that lists all currently active keyboard shortcuts — including those registered by plugins and mounted components. The modal is accessible via the spotlight interface, making it easy for users to find and learn available shortcuts.
PR #11980 adds detailed tooltips to calendar event entries across purchase order and build calendar views. Hovering over an event now shows contextual information without requiring the user to navigate away from the calendar.
PR #11885 fixes the sorting of line numbers on orders so they sort numerically (1, 2, 3, 10) rather than alphabetically (1, 10, 2, 3). This improves the readability of order line items and ensures a more intuitive ordering.
As always, we have provided a number of bug fixes with this release. Thanks to the many community members who have contributed to identifying and resolving these issues!
InvenTree is an open source project, and we welcome contributions from the community. There are many ways to contribute to the project, including code contributions, translation efforts, documentation improvements, and financial support.
As always we would like to thank all of our contributors for their hard work and dedication to the InvenTree project. In particular, we would like to welcome the following new contributors who have made their first contributions in this release:
Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer or want to become one, you can help to contribute to the project by submitting a pull request.
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.
If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.
Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!
The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
If your company benefits from InvenTree, please consider a one time sponsorship or a recurring sponsorship to help support the project.
]]>Major changes are documented in the CHANGELOG.md file in the InvenTree repository.
For a full list of changes made in this release, please refer to the release notes.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
The following changes may require updates to custom plugins, API clients, or other integrations with the InvenTree application. Please review these changes carefully before updating to version 1.3.0.
In #11303 we have made a change to the implementation of the supplier part model. While this will not impact most InvenTree users, it may change how custom plugins or external API clients interact with the InvenTree application.
Previously, the Part model had a default_supplier field, which pointed to a single instance of the SupplierPart model. This field has been removed, and instead the SupplierPart model has a primary field - which is a boolean field indicating whether this supplier part is the primary supplier for the associated part. This change allows for more flexible supplier management.
In #11648 we have added the ability to import custom plugin data from an external data file during the import process. This allows custom plugin data to be migrated across InvenTree instances if required.
In #11500 we have made some changes to our support for Sqlite databases. The default implementation now uses a significantly longer connection timeout, and uses write-ahead logging (WAL) mode by default. This should help to reduce the likelihood of database lockouts when using Sqlite, particularly in environments where multiple users may be accessing the database concurrently.
There have been a number of security fixes included in this release. We would like to thank the security researchers who have responsibly disclosed these issues to us, and we encourage anyone who discovers a potential security vulnerability in InvenTree to report it to us via our security policy.
The following security advisories have been resolved in this release:
Refer to the individual advisories for more information about the vulnerabilities that were resolved.
In addition to the above advisories, the following pull requests were merged to resolve minor security issues:
DataOutput API endpointDataImport API endpointWe strive to maintain up-to-date dependencies in the InvenTree project, and we have updated a number of dependencies in this release.
In #11692 we have introduced a “line number” field to external orders, allowing users to specify individual line numbers for each order line. This allows for more flexible ordering and better integration with external systems.
In #11383 we have significantly overhauled the “parameter filtering” system, allowing for more flexible grouping / filtering of parameters.
#11288 we have added the ability to import data using natural keys, allowing for more intuitive and human-readable data imports. This allows imported data to be mapped to existing database entries using natural keys, rather than relying on internal database IDs. This is particularly useful when migrating data between InvenTree instances, or when importing data from external sources.
#10887 adds the ability to auto-allocate tracked parts against a build order. This helps to streamline the build allocation process, by providing the auto-allocation feature which has already been available for non-tracked parts.
#11406 introduces the ability to easily copy data directly from table cells. A small but often-requested feature, this allows users to quickly copy data from the InvenTree interface without needing to open individual detail views.
In #11437 we have added the ability to create a Bill of Materials (BOM) entry with zero quantity. This allows for more flexible BOM management, particularly in cases where a BOM may be used for reference purposes without needing to specify quantities.
#11565 adds a cache-busting mechanism for plugin assets, ensuring that users always receive the latest version of plugin files without needing to manually clear their browser or proxy-server cache. When used in conjunction with the InvenTree plugin creator, this allows plugin developers to easily ensure that users receive the latest version of their plugin assets without needing to worry about caching issues.
#11074 allows certain forms to remain open after submission, allowing users to quickly submit multiple entries without needing to repeatedly open and close the form. This is particularly useful for data entry tasks where multiple similar entries need to be created in quick succession.
#11527 introduces the ability to monitor the progress of a single long-running background task via the API. This allows the frontend to provide progress feedback to users when performing long-running operations, and automatically refresh the required data once the task has completed.
As always, we have provided a number of bug fixes with this release. Thanks to the many community members who have contributed to identifying and resolving these issues!
As always we would like to thank all of our contributors for their hard work and dedication to the InvenTree project. In particular, we would like to welcome the following new contributors who have made their first contributions in this release:
Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer or want to become one, you can help to contribute to the project by submitting a pull request.
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.
If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.
Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!
The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
If your company benefits from InvenTree, please consider a one time sponsorship or a recurring sponsorship to help support the project.
]]>For a full list of changes made in this release, please refer to the release notes.
The InvenTree development team has been working closely with the community to identify and resolve security issues in the InvenTree codebase. We have published the following security advisories related to this release:
For specific information regarding the vulnerabilities that have been fixed in this release, please refer to the individual advisories linked above.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
We would like to express our thanks to the community members who have contributed to identifying and resolving security issues in the InvenTree codebase. Your contributions are greatly appreciated and help to make InvenTree a more secure and reliable tool for everyone.
]]>We are not aware of active exploitation of this vulnerability, but we recommend that users take the following steps to mitigate risks:
The vulnerability has a low complexity and can be expected to be exploited once released. It is important to prepare to update or take your system off the public internet.
As always with security related themes we remind all users, security researchers, and intrested parties of our security policy.
If you have discovered a security vulnerability, please report it to us via the channels described in the policy. We take all reports seriously and will work to address any vulnerabilities in a timely manner.
We would like to thank the security researcher who reported this and several other vulnerabilities in a responsible manner, and we encourage others to do the same in the future. The reporter will be credited in the disclosure and CVE entry.
]]>Attention: This release has no support for PostgreSQL 13 - our docs contain information regading PostgreSQL updates. At least PostgreSQL 14 is required, we recommend PostgreSQL 18.
This release includes numerous new features, improvements, and bug fixes.
Major changes are documented in the CHANGELOG.md file in the InvenTree repository.
For a full list of changes made in this release, please refer to the release notes.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
#10730 updated the core Django version to 5.2 lts.
As part of this update, the following breaking changes have been introduced:
The minimum supported version of PostgreSQL has been increased to 14. This means that users running PostgreSQL 13 will need to perform a manual update of their database in order to continue using InvenTree with the latest version. For more information, please refer to our update guide for a walkthrough of the database update procedure.
The minimum supported python version has been increased to 3.11. This means that users running Python 3.10 or earlier will need to update their python installation in order to run InvenTree 1.2.0.
#11035 all metadata endpoints were unified into a generic one.
#11021 tags were removed from a few APIs by default, they can be enabled using a dedicated filter if need be
#10699 adds support for generic parameters across multiple model types. Previously, parameters were only support for parts. Read more about parameter support on the InvenTree documentation.
#10969 adds support for input controls (check boxes, text boxes, etc) to the report generation framework.
There have been a significant number of bug fixes in this release. Thanks to the many community members who have contributed to identifying and resolving these issues!
Some long standing issues with SSO registration settings being enforced too strict have been resolved. User feedback and flow during multifactor-registration enforcement was also improved greatly.
As always we would like to thank all of our contributors for their hard work and dedication to the InvenTree project. In particular, we would like to welcome the following new contributors who have made their first contributions in this release:
Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer or want to become one, you can help to contribute to the project by submitting a pull request.
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.
If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.
Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!
The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
If your company benefits from InvenTree, please consider a one time sponsorship or a recurring sponsorship to help support the project.
]]>For users running with a PostgreSQL database, Django 5.2 requires a minimum version of PostgreSQL 14. This means that users running PostgreSQL 13 will need to perform a manual update of their database in order to continue using InvenTree with the latest version.
If you are attempting to update to InvenTree 1.2.0 while still running PostgreSQL 13, you will encounter the following error message:
django.db.utils.NotSupportedError: PostgreSQL 14 or later is required (found 13.23).
In such a case, you will need to perform a database update procedure to migrate your existing database from PostgreSQL 13 to PostgreSQL 14 (or later). This process involves backing up your existing database, installing the new version of PostgreSQL, and then restoring your data into the new database.
Note: This procedure was updated on 2026-02-19
Our documentation provides a detailed database migration guide to assist users with this process. We recommend that users perform a backup of their database before attempting the migration, and follow the instructions carefully to ensure a smooth transition to the new database version.
Following is an example of the steps involved in migrating an InvenTree installation from a PostgreSQL 13 database to a PostgreSQL 17 database, in the context of a docker installation. The same principles apply for non-docker installations, but the particular commands may differ.
PostgreSQL 17 is recommended as the target version, as it is supported by both the 1.1.x and 1.2.x versions of InvenTree.
The starting conditions for this migration are as follows:
.env filedocker-compose.yml file).

We also have a data directory, external to the docker containers, with the following structure:

The new installation will be running InvenTree 1.2.0 with PostgreSQL 17
It is prudent to perform a regular backup of the database, before following the migration procedure. This can be done using the invoke backup command, as described in the documentation. This will create a backup of the database and media files in the data/backup directory.
postgres:13 is set in docker-compose.ymlINVENTREE_VERSION=1.1.12 is set in .envdocker compose up inventree-db -d
docker compose run --rm inventree-server invoke update
docker compose down
The first step is to perform a backup of the existing database. This step must be performed with the old setup (postgres 13 / InvenTree 1.1.12), before we perform any updates to the software.
First, let’s confirm that we are running the expected version of InvenTree (1.1.12).

To perform the backup, we run the following commands:
docker compose up inventree-db -d
docker compose run --rm inventree-server pg_dump postgresql://pguser@inventree-db:5432/inventree -f /home/inventree/data/backup/db_migrations.sql
docker compose down
Note: You will be prompted for the password for the pguser user. This is the password that you set in the .env file (default is pgpassword).
Note: Do not change the path to the migrations file, this is the internal docker container path, and should not be changed.
This will create a backup of the database and media files in the inventree-data/backup directory (external to the docker containers). The database backup will be saved as db_migrations.sql.
Confirm that the backup files have been created before continuing to the next step.
The PostgreSQL database files are stored in the inventree-data/pgdb directory. We need to remove these files, as they are specific to PostgreSQL 13 and will not be compatible with PostgreSQL 17. Rather than deleting them, we will move them to a backup location, just in case we need to revert back to the old setup.
mv inventree-data/pgdb inventree-data/pgdb_backup
Confirm that the pgdb directory has been moved to the backup location before continuing to the next step. The pgdb directory should no longer exist in the inventree-data directory.
Next, we need to update the PostgreSQL version in the docker-compose.yml file. Change the version from postgres:13 to postgres:17:

Pull down the updated docker images:
docker compose pull
Now we can restore the data from the backup we created previously, into the new PostgreSQL 17 database. Run the following commands:
docker compose up inventree-db -d
docker compose run --rm inventree-server psql postgresql://pguser@inventree-db:5432/inventree -f /home/inventree/data/backup/db_migrations.sql
docker compose down
This will restore the database and media files from the backup we created previously.
Launch the InvenTree server, and confirm that you can still access your data via the web interface.
docker compose up -d
Once you have confirmed that the data is accessible, you can stop the server again:
docker compose down
Next, we need to update the InvenTree version in the .env file. Change the version from 1.1.12 to 1.2.0:

Then, we need to pull down the updated InvenTree server image:
docker compose pull
Next, run the InvenTree update procedure:
docker compose up inventree-db -d
docker compose run --rm inventree-server invoke update
Finally, we can start the new setup and verify that everything is working as expected.
docker compose up -d
Then, you should be able to access your InvenTree instance again, and confirm that you are running the new version (1.2.0):

We can also see that the correct versions of both PostgreSQL and InvenTree are running in the docker containers:

Congratulations! You have successfully migrated your InvenTree installation to the latest version, with an updated PostgreSQL database. You can now enjoy the new features and improvements that come with InvenTree 1.2.0, while also benefiting from the enhanced performance and security of PostgreSQL 17.
Please consider sponsoring the project, to help us continue to maintain and improve InvenTree for all users. Your support is greatly appreciated!
]]>This is the first major update since our 1.0.0 stable release, and includes numerous new features, improvements, and bug fixes to enhance your experience with InvenTree.
Major changes are documented in the CHANGELOG.md file in the InvenTree repository.
For a full list of changes made in this release, please refer to the release notes.
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
#10499 adds the ability to complete only a partial quantity of a build output. This allows for finer control over the manufacturing process.
#10600 allows users to perform stock adjustment actions (count, transfer, etc) on stock items which are in production, i.e. associated with a build output. This provides greater flexibility in managing stock during the manufacturing process.
There have been several additions to the report helper functions, in particular relating to maths and currency operations. Refer to the report documentation for more information on how to use these new functions.
In #10724 we added support for uploading attachments against supplier parts. This allows users to associate relevant documents (e.g. datasheets, certifications, etc) directly with supplier parts.
There have been a significant number of bug fixes in this release. Thanks to the many community members who have contributed to identifying and resolving these issues!
As always we would like to thank all of our contributors for their hard work and dedication to the InvenTree project. In particular, we would like to welcome the following new contributors who have made their first contributions in this release:
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer, you can help to contribute to the project by submitting a pull request.
In particular, we are looking for assistance with frontend development, as we work to complete the new user interface and improve the overall UI/UX of the project.
If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.
If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.
Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!
The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
If your company benefits from InvenTree, please consider a one time sponsorship or a recurring sponsorship to help support the project.
]]>This plugin encourgaes users to perform regular stocktakes of inventory items in a rolling fashion, ensuring that stock levels are consistently accurate without the need for a complete inventory shutdown.
By presenting users with a dashboard widget that highlights stock items that are overdue for stocktake, the plugin helps maintain inventory accuracy and reduces the risk of stock discrepancies.
For more information about the plugin, please refer to the plugin reference or the GitHub page.
]]>