# ERPNext: what changed from 15 to 16 - Product: ERPNext (https://whatsnew.fyi/product/erpnext) - Vendor: Frappe - Range: changelog entries numbered after v15.121.0 up to and including v16.34.1, stable releases only - Entries below: 12 releases (newest first) - Resolved: 15 is v15.121.0 and 16 is v16.34.1, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 2 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/erpnext/compare/15...16 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (141 changes, grouped by kind) ### Added #### v16.34.1 (2026-09-02) - Add validation to Financial Report Template records to prevent invalid report configurations from being saved #### v16.34.0 (2026-09-02) - Add an Entity filter to Purchase Analytics and Sales Analytics reports to limit displayed rows and chart data to selected suppliers, customers, items, or groups - Add Transaction Currency, Exchange Rate, and buying or selling price lists to Blanket Order, fetching item prices from the selected price list and carrying details into related Sales Order, Quotation, and Purchase Order records - Add a Valuation Type field for secondary items in BOM, Stock Entry, and Subcontracting Receipt with Valuation Rate as default and options for percentage-based or manual costing #### v16.33.0 (2026-08-25) - Add separate sections for General Ledger and AP/AR reports in Accounts Settings with a Disable Consider Accounting Dimension Filter option - Add support for custom tax charge types that calculate taxes from alternative values such as an item's MRP instead of its selling price - Add four Belgian charts of accounts for commercial entities and associations or foundations available in French and Dutch - Add a check to Purchase Invoice records linked to Purchase Receipt records to block saving or submitting when stock items use different exchange rates in the same currency and Set Landed Cost Based on Purchase Invoice Rate is disabled - Add a Status filter to the Supplier Quotation Comparison report defaulting to Submitted quotations - Add a tooltip to the Allow Stale Exchange Rates setting in Accounts Settings explaining its behavior - Add a confirmation prompt when quantities entered in the batch selector differ from Qty to Fetch - Add the crm_deal field to Customer and Quotation when Enable Frappe CRM Data Synchronization is turned on and remove these fields when synchronization is off if they contain no data #### v16.32.0 (2026-08-11) - Add submission checks to Period Closing Voucher that compare stock account balances with the Stock Ledger report, require a completed company-wide Stock Closing Entry for the period-end date, and reject outdated stock snapshots - Add a Sync Serial No Status button to the Stock Qty vs Serial No Count report that updates listed Serial No records' Status and Warehouse based on their latest stock movement - Add a Stock UOM field to Job Card, populated from the finished good or final product and filled in for existing records #### v16.31.0 (2026-08-04) - Work Order Gantt view now shows each bar in a color that matches its status - Subscription form automatically fills Cost Center and other accounting fields from the chosen plan, with fallback to linked Item fields - Material Request with items from different suppliers can create separate Purchase Orders per supplier with supplier selection per item - Territory filter in Accounts Receivable report now supports multi-select #### v16.30.0 (2026-07-28) - Make Cost Center on Shipping Rule optional, so shipping charges use the company's default Cost Center and copy the rule's Project to the shipping charge line when left blank - Add optional Overdue Limit check on Customer that blocks Sales Invoice submission when customer's overdue balance exceeds the limit, with bypass allowed for permitted users and limit optionally sourced from Customer Group - Add accounting entries for stock-related expenses in Stock Entry, Stock Reconciliation, and Purchase Receipt to record these costs separately, excluding landed cost from purchase expense entries #### v16.29.0 (2026-07-22) - Add an "On hold" option to the Status field in Project - Automatically link a matching Contact to a Customer or Supplier when a portal user is added - Add missing stock quantity sort options to Stock Summary report - Add Reserved Stock column to the Stock Projected Qty report #### v16.28.0 (2026-07-15) - Update the Philippines chart of accounts with revised account names and numbers, including an Intangible Assets section with accumulated amortization accounts and new income and expense accounts for exchange gains and losses, gains and losses on asset disposal, and other expense items - Add the Auto Repost Incorrect Valuation Entries (Weekly) option in Stock Reposting Settings to automatically repost incorrect stock valuation entries weekly ### Changed #### v16.34.1 (2026-09-02) - Update validation messages in Financial Report Template so their standard wording is translated before account-specific details are added #### v16.34.0 (2026-09-02) - Update the Is Frozen descriptions in Customer and Supplier to clarify that freezing blocks new transactions and ledger entries #### v16.33.0 (2026-08-25) - Rename the Restrict Customer Over Billing checkbox in Accounts Settings to Prevent Sales Invoice when Customer is Overdue #### v16.29.0 (2026-07-22) - Rename "Recalculate Bin Qty" button to "Recalculate Values" in Bin form and update Valuation Rate and Stock Value from latest stock record #### v16.28.0 (2026-07-15) - The General Ledger, Trial Balance, Balance Sheet, and Profit and Loss reports now use a faster data source on supported sites ### Fixed #### v16.34.1 (2026-09-02) - Update the BOM Stock Analysis report so its BOM selector lists only submitted BOM records, excluding draft and cancelled records - Include deductions from Payment Entry records, such as discounts, in the balances shown by the Sales Register and Purchase Register ledger views instead of displaying them as outstanding customer or supplier amounts #### v16.34.0 (2026-09-02) - Prevent single and child-table document types from being selected as accounting dimensions and reject existing invalid configurations with a clear message - Prevent issuing a serialized item from an Inventory Dimension where its serial number is not available, including when negative stock validation is disabled - Preserve links between Stock Entry items and their source Pick List so partially transferred items retain their transferred quantities - Prevent direct deletion of the company set in the Demo Company field of Global Defaults and direct users to the Delete Demo Data action instead - Add validation when a Material Request is created from a Sales Order, rejecting requests whose Company or linked item details no longer match the source order - Show the existing internal Customer or Supplier as a clickable link in duplicate-record errors and tell users to disable it before marking another record as internal - Update Job Card quantity checks to exclude Pending Quantity from the original card, allowing a follow-up Job Card for the remaining units - Update Material Request transfers against a Job Card so the resulting Stock Entry calculates FG Completed Qty from the materials included in the transfer - Fix Work Order Transferred Qty values by adding transfers for a required item and its alternate instead of replacing one with the other - Filter cancelled Sales Invoice records out when the customer portal determines which Timesheet entries a customer can access - Translate the source DocType name in the message shown when users select items from the same source more than once - Classify items without a bill of materials as purchase items in the Material Requirements Planning report so they appear correctly in Type of Material - Limit POS Profile selection and automatic assignment on invoices to profiles the current user is permitted to access - Check a user's edit permission before marking a Quotation as Lost, preventing requests from users without access from changing the quotation or related records - Fix Stock Entry recalculation with Additional Costs so redistributed costs are saved on all affected item rows instead of only one row - Fix automatic batch number selection before saving Sales Invoice and Purchase Invoice records when Update Stock is enabled #### v16.33.0 (2026-08-25) - Update the non-bucket chart in the Material Requirements Planning Report to show the full selected date range and use each delivery date correctly instead of stopping after 10 dates - Update Asset Capitalization to split FIFO/LIFO valuation rates across repeated stock-item rows for the same item and warehouse - Apply Sales Person user permissions to the Accounts Receivable report so clearing the Sales Person filter does not expand results beyond the user's permitted records - Fix an issue where adding an item to a Material Request did not fetch the item's Qty and UOM values (also in v16.32.3) - Limit material transfer quantities in Stock Entry and Work Order processing to the amount covered by the included raw materials - Fix an issue that prevents users from creating a Purchase Order from the MRP report when the India compliance app is installed - Allow Purchase Receipt and Purchase Invoice returns against a closed Purchase Order while continuing to block new receipts against it - Allow stock to be issued from a batch when an earlier negative balance has since recovered while still rejecting issues that would make the batch balance negative - Block users from reversing a Journal Entry that is already a reversal by hiding the Reverse Journal Entry button - Fix an issue that could omit items when creating a Sales Invoice from a Sales Order (also in v16.32.2) #### v16.32.1 (2026-08-14) - Allow stock to be issued from batches with old negative periods that later recover, while still blocking an issue if it would make the batch balance negative at that point or afterward #### v16.32.0 (2026-08-11) - Fix stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted - Prevent a cancelled Subscription from being reactivated when its status is refreshed, including after its outstanding invoice is paid - Fix the Stock Ledger report so its opening balance includes stock from all selected items, rather than only one item - Preserve the hidden setting configured in Customize Form for Update Stock in Sales Invoice so the field does not reappear when the form refreshes - Fix the Create Purchase Orders by Supplier dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts (also in v16.31.1) - Update purchase returns from Purchase Receipt documents for batch-wise valued batches to use the batch's current average rate when stock remains - Round material request quantities in Production Plan after purchase-unit conversion, reducing unnecessary decimal values - Use the optimized item search for Item Code in Product Bundle item rows, reducing oversized search results and UI freezes - Skip reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation - Set Conversion Factor fields in transaction items to nine decimal places and round calculated values to match - Update the Stock Ledger Invariant Check report so Moving Average items no longer display FIFO queue differences that do not apply to them - Update Repost Item Valuation to use the current stock valuation rate when recalculating multi-line returns with Moving Average valuation - Fix the validation message shown in Journal Entry when a Purchase Invoice is blocked and has no release date - Restrict the data and actions available to templates used for shipping addresses, Payment Request, Request for Quotation, Contract Template, Email Campaign, and Delivery Trip notifications - Update Timesheet to set Employee and Company only when both values are found for the current user, instead of treating an empty lookup result as valid - Add a permission check when a web form creates a Task or changes its Project, blocking users who lack access to that project - Update Sales Order validation to accept sales team Allocated Percentage totals of 100% when minor decimal rounding differences make the calculated sum slightly different #### v16.31.0 (2026-08-04) - Electronic invoicing is skipped for opening Sales Invoice documents in Italy - Purchase Receipt cancellation now uses the same linked-document check as other forms - Users with edit access can remove items from Update Items in Sales Order without needing cancel or delete access - Australian standard chart of accounts now includes Accrued Manufacturing Expenses account group and marks account 115 as a bank account - Items produced from zero-cost materials remain at zero cost instead of using the item's own cost or Bill of Materials cost - Asset created from purchase document now uses Net Purchase Amount from item's Valuation Rate and quantity instead of purchase line total - Item Group root is reused during ERPNext setup to keep built-in item groups under one main group - Correct inventory account is selected instead of randomly picking one when multiple accounts are set up - Period Closing Voucher cannot be submitted or cancelled for a frozen accounting date - Stock Entry with purpose Receive from Customer leaves Target Warehouse blank for new item rows when no matching row exists - Projects marked On hold no longer appear when choosing a project in Task and Timesheet - Stock and Account Value Comparison report includes only child warehouses whose account matches the parent warehouse - Accounts Receivable and Accounts Receivable Summary filtering by Sales Partner now uses the partner set on each Sales Invoice - Return documents in Delivery Note and Sales Invoice use the original item linked in Packed Item when the direct item link is missing - Payment Entry form fills Received Amount using the exchange rate for its own Posting Date instead of the source document's date #### v16.30.0 (2026-07-28) - Use quantity precision from Serial and Batch Entry with System Settings as fallback in reserved batch checks instead of always using 6 decimal places - Keep selected BOM when creating Work Order for variant item instead of replacing it with default BOM - Update stock levels correctly after cancelling one stock entry when several share the same date and time - Spread a batch's value across its rows in Stock Ageing report for items with batch numbers when one row shows negative value - Handle missing is_your_company_address field in Address so saving or importing Address records no longer fails - Clean up Repost Item Valuation by removing attached data file and clearing Reposting Data File field - Place batches without Expiry Date at end of list in Batch selection to avoid error when Warehouse contains both expiring and non-expiring batches - Copy Customer from Pick List to Delivery Note when creating delivery note without Sales Order - Show summary information on Customer and Supplier dashboards only for companies current user can access - Turn on Include Zero Stock Items by default in Stock Balance report so items with no stock appear when report opens - Update Operating Cost for operation in Routing when Hour Rate changes - Rename Posting Date to Report Date and Calculate Ageing With to Age as on with Today Date shortened to Today in Accounts Receivable, Accounts Payable, and their summary reports - Distribute Batch value across age groups in Stock Ageing report on every run instead of only when age group goes below zero - Release remaining raw-material reservation tied to closed Subcontracting Order so warehouse stock count reflects freed material - Treat cancelled and expired Quotations as inactive and count partially ordered Quotations as ordered when setting Opportunity status - Clarify message when marking Opportunity as lost if active Quotation exists - Limit search through older stock records to same item when valuing serial numbers to reduce records checked - Carry over comments and communications from linked Opportunity to submitted Quotation when CRM Settings option is enabled #### v16.29.0 (2026-07-22) - Add missing currency setting to Supplier Quotation Item Net Rate field - Make Job Card field in Purchase Order Item read-only and exclude it from copied and printed records - Allow Delivery Note submission when the same batch is reserved by more than one Sales Order if enough stock remains for other reservations - Allow people added to a Project to access that project without the Projects User role - Open accounting and stock ledger previews without loading every detail first to avoid permission errors - Make Production Plan purchase and transfer flow respect Consider Minimum Order Qty when stock comes from multiple warehouses - Recalculate remaining value of items in Stock Ageing using moving average at current rate and newest stock first for LIFO items - Strip leading and trailing spaces from Account Number in Chart of Accounts Importer - Prevent Dunning Type from being saved when selected Income Account or Cost Center does not belong to the same company or is disabled - Limit Process Statement of Accounts templates to standard placeholders when generating email subject, message, and PDF name - Auto-fill Material Request Buying Price List only with accessible Price Lists and clear field if selected Price List is not a buying price list - Fix parallel stock reposting to start the next pending task after one finishes - Auto-fill Material Request Date in Production Plan Material Request from Transaction Date of linked Material Request - Prevent Transferred Qty from Work Order from being copied into Pick List - Fix misspelled allow_negative_stock option in Stock and Account Value Comparison and Stock Ledger Invariant Check reports #### v16.28.0 (2026-07-15) - Default letterheads now skip loading the company logo when a document has no company details so those documents still print and export to PDF - Payment Entry now fills in the outstanding and total amounts when you manually choose a Journal Entry in another currency - The Budget Variance Report chart now shows monthly actual amounts under the correct month instead of one month earlier - In Pick List, barcode scans add a new line when Pick Manually is turned on, and repeated scans increase the picked quantity instead of being limited to the default quantity - Show Qty (Company) and Qty (Warehouse) on line items in Sales Order, Quotation, Sales Invoice, and Delivery Note - Add access checks for Terms and Conditions templates before they are used in documents and limit the text to the supported template features - Use currency rounding when matching depreciation schedule rows in Asset to the linked Journal Entry to help prevent duplicate postings caused by small decimal differences - Allow Asset Repair records to be created for assets that are fully depreciated and add an Asset Repair button on the Asset form - Transferred Stock Reservation Entry records now copy the original Stock UOM from the item instead of leaving it blank or using a different unit of measure - Fix a case where submitting a Stock Entry for items with serial numbers can fail when there are many Serial and Batch Bundle records - Add permission checks when showing balances in the chart of accounts so users only see balances for accounts they can view - Keep the transferred quantity on Work Orders that use Job Cards when updating required items - Allow a Purchase Order created from a Material Request to use the same requested item in more than one row ### Removed #### v16.33.0 (2026-08-25) - Remove the unused get_last_interaction CRM endpoint ## Release notes ### v16.34.1 - Date: 2026-09-02 - Version: v16.34.1 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.34.1 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.34.1 - **added** — Add validation to Financial Report Template records to prevent invalid report configurations from being saved - **fixed** — Update the BOM Stock Analysis report so its BOM selector lists only submitted BOM records, excluding draft and cancelled records - **fixed** — Include deductions from Payment Entry records, such as discounts, in the balances shown by the Sales Register and Purchase Register ledger views instead of displaying them as outstanding customer or supplier amounts - **changed** — Update validation messages in Financial Report Template so their standard wording is translated before account-specific details are added ##### Breaking Changes * Adds validation to **Financial Report Template** records to prevent invalid report configurations from being saved. (https://github.com/frappe/erpnext/pull/58704) ##### Bug Fixes * Updates the "BOM Stock Analysis" report so its _BOM_ selector lists only submitted **BOM** records, excluding draft and cancelled records. (https://github.com/frappe/erpnext/pull/58693) * Includes deductions from **Payment Entry** records, such as discounts, in the balances shown by the "Sales Register" and "Purchase Register" ledger views instead of displaying them as outstanding customer or supplier amounts. (https://github.com/frappe/erpnext/pull/58680) * Updates validation messages in **Financial Report Template** so their standard wording is translated before account-specific details are added. (https://github.com/frappe/erpnext/pull/58487) **Authors**: @ervishnucs, @krishna-254, @Abdeali099, @sagarvora **Reviewers**: @diptanilsaha, @sagarvora, @barredterra, @mihir-kandoi
AI content For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - ci - style - build - docs - test - refactor - chore
### v16.34.0 - Date: 2026-09-02 - Version: v16.34.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.34.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.34.0 - **added** — Add an Entity filter to Purchase Analytics and Sales Analytics reports to limit displayed rows and chart data to selected suppliers, customers, items, or groups - **added** — Add Transaction Currency, Exchange Rate, and buying or selling price lists to Blanket Order, fetching item prices from the selected price list and carrying details into related Sales Order, Quotation, and Purchase Order records - **added** — Add a Valuation Type field for secondary items in BOM, Stock Entry, and Subcontracting Receipt with Valuation Rate as default and options for percentage-based or manual costing - **fixed** — Prevent single and child-table document types from being selected as accounting dimensions and reject existing invalid configurations with a clear message - **fixed** — Prevent issuing a serialized item from an Inventory Dimension where its serial number is not available, including when negative stock validation is disabled - **changed** — Update the Is Frozen descriptions in Customer and Supplier to clarify that freezing blocks new transactions and ledger entries - **fixed** — Preserve links between Stock Entry items and their source Pick List so partially transferred items retain their transferred quantities - **fixed** — Prevent direct deletion of the company set in the Demo Company field of Global Defaults and direct users to the Delete Demo Data action instead - **fixed** — Add validation when a Material Request is created from a Sales Order, rejecting requests whose Company or linked item details no longer match the source order - **fixed** — Show the existing internal Customer or Supplier as a clickable link in duplicate-record errors and tell users to disable it before marking another record as internal - **fixed** — Update Job Card quantity checks to exclude Pending Quantity from the original card, allowing a follow-up Job Card for the remaining units - **fixed** — Update Material Request transfers against a Job Card so the resulting Stock Entry calculates FG Completed Qty from the materials included in the transfer - **fixed** — Fix Work Order Transferred Qty values by adding transfers for a required item and its alternate instead of replacing one with the other - **fixed** — Filter cancelled Sales Invoice records out when the customer portal determines which Timesheet entries a customer can access - **fixed** — Translate the source DocType name in the message shown when users select items from the same source more than once - **fixed** — Classify items without a bill of materials as purchase items in the Material Requirements Planning report so they appear correctly in Type of Material - **fixed** — Limit POS Profile selection and automatic assignment on invoices to profiles the current user is permitted to access - **fixed** — Check a user's edit permission before marking a Quotation as Lost, preventing requests from users without access from changing the quotation or related records - **fixed** — Fix Stock Entry recalculation with Additional Costs so redistributed costs are saved on all affected item rows instead of only one row - **fixed** — Fix automatic batch number selection before saving Sales Invoice and Purchase Invoice records when Update Stock is enabled ##### Features * Adds an _Entity_ filter to the "Purchase Analytics" and "Sales Analytics" reports so users can limit the displayed rows and chart data to selected suppliers, customers, items, or groups. The filter follows the selected _Tree Type_ and resets when it changes. (https://github.com/frappe/erpnext/pull/58429) * Adds _Transaction Currency_, _Exchange Rate_, and buying or selling price lists to **Blanket Order**, and fetches item prices from the selected price list. Carries the agreed currency and pricing details into related **Sales Order**, **Quotation**, and **Purchase Order** records without applying Pricing Rules to the **Blanket Order**. (https://github.com/frappe/erpnext/pull/58630) * Adds a _Valuation Type_ field for secondary items in **BOM**, **Stock Entry**, and **Subcontracting Receipt**, with Valuation Rate as the default and options for percentage-based or manual costing. The selected method determines how the secondary item cost is deducted from material costs, while percentage costing uses the amount remaining after items with their own costs are deducted. (https://github.com/frappe/erpnext/pull/58632) ##### Bug Fixes * Prevents single and child-table document types from being selected as accounting dimensions through the _Reference Document Type_ field, and rejects existing invalid configurations with a clear message. Skips incompatible dimension values when creating ledger entries so these configurations do not block submission. (https://github.com/frappe/erpnext/pull/58414) * Prevents issuing a serialized item from an **Inventory Dimension** where its serial number is not available, including when negative stock validation is disabled. (https://github.com/frappe/erpnext/pull/58419) * Updates the _Is Frozen_ descriptions in **Customer** and **Supplier** to clarify that freezing blocks new transactions and ledger entries, and that only users with the role configured in _Roles Allowed to Set and Edit Frozen Account Entries_ can transact. (https://github.com/frappe/erpnext/pull/58422) * Preserves the links between **Stock Entry** items and their source **Pick List**, so partially transferred items retain their transferred quantities and only the remaining quantities are offered in later stock entries. Hides the "Get Items" option for stock entries created from a **Pick List** and checks read access before creating them. (https://github.com/frappe/erpnext/pull/58405) * Prevents direct deletion of the company set in the _Demo Company_ field of **Global Defaults** and directs users to the "Delete Demo Data" action instead. (https://github.com/frappe/erpnext/pull/58427) * Adds validation when a **Material Request** is created from a **Sales Order**, rejecting requests whose _Company_ or linked item details—_Item Code_, _UOM_, or _Conversion Factor_—no longer match the source order. (https://github.com/frappe/erpnext/pull/58470) * Shows the existing internal **Customer** or **Supplier** as a clickable link in duplicate-record errors and tells users to disable it before marking another record as internal for the same company. (https://github.com/frappe/erpnext/pull/58475) * Updates **Job Card** quantity checks to exclude _Pending Quantity_ from the original card, allowing a follow-up **Job Card** for the remaining units. (https://github.com/frappe/erpnext/pull/58467) * Updates **Material Request** transfers against a **Job Card** so the resulting **Stock Entry** calculates _FG Completed Qty_ from the materials included in the transfer, including partial and selected transfers. (https://github.com/frappe/erpnext/pull/58499) * Fixes **Work Order** _Transferred Qty_ values by adding transfers for a required item and its alternate instead of replacing one with the other. (https://github.com/frappe/erpnext/pull/58502) * Filters cancelled **Sales Invoice** records out when the customer portal determines which **Timesheet** entries a customer can access. It returns no entries if the customer has neither a non-canc _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.34.0]_ ### v16.33.0 - Date: 2026-08-25 - Version: v16.33.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.33.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.33.0 - **removed** — Remove the unused get_last_interaction CRM endpoint - **added** — Add separate sections for General Ledger and AP/AR reports in Accounts Settings with a Disable Consider Accounting Dimension Filter option - **added** — Add support for custom tax charge types that calculate taxes from alternative values such as an item's MRP instead of its selling price - **added** — Add four Belgian charts of accounts for commercial entities and associations or foundations available in French and Dutch - **added** — Add a check to Purchase Invoice records linked to Purchase Receipt records to block saving or submitting when stock items use different exchange rates in the same currency and Set Landed Cost Based on Purchase Invoice Rate is disabled - **added** — Add a Status filter to the Supplier Quotation Comparison report defaulting to Submitted quotations - **fixed** — Update the non-bucket chart in the Material Requirements Planning Report to show the full selected date range and use each delivery date correctly instead of stopping after 10 dates - **fixed** — Update Asset Capitalization to split FIFO/LIFO valuation rates across repeated stock-item rows for the same item and warehouse - **fixed** — Apply Sales Person user permissions to the Accounts Receivable report so clearing the Sales Person filter does not expand results beyond the user's permitted records - **fixed** — Fix an issue where adding an item to a Material Request did not fetch the item's Qty and UOM values - **fixed** — Limit material transfer quantities in Stock Entry and Work Order processing to the amount covered by the included raw materials - **fixed** — Fix an issue that prevents users from creating a Purchase Order from the MRP report when the India compliance app is installed - **added** — Add a tooltip to the Allow Stale Exchange Rates setting in Accounts Settings explaining its behavior - **added** — Add a confirmation prompt when quantities entered in the batch selector differ from Qty to Fetch - **added** — Add the crm_deal field to Customer and Quotation when Enable Frappe CRM Data Synchronization is turned on and remove these fields when synchronization is off if they contain no data - **fixed** — Allow Purchase Receipt and Purchase Invoice returns against a closed Purchase Order while continuing to block new receipts against it - **fixed** — Allow stock to be issued from a batch when an earlier negative balance has since recovered while still rejecting issues that would make the batch balance negative - **fixed** — Block users from reversing a Journal Entry that is already a reversal by hiding the Reverse Journal Entry button - **fixed** — Fix an issue that could omit items when creating a Sales Invoice from a Sales Order - **changed** — Rename the Restrict Customer Over Billing checkbox in Accounts Settings to Prevent Sales Invoice when Customer is Overdue ##### Breaking Changes * Removes the unused `get_last_interaction` CRM endpoint. (https://github.com/frappe/erpnext/pull/58216) ##### Features * Updates **Accounts Settings** with separate sections for the "General Ledger" and AP/AR reports, and adds a _Disable "Consider Accounting Dimension" Filter_ option that hides the _Consider Accounting Dimension_ filter in the "General Ledger" report when enabled. (https://github.com/frappe/erpnext/pull/58158) * Adds support for custom tax charge types that calculate taxes from alternative values, such as an item's MRP instead of its selling price. (https://github.com/frappe/erpnext/pull/58161) * Adds four Belgian charts of accounts for commercial entities and associations or foundations, available in French and Dutch with account numbers and classifications for company setup. (https://github.com/frappe/erpnext/pull/58186) * Adds a check to **Purchase Invoice** records linked to **Purchase Receipt** records: when stock items use different exchange rates in the same currency and _Set Landed Cost Based on Purchase Invoice Rate_ is disabled, saving or submitting the invoice is blocked with a message naming the mismatched receipt and available remedies. (https://github.com/frappe/erpnext/pull/58190) * Adds a _Status_ filter to the "Supplier Quotation Comparison" report, defaulting to Submitted quotations and allowing users to view Draft quotations or both statuses. (https://github.com/frappe/erpnext/pull/58208) ##### Bug Fixes * Updates the non-bucket chart in the "Material Requirements Planning Report" to show the full selected date range and use each delivery date correctly, instead of stopping after 10 dates or placing entries under today’s date. Matching dates from different years now appear in separate chart columns. (https://github.com/frappe/erpnext/pull/58090) * Updates **Asset Capitalization** to split FIFO/LIFO valuation rates across repeated stock-item rows for the same item and warehouse, so each row receives its corresponding _Valuation Rate_ and _Amount_. (https://github.com/frappe/erpnext/pull/58089) * Applies **Sales Person** user permissions to the "Accounts Receivable" report, so clearing the _Sales Person_ filter does not expand results beyond the user's permitted **Customer** and **Sales Invoice** records. (https://github.com/frappe/erpnext/pull/58104) * Fixes an issue where adding an item to a **Material Request** did not fetch the item's _Qty_ and _UOM_ values. (https://github.com/frappe/erpnext/pull/58118) * Limits material transfer quantities in **Stock Entry** and **Work Order** processing to the amount covered by the included raw materials. Adds a repair for affected **Work Order** records while skipping completed or cancelled orders. (https://github.com/frappe/erpnext/pull/58115) * Fixes an issue that prevents users from creating a **Purchase Order** from the "MRP" report when the India compliance app is installed by filling in required fields before the order is created. (https://github.com/frappe/erpnext/pull/58027) * Adds a tooltip to the _Allow Stale Exchange Rates_ setting in **Accounts Settings**, explaining that it uses the latest saved rate on or before the transaction date, while clearing it ignores rates older than _Stale Days_ and fetches a new rate from the exchange rate provider. (https://github.com/frappe/erpnext/pull/58122) * Adds a confirmation prompt when the quantities entered in the batch selector differ from _Qty to Fetch_, warning that proceeding changes the item quantity before creating the bundle. (https://github.com/frappe/erpnext/pull/58125) * Adds the `crm_deal` field to **Customer** and **Quotation** when _Enable Frappe CRM Data Synchronization_ is turned on. During an update, removes these fields when synchronization is off and neither **Customer** nor **Quotation** contains data in them. (https://github.com/frappe/erpnext/pull/58143) * Allows **Purchase Receipt** and **Purchase Invoice** returns against a closed **Purchase Order**, w _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.33.0]_ ### v16.32.3 - Date: 2026-08-18 - Version: v16.32.3 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.32.3 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.32.3 - **fixed** — Fix an issue where adding an item to a Material Request did not fetch the item's Qty and UOM values ##### Bug Fixes * Fixes an issue where adding an item to a **Material Request** did not fetch the item's _Qty_ and _UOM_ values. (https://github.com/frappe/erpnext/pull/58266) **Authors**: @Henil666 **Reviewers**: @mihir-kandoi
AI content For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - chore - test - ci - build - style - docs - refactor
### v16.32.2 - Date: 2026-08-18 - Version: v16.32.2 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.32.2 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.32.2 - **fixed** — Fix an issue that could omit items when creating a Sales Invoice from a Sales Order ##### Bug Fixes * Fixes an issue that could omit items when creating a **Sales Invoice** from a **Sales Order**. (https://github.com/frappe/erpnext/pull/58258) **Authors**: @mihir-kandoi
AI content For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - docs - style - chore - refactor - build - test - ci
### v16.32.1 - Date: 2026-08-14 - Version: v16.32.1 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.32.1 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.32.1 - **fixed** — Allow stock to be issued from batches with old negative periods that later recover, while still blocking an issue if it would make the batch balance negative at that point or afterward ##### Bug Fixes * Allows stock to be issued from batches with old negative periods that later recover, while still blocking an issue if it would make the batch balance negative at that point or afterward. (https://github.com/frappe/erpnext/pull/58153) **Authors**: @rohitwaghchaure **Reviewers**: @rohitwaghchaure
AI content For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - chore - docs - ci - build - test - style - refactor
### v16.32.0 - Date: 2026-08-11 - Version: v16.32.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.32.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.32.0 - **added** — Add submission checks to Period Closing Voucher that compare stock account balances with the Stock Ledger report, require a completed company-wide Stock Closing Entry for the period-end date, and reject outdated stock snapshots - **added** — Add a Sync Serial No Status button to the Stock Qty vs Serial No Count report that updates listed Serial No records' Status and Warehouse based on their latest stock movement - **added** — Add a Stock UOM field to Job Card, populated from the finished good or final product and filled in for existing records - **fixed** — Fix stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted - **fixed** — Prevent a cancelled Subscription from being reactivated when its status is refreshed, including after its outstanding invoice is paid - **fixed** — Fix the Stock Ledger report so its opening balance includes stock from all selected items, rather than only one item - **fixed** — Preserve the hidden setting configured in Customize Form for Update Stock in Sales Invoice so the field does not reappear when the form refreshes - **fixed** — Fix the Create Purchase Orders by Supplier dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts - **fixed** — Update purchase returns from Purchase Receipt documents for batch-wise valued batches to use the batch's current average rate when stock remains - **fixed** — Round material request quantities in Production Plan after purchase-unit conversion, reducing unnecessary decimal values - **fixed** — Use the optimized item search for Item Code in Product Bundle item rows, reducing oversized search results and UI freezes - **fixed** — Skip reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation - **fixed** — Set Conversion Factor fields in transaction items to nine decimal places and round calculated values to match - **fixed** — Update the Stock Ledger Invariant Check report so Moving Average items no longer display FIFO queue differences that do not apply to them - **fixed** — Update Repost Item Valuation to use the current stock valuation rate when recalculating multi-line returns with Moving Average valuation - **fixed** — Fix the validation message shown in Journal Entry when a Purchase Invoice is blocked and has no release date - **fixed** — Restrict the data and actions available to templates used for shipping addresses, Payment Request, Request for Quotation, Contract Template, Email Campaign, and Delivery Trip notifications - **fixed** — Update Timesheet to set Employee and Company only when both values are found for the current user, instead of treating an empty lookup result as valid - **fixed** — Add a permission check when a web form creates a Task or changes its Project, blocking users who lack access to that project - **fixed** — Update Sales Order validation to accept sales team Allocated Percentage totals of 100% when minor decimal rounding differences make the calculated sum slightly different ##### Features * Adds submission checks to **Period Closing Voucher** that compare stock account balances with the "Stock Ledger" report, require a completed company-wide **Stock Closing Entry** for the period-end date, and reject outdated stock snapshots. After closing, it blocks creating or cancelling stock ledger entries dated on or before the closing date, locks the supporting **Stock Closing Entry**, and starts batch valuation from the closing balance. (https://github.com/frappe/erpnext/pull/57816) * Adds a "Sync Serial No Status" button to the "Stock Qty vs Serial No Count" report that updates listed **Serial No** records’ _Status_ and _Warehouse_ based on their latest stock movement. The sync changes serial number records only, leaving stock quantities, ledger entries, and valuation unchanged. (https://github.com/frappe/erpnext/pull/57864) * Adds a _Stock UOM_ field to **Job Card**, populated from the finished good or final product and filled in for existing records. Quantity messages and completion dialogs now show the applicable unit alongside each quantity, including comparisons between operations and raw-material transfers. (https://github.com/frappe/erpnext/pull/57937) ##### Bug Fixes * Fixes stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted. This keeps stock values in the correct order after backdated or amended transactions. (https://github.com/frappe/erpnext/pull/57797) * Prevents a cancelled **Subscription** from being reactivated when its status is refreshed, including after its outstanding invoice is paid. Corrects period-end cancellation when _End Date_ is empty or a billing period rolls over, preventing unintended invoice generation. (https://github.com/frappe/erpnext/pull/57778) * Fixes the "Stock Ledger" report so its opening balance includes stock from all selected items, rather than only one item, and subsequent quantity and value balances start from the combined total. (https://github.com/frappe/erpnext/pull/57796) * Preserves the hidden setting configured in **Customize Form** for _Update Stock_ in **Sales Invoice**, so the field does not reappear when the form refreshes. (https://github.com/frappe/erpnext/pull/57819) * Fixes the "Create Purchase Orders by Supplier" dialog in **Material Request** so submitting it can create purchase orders without failing on a check for existing drafts. (https://github.com/frappe/erpnext/pull/57833) * Updates purchase returns from **Purchase Receipt** documents for batch-wise valued batches to use the batch’s current average rate when stock remains, preventing leftover stock value when the batch quantity reaches zero. Returns use the original receipt rate when the batch has no remaining balance. (https://github.com/frappe/erpnext/pull/57836) * Rounds material request quantities in **Production Plan** after purchase-unit conversion, reducing unnecessary decimal values passed to **Material Request** and raw-material exports. (https://github.com/frappe/erpnext/pull/57852) * Uses the optimized item search for _Item Code_ in **Product Bundle** item rows, reducing oversized search results and UI freezes. (https://github.com/frappe/erpnext/pull/57870) * Skips reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation. (https://github.com/frappe/erpnext/pull/57882) * Sets _Conversion Factor_ fields in transaction items to nine decimal places and rounds calculated values to match, so unit-of-measure conversions retain accuracy in derived stock quantities and rates even when the site's general number precision is lower. (https://github.com/frappe/erpnext/pull/57884) * Updates the "Stock Ledger Invariant Check" report so Moving Average items no longer display FIFO queue differences that do not apply to them. The "Show Incorrect Entries" option now also lists entries with mismatched FIFO queue quantities or values when a queue is maintai _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.32.0]_ ### v16.31.1 - Date: 2026-08-06 - Version: v16.31.1 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.31.1 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.31.1 - **fixed** — Fix the Create Purchase Orders by Supplier dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts ##### Bug Fixes * Fixes the "Create Purchase Orders by Supplier" dialog in **Material Request** so submitting it can create purchase orders without failing on a check for existing drafts. (https://github.com/frappe/erpnext/pull/57834) **Authors**: @mihir-kandoi **Reviewers**: @mihir-kandoi
AI content For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - refactor - build - style - chore - docs - test - ci
### v16.31.0 - Date: 2026-08-04 - Version: v16.31.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.31.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.31.0 - **added** — Work Order Gantt view now shows each bar in a color that matches its status - **added** — Subscription form automatically fills Cost Center and other accounting fields from the chosen plan, with fallback to linked Item fields - **added** — Material Request with items from different suppliers can create separate Purchase Orders per supplier with supplier selection per item - **added** — Territory filter in Accounts Receivable report now supports multi-select - **fixed** — Electronic invoicing is skipped for opening Sales Invoice documents in Italy - **fixed** — Purchase Receipt cancellation now uses the same linked-document check as other forms - **fixed** — Users with edit access can remove items from Update Items in Sales Order without needing cancel or delete access - **fixed** — Australian standard chart of accounts now includes Accrued Manufacturing Expenses account group and marks account 115 as a bank account - **fixed** — Items produced from zero-cost materials remain at zero cost instead of using the item's own cost or Bill of Materials cost - **fixed** — Asset created from purchase document now uses Net Purchase Amount from item's Valuation Rate and quantity instead of purchase line total - **fixed** — Item Group root is reused during ERPNext setup to keep built-in item groups under one main group - **fixed** — Correct inventory account is selected instead of randomly picking one when multiple accounts are set up - **fixed** — Period Closing Voucher cannot be submitted or cancelled for a frozen accounting date - **fixed** — Stock Entry with purpose Receive from Customer leaves Target Warehouse blank for new item rows when no matching row exists - **fixed** — Projects marked On hold no longer appear when choosing a project in Task and Timesheet - **fixed** — Stock and Account Value Comparison report includes only child warehouses whose account matches the parent warehouse - **fixed** — Accounts Receivable and Accounts Receivable Summary filtering by Sales Partner now uses the partner set on each Sales Invoice - **fixed** — Return documents in Delivery Note and Sales Invoice use the original item linked in Packed Item when the direct item link is missing - **fixed** — Payment Entry form fills Received Amount using the exchange rate for its own Posting Date instead of the source document's date ##### Features * The **Work Order** Gantt view now shows each bar in a color that matches its status instead of the default color. (https://github.com/frappe/erpnext/pull/57636) * On the **Subscription** form, choosing a plan automatically fills in _Cost Center_ and other accounting fields from the plan. When a field is missing from the plan, it comes from the linked **Item**, and any values you already entered stay in place. (https://github.com/frappe/erpnext/pull/57622) * When a **Material Request** has items from different suppliers, creating a **Purchase Order** now lets you choose the _Supplier_ for each item. The system creates one **Purchase Order** per supplier. (https://github.com/frappe/erpnext/pull/57698) ##### Bug Fixes * The system skips electronic invoicing for opening **Sales Invoice** documents in Italy. (https://github.com/frappe/erpnext/pull/57590) * Makes **Purchase Receipt** cancellation use the same linked-document check as other forms, so a submitted **Purchase Invoice** blocks a direct cancel. The "Cancel All Documents" action still cancels the invoice first and then the receipt. (https://github.com/frappe/erpnext/pull/57597) * Allows users with edit access to remove items from "Update Items" in **Sales Order** without needing cancel or delete access on the order. Item lines with ordered, received, delivered, or billed quantities still cannot be removed. (https://github.com/frappe/erpnext/pull/57601) * Adds a new Accrued Manufacturing Expenses account group to the Australian standard chart of accounts and marks the 115 account group as a bank account. (https://github.com/frappe/erpnext/pull/57608) * Items produced from materials that cost nothing stay at zero cost instead of using the item's own cost or the cost from the **Bill of Materials**. This keeps the finished item at zero cost in those cases. (https://github.com/frappe/erpnext/pull/57513) * When you create an **Asset** from a purchase document, the _Net Purchase Amount_ now comes from the item’s _Valuation Rate_ and quantity instead of the purchase line total. (https://github.com/frappe/erpnext/pull/57620) * Uses the existing **Item Group** root when ERPNext is set up, so the built-in item groups stay under one main group instead of splitting into two top-level groups. Merges any duplicate "All Item Groups" entry into that root on update. (https://github.com/frappe/erpnext/pull/57630) * Uses the correct inventory account instead of picking one at random when more than one is set up. (https://github.com/frappe/erpnext/pull/57632) * Prevents **Period Closing Voucher** from being submitted or cancelled for a frozen accounting date. (https://github.com/frappe/erpnext/pull/57641) * In **Stock Entry** with purpose Receive from Customer, adding an item row now leaves _Target Warehouse_ blank when no matching row is available to copy from. When a matching row exists, the field is copied into the new row. (https://github.com/frappe/erpnext/pull/57638) * Projects marked `On hold` no longer appear when choosing a project in **Task** and **Timesheet**. The "Project Summary" report now includes `On hold` in the status filter. (https://github.com/frappe/erpnext/pull/57243) * The "Stock and Account Value Comparison" report now includes only child warehouses whose account matches the parent warehouse. Warehouses with a different account are no longer grouped under the parent account. (https://github.com/frappe/erpnext/pull/57557) * Filtering "Accounts Receivable" and "Accounts Receivable Summary" by _Sales Partner_ uses the partner set on each **Sales Invoice**, so invoices assigned directly to a partner appear in the results. The _Sales Partner_ column shows the partner from the invoice, and returns are grouped with the original invoice. (https://github.com/frappe/erpnext/pull/57648) * Return documents in **Delivery Note** and **Sales Invoice** now use the original item linked in **Packed Item** when the direct item link is missing. Those returns use the origi _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.31.0]_ ### v16.30.0 - Date: 2026-07-28 - Version: v16.30.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.30.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.30.0 - **added** — Make Cost Center on Shipping Rule optional, so shipping charges use the company's default Cost Center and copy the rule's Project to the shipping charge line when left blank - **added** — Add optional Overdue Limit check on Customer that blocks Sales Invoice submission when customer's overdue balance exceeds the limit, with bypass allowed for permitted users and limit optionally sourced from Customer Group - **added** — Add accounting entries for stock-related expenses in Stock Entry, Stock Reconciliation, and Purchase Receipt to record these costs separately, excluding landed cost from purchase expense entries - **fixed** — Use quantity precision from Serial and Batch Entry with System Settings as fallback in reserved batch checks instead of always using 6 decimal places - **fixed** — Keep selected BOM when creating Work Order for variant item instead of replacing it with default BOM - **fixed** — Update stock levels correctly after cancelling one stock entry when several share the same date and time - **fixed** — Spread a batch's value across its rows in Stock Ageing report for items with batch numbers when one row shows negative value - **fixed** — Handle missing is_your_company_address field in Address so saving or importing Address records no longer fails - **fixed** — Clean up Repost Item Valuation by removing attached data file and clearing Reposting Data File field - **fixed** — Place batches without Expiry Date at end of list in Batch selection to avoid error when Warehouse contains both expiring and non-expiring batches - **fixed** — Copy Customer from Pick List to Delivery Note when creating delivery note without Sales Order - **fixed** — Show summary information on Customer and Supplier dashboards only for companies current user can access - **fixed** — Turn on Include Zero Stock Items by default in Stock Balance report so items with no stock appear when report opens - **fixed** — Update Operating Cost for operation in Routing when Hour Rate changes - **fixed** — Rename Posting Date to Report Date and Calculate Ageing With to Age as on with Today Date shortened to Today in Accounts Receivable, Accounts Payable, and their summary reports - **fixed** — Distribute Batch value across age groups in Stock Ageing report on every run instead of only when age group goes below zero - **fixed** — Release remaining raw-material reservation tied to closed Subcontracting Order so warehouse stock count reflects freed material - **fixed** — Treat cancelled and expired Quotations as inactive and count partially ordered Quotations as ordered when setting Opportunity status - **fixed** — Clarify message when marking Opportunity as lost if active Quotation exists - **fixed** — Limit search through older stock records to same item when valuing serial numbers to reduce records checked - **fixed** — Carry over comments and communications from linked Opportunity to submitted Quotation when CRM Settings option is enabled ##### Features * Makes the _Cost Center_ on **Shipping Rule** optional. When it is left blank, shipping charges use the company’s default _Cost Center_ and copy the rule’s _Project_ to the shipping charge line. (https://github.com/frappe/erpnext/pull/57385) * Adds an optional _Overdue Limit_ check and blocks **Sales Invoice** submission when a customer's overdue balance is above it. Users allowed to bypass the restriction can still submit, and the limit can also come from **Customer Group**. (https://github.com/frappe/erpnext/pull/57438) * Adds accounting entries for stock-related expenses in **Stock Entry**, **Stock Reconciliation**, and **Purchase Receipt**, so these costs are recorded separately. Excludes landed cost from purchase expense entries. (https://github.com/frappe/erpnext/pull/57503) ##### Bug Fixes * Reserved batch checks now use the quantity precision from **Serial and Batch Entry**, with **System Settings** as a fallback, instead of always using 6 decimal places. (https://github.com/frappe/erpnext/pull/57354) * When creating a **Work Order** for a variant item, ERPNext keeps the selected **BOM** instead of replacing it with the default one. (https://github.com/frappe/erpnext/pull/57359) * When several stock entries share the same date and time, cancelling one now updates the entries that were created after it, so stock levels stay correct after the cancellation. (https://github.com/frappe/erpnext/pull/57397) * Updates the "Stock Ageing" report for items with batch numbers, spreading a batch’s value across its rows when one row shows a negative value. This makes the row values add up to the batch’s total value in those cases. (https://github.com/frappe/erpnext/pull/57404) * Updates **Address** to handle a missing `is_your_company_address` field. Saving or importing **Address** records no longer stops with an error in that case. (https://github.com/frappe/erpnext/pull/57408) * Fixes cleanup for **Repost Item Valuation** so its attached data file is removed and the _Reposting Data File_ field is cleared. (https://github.com/frappe/erpnext/pull/57250) * The **Batch** selection now puts batches without an _Expiry Date_ at the end of the list. This avoids an error when a **Warehouse** contains both expiring and non-expiring batches. (https://github.com/frappe/erpnext/pull/57415) * Copies the _Customer_ from **Pick List** to **Delivery Note** when creating a delivery note without a **Sales Order**. (https://github.com/frappe/erpnext/pull/57420) * The dashboard on **Customer** and **Supplier** forms now shows summary information only for companies the current user can access. This avoids permission errors when a customer or supplier has activity in companies the user cannot access. (https://github.com/frappe/erpnext/pull/57440) * The "Stock Balance" report turns on _Include Zero Stock Items_ by default, so items with no stock appear when the report opens. (https://github.com/frappe/erpnext/pull/57460) * When you change _Hour Rate_ in **Routing**, _Operating Cost_ updates for that operation. (https://github.com/frappe/erpnext/pull/57468) * In "Accounts Receivable", "Accounts Payable", and their summary reports, _Posting Date_ is renamed to _Report Date_, and _Calculate Ageing With_ is renamed to _Age as on_ with "Today Date" shortened to "Today" so the labels match how the reports work. Existing saved filters are updated automatically to match the new labels. (https://github.com/frappe/erpnext/pull/57473) * The "Stock Ageing" report now distributes the value of a **Batch** across its age groups on every run, instead of only after one age group goes below zero. This changes the amounts shown in each age group when a batch includes receipts at different prices, while the total stays the same. (https://github.com/frappe/erpnext/pull/57487) * A closed **Subcontracting Order** now releases any remaining raw-material reservation tied to it. The warehouse stock count reflects the freed material instead of keeping it reserved _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.30.0]_ ### v16.29.0 - Date: 2026-07-22 - Version: v16.29.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.29.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.29.0 - **added** — Add an "On hold" option to the Status field in Project - **added** — Automatically link a matching Contact to a Customer or Supplier when a portal user is added - **added** — Add missing stock quantity sort options to Stock Summary report - **added** — Add Reserved Stock column to the Stock Projected Qty report - **changed** — Rename "Recalculate Bin Qty" button to "Recalculate Values" in Bin form and update Valuation Rate and Stock Value from latest stock record - **fixed** — Add missing currency setting to Supplier Quotation Item Net Rate field - **fixed** — Make Job Card field in Purchase Order Item read-only and exclude it from copied and printed records - **fixed** — Allow Delivery Note submission when the same batch is reserved by more than one Sales Order if enough stock remains for other reservations - **fixed** — Allow people added to a Project to access that project without the Projects User role - **fixed** — Open accounting and stock ledger previews without loading every detail first to avoid permission errors - **fixed** — Make Production Plan purchase and transfer flow respect Consider Minimum Order Qty when stock comes from multiple warehouses - **fixed** — Recalculate remaining value of items in Stock Ageing using moving average at current rate and newest stock first for LIFO items - **fixed** — Strip leading and trailing spaces from Account Number in Chart of Accounts Importer - **fixed** — Prevent Dunning Type from being saved when selected Income Account or Cost Center does not belong to the same company or is disabled - **fixed** — Limit Process Statement of Accounts templates to standard placeholders when generating email subject, message, and PDF name - **fixed** — Auto-fill Material Request Buying Price List only with accessible Price Lists and clear field if selected Price List is not a buying price list - **fixed** — Fix parallel stock reposting to start the next pending task after one finishes - **fixed** — Auto-fill Material Request Date in Production Plan Material Request from Transaction Date of linked Material Request - **fixed** — Prevent Transferred Qty from Work Order from being copied into Pick List - **fixed** — Fix misspelled allow_negative_stock option in Stock and Account Value Comparison and Stock Ledger Invariant Check reports ##### Features * Adds an "On hold" option to the _Status_ field in **Project**. Projects marked "On hold" stay in that status when their progress changes. (https://github.com/frappe/erpnext/pull/57173) * Automatically links a matching **Contact** to a **Customer** or **Supplier** when a portal user is added, so the portal user can see the related records. Existing links stay unchanged, so duplicate links are not created. (https://github.com/frappe/erpnext/pull/57211) * Adds the missing stock quantity sort options to "Stock Summary", so items with stock only in those quantities still appear when you sort by them. Adds the _Reserved Stock_ column to the "Stock Projected Qty" report. (https://github.com/frappe/erpnext/pull/57304) * The **Bin** form renames the "Recalculate Bin Qty" button to "Recalculate Values" and now also updates _Valuation Rate_ and _Stock Value_ from the latest stock record. For items using Standard Cost, _Stock Value_ follows the standard rate, and those fields reset to zero when there is no stock record. (https://github.com/frappe/erpnext/pull/57302) ##### Bug Fixes * Adds the missing `currency` setting to **Supplier Quotation Item** _Net Rate_, so the field shows the correct currency symbol in multi-currency supplier quotations. (https://github.com/frappe/erpnext/pull/57168) * Makes the _Job Card_ field in **Purchase Order Item** read-only and keeps it out of copied and printed records. (https://github.com/frappe/erpnext/pull/57166) * Allows a **Delivery Note** to be submitted when the same batch is reserved by more than one **Sales Order**, as long as enough stock remains for the other reservations. It still blocks deliveries when the batch would not have enough stock left for those reservations. (https://github.com/frappe/erpnext/pull/57170) * People added to a **Project** can now access that project even without the Projects User role. (https://github.com/frappe/erpnext/pull/57181) * Opens the accounting and stock ledger previews without loading every detail first, which avoids permission errors in some cases. (https://github.com/frappe/erpnext/pull/57184) * The **Production Plan** purchase and transfer flow now respects _Consider Minimum Order Qty_ when some stock comes from other warehouses and the rest is purchased. The amount left to buy does not fall below the item's _Minimum Order Qty_. (https://github.com/frappe/erpnext/pull/57208) * "Stock Ageing" now recalculates the remaining value of items using moving average at the current rate. It also uses the newest stock first for LIFO items, so the report shows stock value and average age based on each item's valuation method. (https://github.com/frappe/erpnext/pull/57017) * Strips leading and trailing spaces from _Account Number_ in **Chart of Accounts Importer** before adding it to the account name. Imported account names do not include unwanted spaces from the number. (https://github.com/frappe/erpnext/pull/57219) * Prevents **Dunning Type** from being saved when the selected _Income Account_ or _Cost Center_ does not belong to the same company or is disabled, and only one **Dunning Type** can be set as the default for each company. It also blocks duplicate _Language_ entries in the letter text, lets only one language be set as the default, and checks _Body Text_ and _Closing Text_ for template errors. (https://github.com/frappe/erpnext/pull/57227) * Limits **Process Statement of Accounts** templates to standard placeholders when generating the email subject, message, and PDF name. (https://github.com/frappe/erpnext/pull/57232) * **Material Request** now auto-fills the _Buying Price List_ only with a **Price List** you have access to, and it clears the field if the selected **Price List** is not a buying price list. Changing the _Buying Price List_ refreshes the item prices and totals for items with a matching price. (https://github.com/frappe/erpnext/pull/57247) * Fixes parallel stock reposting so it starts the next pending task after one finishe _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.29.0]_ ### v16.28.0 - Date: 2026-07-15 - Version: v16.28.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v16.28.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v16.28.0 - **added** — Update the Philippines chart of accounts with revised account names and numbers, including an Intangible Assets section with accumulated amortization accounts and new income and expense accounts for exchange gains and losses, gains and losses on asset disposal, and other expense items - **added** — Add the Auto Repost Incorrect Valuation Entries (Weekly) option in Stock Reposting Settings to automatically repost incorrect stock valuation entries weekly - **changed** — The General Ledger, Trial Balance, Balance Sheet, and Profit and Loss reports now use a faster data source on supported sites - **fixed** — Default letterheads now skip loading the company logo when a document has no company details so those documents still print and export to PDF - **fixed** — Payment Entry now fills in the outstanding and total amounts when you manually choose a Journal Entry in another currency - **fixed** — The Budget Variance Report chart now shows monthly actual amounts under the correct month instead of one month earlier - **fixed** — In Pick List, barcode scans add a new line when Pick Manually is turned on, and repeated scans increase the picked quantity instead of being limited to the default quantity - **fixed** — Show Qty (Company) and Qty (Warehouse) on line items in Sales Order, Quotation, Sales Invoice, and Delivery Note - **fixed** — Add access checks for Terms and Conditions templates before they are used in documents and limit the text to the supported template features - **fixed** — Use currency rounding when matching depreciation schedule rows in Asset to the linked Journal Entry to help prevent duplicate postings caused by small decimal differences - **fixed** — Allow Asset Repair records to be created for assets that are fully depreciated and add an Asset Repair button on the Asset form - **fixed** — Transferred Stock Reservation Entry records now copy the original Stock UOM from the item instead of leaving it blank or using a different unit of measure - **fixed** — Fix a case where submitting a Stock Entry for items with serial numbers can fail when there are many Serial and Batch Bundle records - **fixed** — Add permission checks when showing balances in the chart of accounts so users only see balances for accounts they can view - **fixed** — Keep the transferred quantity on Work Orders that use Job Cards when updating required items - **fixed** — Allow a Purchase Order created from a Material Request to use the same requested item in more than one row ##### Features * Updates the Philippines chart of accounts with revised account names and numbers. Adds an Intangible Assets section with accumulated amortization accounts and new income and expense accounts for exchange gains and losses, gains and losses on asset disposal, and other expense items. (https://github.com/frappe/erpnext/pull/57085) * Adds the _Auto Repost Incorrect Valuation Entries (Weekly)_ option in **Stock Reposting Settings** to automatically repost incorrect stock valuation entries weekly. When enabled, it uses "Stock Ledger Variance" and "Stock and Account Value Comparison" to find entries to repost for the current financial year, skips **Journal Entry** documents, and notifies System Managers when a mismatch cannot be corrected automatically. (https://github.com/frappe/erpnext/pull/56700) * The "General Ledger", "Trial Balance", "Balance Sheet", and "Profit and Loss" reports now use a faster data source on supported sites, so they load faster. (https://github.com/frappe/erpnext/pull/57098) ##### Bug Fixes * Default letterheads now skip loading the company logo when a document has no company details, so those documents still print and export to PDF. The grey letterhead also sets fixed widths for the logo and table on printed pages. (https://github.com/frappe/erpnext/pull/57080) * **Payment Entry** now fills in the outstanding and total amounts when you manually choose a **Journal Entry** in another currency. (https://github.com/frappe/erpnext/pull/57083) * The "Budget Variance Report" chart now shows monthly actual amounts under the correct month instead of one month earlier. The _Budget Against_ field is excluded from the chart's month labels, so the chart matches the table. (https://github.com/frappe/erpnext/pull/57081) * In **Pick List**, barcode scans add a new line when _Pick Manually_ is turned on, and repeated scans increase the picked quantity instead of being limited to the default quantity. Scans also keep the unit already on the line when the barcode uses another unit. (https://github.com/frappe/erpnext/pull/57103) * Shows _Qty (Company)_ and _Qty (Warehouse)_ on line items in **Sales Order**, **Quotation**, **Sales Invoice**, and **Delivery Note**. When the _Warehouse_ on a line item changes, both values update. (https://github.com/frappe/erpnext/pull/57105) * Adds access checks for **Terms and Conditions** templates before they are used in documents and limits the text to the supported template features. (https://github.com/frappe/erpnext/pull/56977) * Uses currency rounding when matching depreciation schedule rows in **Asset** to the linked **Journal Entry**, which helps prevent duplicate postings caused by small decimal differences. (https://github.com/frappe/erpnext/pull/56966) * Allows **Asset Repair** records to be created for assets that are fully depreciated and adds an “Asset Repair” button on the **Asset** form. For these repairs, _Capitalize Repair Cost_ cannot be edited and the repair does not add to the asset’s value or life. (https://github.com/frappe/erpnext/pull/57077) * Transferred **Stock Reservation Entry** records now copy the original _Stock UOM_ from the item, instead of leaving it blank or using a different unit of measure. This avoids validation errors when submitting **Work Order**s in affected cases. (https://github.com/frappe/erpnext/pull/57113) * Fixes a case where submitting a **Stock Entry** for items with serial numbers can fail when there are many **Serial and Batch Bundle** records. The serial numbers are now checked differently for larger lists. (https://github.com/frappe/erpnext/pull/57118) * Adds permission checks when showing balances in the chart of accounts, so users only see balances for accounts they can view. (https://github.com/frappe/erpnext/pull/57122) * Keeps the transferred quantity on **Work Order**s that use **Job Card**s. Updating required items no longer replaces it with the quantity from stock transfer records. (https://github.com/frappe/erpne _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v16.28.0]_