# ERPNext changelog > An open-source ERP covering accounting, inventory, manufacturing and HR. - Vendor: Frappe - Category: Productivity - Official site: https://erpnext.com - Tracked by: What's New (https://whatsnew.fyi/product/erpnext) - Harvested from: GitHub (frappe/erpnext) - Entries below: 10 (newest first) 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'. ## Releases ### 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
### v15.119.0 - Date: 2026-08-04 - Version: v15.119.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.119.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.119.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 plan, with fallback to linked Item values - **changed** — Cost Center on Shipping Rule is now optional, using company default when blank and copying the rule's Project to the shipping charge line - **fixed** — Return documents in Delivery Note and Sales Invoice now use the original item linked in Packed Item when direct item link is missing, with original rate instead of zero - **fixed** — Purchase Receipt cancellation now uses the same linked-document check as other forms, blocking cancellation when a submitted Purchase Invoice exists - **fixed** — Asset created from purchase document now uses item's Valuation Rate and Quantity for initial value instead of line's net amount - **fixed** — Item Group root is reused when ERPNext is set up, keeping built-in item groups under one main group instead of splitting into two top-level groups - **fixed** — Correct inventory account is now selected instead of picking one at random when multiple are set up - **fixed** — Period Closing Voucher is now prevented from being submitted or cancelled for a frozen accounting date - **fixed** — Projects marked On hold no longer appear when choosing a project in Task and Timesheet, and Project Summary report now includes On hold in status filter - **fixed** — Accounts Receivable and Accounts Receivable Summary filtering by Sales Partner now uses the partner set on each Sales Invoice - **fixed** — Serial and Batch Bundle now uses current date and time when Posting Date or Posting Time is missing - **fixed** — Payment Entry form now fills Received Amount using the exchange rate for its own Posting Date instead of the source document's date - **fixed** — Stock Reconciliation now skips batch-related stock balance checks when a row is missing - **fixed** — Plant Floor stock summary now includes permission checks so users only see data for accessible Warehouse, Item, and Item Group records - **fixed** — Conversation history from linked Opportunity is now carried over to new Quotation upon creation instead of only after submission - **fixed** — Stock Entry validation for material transfers now uses item's quantity precision to avoid blocking transfers with tiny rounding differences - **fixed** — Shipping Rule with missing Cost Center no longer adds duplicate shipping charges when applied or saved - **fixed** — Returns in Purchase Invoice, Purchase Receipt, and Subcontracting Receipt now require at least one item with negative quantity - **fixed** — Returns from Sales Invoice, Delivery Note, and POS Invoice now require at least one item with negative quantity - **fixed** — Existing variants can still be saved after Item Attribute is disabled as long as Attribute Value stays unchanged ##### 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/57635) * 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/57621) * 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/57402) ##### Bug Fixes * 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 original rate instead of zero. (https://github.com/frappe/erpnext/pull/57510) * 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/57602) * When you create an **Asset** from a purchase document, its initial value now comes from the item's _Valuation Rate_ and _Quantity_ instead of the line's net amount. (https://github.com/frappe/erpnext/pull/57619) * 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/57629) * Uses the correct inventory account instead of picking one at random when more than one is set up. (https://github.com/frappe/erpnext/pull/57631) * Prevents **Period Closing Voucher** from being submitted or cancelled for a frozen accounting date. (https://github.com/frappe/erpnext/pull/57640) * 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/57242) * 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/57646) * When _Posting Date_ or _Posting Time_ is missing, **Serial and Batch Bundle** uses the current date and time instead. It also accepts the usual form details when serial and batch records are saved, instead of running into an error. (https://github.com/frappe/erpnext/pull/57020) * The **Payment Entry** form now fills _Received Amount_ using the exchange rate for its own _Posting Date_ instead of the date from the document it comes from. This reduces cases where a _Difference Amount_ appears as soon as the form opens. (https://github.com/frappe/erpnext/pull/57662) * Updates **Stock Reconciliation** to skip batch-related stock balance checks when a row is missing, avoiding an error in some batch-tracked item lookups. (https://github.com/frappe/erpnext/pull/57654) * Adds permission checks to the stock summary in **Plant Floor** so users only see stock data for **Warehouse**, **Item**, and **Item Group** records they can access. (https://github.com/frappe/erpnext/pull/57669) * Carries over the conversation history from the linked **Opportunity** to a new **Quotation** as soon as it is created, instead of only after submission. (https://github.com/frappe/erpnext/pull/57642) * Updates **Stock Entry** validation for material transfers to use the item’s quantity precision. This avoids blocking a transfer when only a tiny rounding d _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v15.119.0]_ ### 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]_ ### v15.118.3 - Date: 2026-07-30 - Version: v15.118.3 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.118.3 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.118.3 - **fixed** — Fix electronic invoicing being skipped for opening Sales Invoice documents in Italy - **fixed** — Fix items produced from zero-cost materials staying at zero cost instead of using the item's own cost or the cost from the Bill of Materials ##### Bug Fixes * The system skips electronic invoicing for opening **Sales Invoice** documents in Italy. (https://github.com/frappe/erpnext/pull/57589) * 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/57512) **Authors**: @Sudharsanan11, @krishna-254 **Reviewers**: @rohitwaghchaure, @nabinhait
AI content For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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: - test - style - chore - refactor - docs - ci - build
### v15.118.2 - Date: 2026-07-28 - Version: v15.118.2 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.118.2 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.118.2 - **fixed** — When several Stock Entry documents share the same Posting Date and Posting Time, canceling one now starts from the balance before that time instead of counting the canceled quantity twice - **fixed** — Reversing a Journal Entry keeps the form locked and restores the Save button - **fixed** — When creating a Work Order for a variant item, ERPNext keeps the selected BOM instead of replacing it with the default one - **fixed** — Creating a Work Order from a Material Request now recognises item variants and automatically uses the parent template BOM when the variant lacks its own, preventing the No BOM found error and keeping the request linked to its Work Order - **fixed** — 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 - **fixed** — Address now handles a missing is_your_company_address field without stopping with an error when saving or importing Address records - **fixed** — The Batch selection now puts batches without an Expiry Date at the end of the list to avoid an error when a Warehouse contains both expiring and non-expiring batches - **fixed** — Copies the Customer from a Pick List to the Delivery Note Customer field when there is no Sales Order and the field is blank - **fixed** — The dashboard on Customer and Supplier forms now shows summary information only for companies the current user can access - **fixed** — The Stock Balance report turns on Include Zero Stock Items by default, so items with no stock appear when the report opens - **fixed** — When you change Hour Rate in Routing, Operating Cost updates for that operation - **fixed** — 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 - **fixed** — A closed Subcontracting Order now releases any remaining raw-material reservation tied to it - **fixed** — Treats cancelled and expired Quotations as inactive when setting the status of an Opportunity, allowing Opportunity to move to Converted - **changed** — 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 - **fixed** — Clarifies the message shown when you try to mark an Opportunity as lost if an active Quotation exists - **fixed** — Limits the search through older stock records to the same item when valuing serial numbers, reducing the number of records checked - **fixed** — When you submit a Quotation linked to an Opportunity, the comments and communications from the linked Opportunity are carried over to the Quotation if the option in CRM Settings is enabled - **fixed** — Updates the Operating Cost for operations in Routing when a Workstation Hour Rate changes - **fixed** — Trend reports now display amounts in the company's currency instead of the default currency and skip the total row ##### Bug Fixes * When several **Stock Entry** documents share the same _Posting Date_ and _Posting Time_, canceling one now starts from the balance before that time instead of counting the canceled quantity twice. (https://github.com/frappe/erpnext/pull/57347) * Reversing a **Journal Entry** keeps the form locked and restores the "Save" button. (https://github.com/frappe/erpnext/pull/57379) * 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/57394) * Creating a "Work Order" from a **Material Request** now recognises item variants and automatically uses the parent template BOM when the variant lacks its own, preventing the previous “No BOM found” error and keeping the request linked to its Work Order. (https://github.com/frappe/erpnext/pull/57401) * 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/57405) * 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/57407) * 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/57414) * Copies the _Customer_ from a **Pick List** to the **Delivery Note** _Customer_ field when there is no **Sales Order** and the field is blank. (https://github.com/frappe/erpnext/pull/57422) * 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/57439) * 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/57458) * When you change _Hour Rate_ in **Routing**, _Operating Cost_ updates for that operation. (https://github.com/frappe/erpnext/pull/57467) * 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/57486) * 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 under the closed order. (https://github.com/frappe/erpnext/pull/57480) * Treats cancelled and expired **Quotation**s as inactive when setting the status of an **Opportunity**. Partially ordered **Quotation**s now count as ordered, so an **Opportunity** can move to Converted. (https://github.com/frappe/erpnext/pull/57490) * 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/57472) * Clarifies the message shown when you try to mark an **Opportunity** as lost if an active **Quotation** exists. (https://github.com/frappe/erpnext/pull/57497) * Limits the search through older stock records to the same item when valuing serial numbers, reducing the number of records checked. (https://github.com/frappe/erpnext/pull/57505) * When several stock entries share the same date and time, c _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v15.118.2]_ ### 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]_ ### v15.118.1 - Date: 2026-07-23 - Version: v15.118.1 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.118.1 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.118.1 - **fixed** — When several Stock Entry documents share the same Posting Date and Posting Time, canceling one now starts from the balance before that time instead of counting the canceled quantity twice ##### Bug Fixes * When several **Stock Entry** documents share the same _Posting Date_ and _Posting Time_, canceling one now starts from the balance before that time instead of counting the canceled quantity twice. (https://github.com/frappe/erpnext/pull/57395) **Authors**: @mihir-kandoi
AI content For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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 - build - test - refactor - style - ci
### v15.118.0 - Date: 2026-07-22 - Version: v15.118.0 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.118.0 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.118.0 - **added** — Add an "On hold" option to the Status field in Project that keeps projects in that status when their progress changes - **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 and add Reserved Stock column to Stock Projected Qty report - **fixed** — Add missing currency setting to Supplier Quotation Item Net Rate to show correct currency symbol in multi-currency supplier quotations - **fixed** — Restrict accounting and stock ledger previews to users who can view the related document - **fixed** — Make Sales Person Wise Transaction Summary report respect user permissions - **fixed** — Allow people added to a Project to access that project without the Projects User role - **fixed** — Make Production Plan purchase and transfer flow respect Consider Minimum Order Qty when stock comes from multiple warehouses - **fixed** — Strip leading and trailing spaces from Account Number in Chart of Accounts Importer before adding to account name - **fixed** — Prevent Dunning Type from being saved with invalid Income Account or Cost Center and enforce single default per company - **fixed** — Limit Process Statement of Accounts templates to standard placeholders when generating email subject, message, and PDF name - **fixed** — Make Material Request auto-fill Buying Price List only with accessible price lists and refresh item prices when changed - **fixed** — Auto-fill Material Request Date in Production Plan Material Request from Transaction Date of linked Material Request - **fixed** — Make % Complete editable in Project when % Complete Method is set to Manual and validate values stay between 0 and 100 - **fixed** — Update Bank Reconciliation Statement print and PDF output to show debit and credit amounts in selected bank account currency - **fixed** — Fix misspelled allow_negative_stock option in Stock and Account Value Comparison and Stock Ledger Invariant Check reports - **fixed** — Prevent changing Account Type from Stock once stock transactions have been recorded against it - **fixed** — Fill default accounting dimensions on new documents and refresh them when Company changes on Sales Order - **fixed** — Recalculate stock ageing values after Stock Reconciliation to reflect updated stock rate - **fixed** — Fix Stock Balance report to use batch and serial tracking from Item ##### 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/57172) * 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/57210) * 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/57303) ##### 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/57167) * Accounting and stock ledger previews now open only for users who can view the related document. (https://github.com/frappe/erpnext/pull/57142) * The "Sales Person Wise Transaction Summary" report now respects your permissions when showing transactions, so you only see records you can access. (https://github.com/frappe/erpnext/pull/57043) * People added to a **Project** can now access that project even without the Projects User role. (https://github.com/frappe/erpnext/pull/57180) * 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/57209) * 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/57218) * 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/57226) * Limits **Process Statement of Accounts** templates to standard placeholders when generating the email subject, message, and PDF name. (https://github.com/frappe/erpnext/pull/57231) * **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/57246) * The _Material Request Date_ in **Production Plan Material Request** now fills automatically from the _Transaction Date_ of the linked **Material Request**. (https://github.com/frappe/erpnext/pull/57251) * Makes _% Complete_ editable in **Project** when _% Complete Method_ is set to Manual, so the progress value can be entered directly instead of being calculated. Adds a check that manually entered _% Complete_ values stay between 0 and 100. (https://github.com/frappe/erpnext/pull/57275) * Updates "Bank Reconciliation Statement" print and PDF output to show debit and credit amounts in the selected bank account's currency. (https://github.com/frappe/erpnext/pull/57278) * Fixes a misspelled `allow_negative_stock` option in the "Stock and Account Value Comparison" and "Stock Ledger Invariant Check" reports, so they use the correct stock setting. (https://github.com/frappe/erpnext/pull/57281) * Prevents changing the _Account Type_ of an **Account** from Stock once stock transactions have been recorded against it. (https://gith _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v15.118.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]_