Skip to content

erpnext

v15.116.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

Published 14d Productivity & Wikis
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

accounting asset-management crm distribution erp erpnext
+10 more
frappe healthcare hrms manufacturing point-of-sale procurement project-management python retail support

ReleasePort's take

Light signal
editorial:auto 13d

Release v15.116.0 adds a _Project_ field to invoices and enables partial transfer of pick lists, while fixing several accounting bugs and improving performance for delivery notes and auto‑reorder across nested warehouses.

Why it matters: Bug fixes with severity 40 address double‑counting, ledger errors, report crashes, and item‑type restrictions; performance changes (severity 30) bulk‑lookup stock quantities and cache warehouse hierarchies, reducing save times and auto‑reorder latency.

Summary

AI summary

Broad release touches Bug Fixes, Other Changes, Performance Improvements, and https://github.com/frappe/erpnext/pull/56955.

Changes in this release

Security Medium

Adds permission checks in Payment Entry form for customer/supplier details and linked Account/Bank Account records, restricting view to accessible items.

Adds permission checks in Payment Entry form for customer/supplier details and linked Account/Bank Account records, restricting view to accessible items.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Feature Low

Adds _Project_ field to Invoices in Opening Invoice Creation Tool.

Adds _Project_ field to Invoices in Opening Invoice Creation Tool.

Source: llm_adapter@2026-07-13

Confidence: high

Feature Low

Pick List can be transferred in parts, showing Partially Transferred status until full quantity moves.

Pick List can be transferred in parts, showing Partially Transferred status until full quantity moves.

Source: llm_adapter@2026-07-13

Confidence: high

Feature Low

_Service Level Agreement_ field now only shows agreements for the current document type; existing fields update to same filter after edit.

_Service Level Agreement_ field now only shows agreements for the current document type; existing fields update to same filter after edit.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Feature Low

Work Order status changes to "In Process" when a partial transfer from a Pick List is submitted.

Work Order status changes to "In Process" when a partial transfer from a Pick List is submitted.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Feature Low

Creating/updating a Serial and Batch Bundle from a Pick List row accepts entered details; defaults to current date/time if Posting Date/Time not set.

Creating/updating a Serial and Batch Bundle from a Pick List row accepts entered details; defaults to current date/time if Posting Date/Time not set.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Performance Low

Looks up stock quantities for Delivery Note items and packed items in bulk instead of individually, speeding saves.

Looks up stock quantities for Delivery Note items and packed items in bulk instead of individually, speeding saves.

Source: llm_adapter@2026-07-13

Confidence: high

Performance Low

Auto reorder checks now load Warehouse parent information once, reducing time for nested warehouses.

Auto reorder checks now load Warehouse parent information once, reducing time for nested warehouses.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Updates linked Sales Order when a credit note is submitted from a return Delivery Note, preventing double‑counting of returned items.

Updates linked Sales Order when a credit note is submitted from a return Delivery Note, preventing double‑counting of returned items.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Sets Expense Account on Purchase Receipt and stock‑updating Purchase Invoice to the stock received but not billed account when perpetual inventory is enabled.

Sets Expense Account on Purchase Receipt and stock‑updating Purchase Invoice to the stock received but not billed account when perpetual inventory is enabled.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

When Immutable Ledger is enabled, reverse entries use reversal date or today’s date instead of original voucher date to avoid books‑closed errors.

When Immutable Ledger is enabled, reverse entries use reversal date or today’s date instead of original voucher date to avoid books‑closed errors.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Adds check in Stock Balance report (Show Stock Ageing Data) to prevent crash when batch entries are present.

Adds check in Stock Balance report (Show Stock Ageing Data) to prevent crash when batch entries are present.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Amending a reconciled Payment Entry, Journal Entry, Purchase Invoice, or Sales Invoice clears the Clearance Date on the amended copy.

Amending a reconciled Payment Entry, Journal Entry, Purchase Invoice, or Sales Invoice clears the Clearance Date on the amended copy.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Prevents changing a serialized Item to non‑serialized when a Serial and Batch Bundle still exists; bundle must be deleted or cancelled first.

Prevents changing a serialized Item to non‑serialized when a Serial and Batch Bundle still exists; bundle must be deleted or cancelled first.

Source: llm_adapter@2026-07-13

Confidence: high

Bugfix Medium

Prevents creating serial and batch entries for items not set up for tracking, avoiding save errors on Delivery Note and Sales Invoice.

Prevents creating serial and batch entries for items not set up for tracking, avoiding save errors on Delivery Note and Sales Invoice.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Medium

Uses original stock transaction quantity for recalculating serial and batch bundle quantities, preventing later edits from altering recorded amounts.

Uses original stock transaction quantity for recalculating serial and batch bundle quantities, preventing later edits from altering recorded amounts.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Medium

For internal transfers, Purchase Receipt and Purchase Invoice use source warehouse’s current stock value for receiving warehouse, including transfer costs.

For internal transfers, Purchase Receipt and Purchase Invoice use source warehouse’s current stock value for receiving warehouse, including transfer costs.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Medium

Fixes Process Period Closing Voucher getting stuck in Running and speeds related record lookup, reducing period‑closing errors.

Fixes Process Period Closing Voucher getting stuck in Running and speeds related record lookup, reducing period‑closing errors.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Medium

When Frappe CRM is installed, CRM Settings show Allowed Users only for remote connections and clear saved entries; disables data synchronization when app removed.

When Frappe CRM is installed, CRM Settings show Allowed Users only for remote connections and clear saved entries; disables data synchronization when app removed.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Medium

Stock and Account Value Comparison report reposts purchase entries from original record instead of by item/warehouse, enabling direct update of discrepancies.

Stock and Account Value Comparison report reposts purchase entries from original record instead of by item/warehouse, enabling direct update of discrepancies.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

When editing a Company, users can select Account and Cost Center values even without normal access permissions.

When editing a Company, users can select Account and Cost Center values even without normal access permissions.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Shows Incorrect Entries filter in stock ledger report now correctly lists matching rows and avoids false errors on serial/batch entries without queue details; uses proper rounding.

Shows Incorrect Entries filter in stock ledger report now correctly lists matching rows and avoids false errors on serial/batch entries without queue details; uses proper rounding.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Stock Entry rows now inherit Cost Center from Item Group or Brand defaults instead of always using company default.

Stock Entry rows now inherit Cost Center from Item Group or Brand defaults instead of always using company default.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Disallows saving an opening Journal Entry once a submitted Period Closing Voucher exists for the company.

Disallows saving an opening Journal Entry once a submitted Period Closing Voucher exists for the company.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Payment Reconciliation allows small rounding differences when matching amounts, avoiding errors from tiny decimal mismatches.

Payment Reconciliation allows small rounding differences when matching amounts, avoiding errors from tiny decimal mismatches.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Pricing Rule validation blocks saving a rule that includes both an item template and one of its variants, preventing duplicate‑match warnings later.

Pricing Rule validation blocks saving a rule that includes both an item template and one of its variants, preventing duplicate‑match warnings later.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Changing Routing on a BOM refreshes Operations table with selected routing’s operations, persisting after save.

Changing Routing on a BOM refreshes Operations table with selected routing’s operations, persisting after save.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

When an Item Attribute abbreviation changes, dependent item variants are renamed to match new Item Code and update their Item Name accordingly.

When an Item Attribute abbreviation changes, dependent item variants are renamed to match new Item Code and update their Item Name accordingly.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Bugfix Low

Skips fully delivered Pick List items when creating a Delivery Note, preventing empty lines.

Skips fully delivered Pick List items when creating a Delivery Note, preventing empty lines.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Refactor Low

Moves Company custom field creation to later step during updates, after main setup completes.

Moves Company custom field creation to later step during updates, after main setup completes.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Full changelog

Features

  • The Service Level Agreement field now only shows agreements for the current document type. Existing Service Level Agreement fields also use the same filter after an update. (https://github.com/frappe/erpnext/pull/56955)
  • A Pick List can now be transferred in parts, so you can create more than one Stock Entry from it as stock is moved in stages. It shows a Partially Transferred status until the full quantity is moved, and existing Pick List records that already have transferred stock stay completed. (https://github.com/frappe/erpnext/pull/56986)
  • Adds the Project field to Invoices in Opening Invoice Creation Tool. The selected project appears on the invoice line created from that row. (https://github.com/frappe/erpnext/pull/56400)

Bug Fixes

  • Updates the linked Sales Order when a credit note is submitted from a return Delivery Note, so returned items are no longer counted in the billed amount. (https://github.com/frappe/erpnext/pull/56682)
  • Sets the Expense Account on Purchase Receipt forms and stock-updating Purchase Invoice forms to the stock received but not billed account for stock items when perpetual inventory is enabled. (https://github.com/frappe/erpnext/pull/56692)
  • When Immutable Ledger is enabled, reverse entries now use the reversal date, or today's date if none is entered, instead of the original voucher date, for checks against closed accounting periods. This can prevent a books-closed error when canceling backdated vouchers in an open period. (https://github.com/frappe/erpnext/pull/56751)
  • Adds a check in the "Stock Balance" report when Show Stock Ageing Data is enabled so a batch entry at the top of the stock list is not mistaken for a normal stock quantity. This prevents the report from crashing when some stock entries have batch details and others do not. (https://github.com/frappe/erpnext/pull/56763)
  • Amending a reconciled Payment Entry, Journal Entry, Purchase Invoice, or Sales Invoice clears the Clearance Date on the amended copy, so the previous date does not carry over. (https://github.com/frappe/erpnext/pull/56768)
  • Prevents changing a serialized Item to non-serialized when a Serial and Batch Bundle still exists. The bundle must be deleted or cancelled first before the change can be saved. (https://github.com/frappe/erpnext/pull/56774)
  • Disallows any changes to draft reversal Journal Entry records, keeping the reversal identical to the original entry. (https://github.com/frappe/erpnext/pull/56776)
  • When editing a Company, you can now select Account and Cost Center values even if you do not normally have access to them. (https://github.com/frappe/erpnext/pull/56794)
  • Prevents Delivery Note and Sales Invoice from creating serial and batch entries for items that are not set up for serial or batch tracking. This avoids save errors on those documents. (https://github.com/frappe/erpnext/pull/56802)
  • When stock quantities are recalculated for serial and batch bundles, the system uses the quantity from the original stock transaction instead of the bundle’s recalculated total. This helps prevent later edits to bundle lines from changing the recorded quantity for that transaction. (https://github.com/frappe/erpnext/pull/56834)
  • Fixed-asset items on Purchase Receipt, Purchase Order, and Material Request now use the Expense Account set in the item's Asset Category. When work-in-progress accounting is enabled, they use the work-in-progress account instead of the fixed asset account. (https://github.com/frappe/erpnext/pull/56797)
  • The "Show Incorrect Entries" filter in the stock ledger report now lists the matching rows again. The report also stops marking some serial and batch entries as wrong when no queue details are available, and it uses the correct rounding when comparing stock values and quantities. (https://github.com/frappe/erpnext/pull/56838)
  • For internal transfers, Purchase Receipt and Purchase Invoice documents now use the source warehouse’s current stock value for the receiving warehouse instead of the rate already on the document. Related transfer costs are included in that value. (https://github.com/frappe/erpnext/pull/56812)
  • Stock Entry rows now use the Cost Center from Item Group or Brand defaults when they are set instead of always using the company default. (https://github.com/frappe/erpnext/pull/56862)
  • Fixes an issue where Process Period Closing Voucher can stay stuck in Running when another closing process starts before the first one finishes. It also finds related records faster, which reduces errors while closing periods. (https://github.com/frappe/erpnext/pull/56875)
  • A Journal Entry marked as opening can no longer be saved once a submitted Period Closing Voucher exists for the company. (https://github.com/frappe/erpnext/pull/56096)
  • Updates Payment Reconciliation to allow small rounding differences when matching amounts. This avoids an error when totals differ by only a tiny decimal amount. (https://github.com/frappe/erpnext/pull/56937)
  • Adds a check in Pricing Rule that blocks saving a rule with both an item template and one of its variants. This avoids duplicate matches that can later show a false "Multiple Price Rules exist" message. (https://github.com/frappe/erpnext/pull/56939)
  • Moves the Company custom field creation to a later step during updates, after the rest of the setup completes. (https://github.com/frappe/erpnext/pull/56962)
  • When Frappe CRM is installed on the same site, CRM Settings show Allowed Users only for remote connections and clear any saved entries automatically. Customer creation on the same site now uses the usual site permissions, and Enable Frappe CRM Data Synchronization turns off when the app is removed. (https://github.com/frappe/erpnext/pull/56968)
  • Adds permission checks in the Payment Entry form for customer or supplier details and linked Account and Bank Account records. Users now see only records they can access. (https://github.com/frappe/erpnext/pull/56945)
  • Changing the Routing on a BOM refreshes the Operations table with the selected routing’s operations instead of keeping the previous list. The updated operations stay in place after you save. (https://github.com/frappe/erpnext/pull/56997)
  • When an abbreviation changes in Item Attribute, item variants that use that abbreviation are renamed to match the new Item Code. Their Item Name is updated too, even if the name was changed manually. (https://github.com/frappe/erpnext/pull/56987)
  • Skips Pick List items that are already fully delivered when creating a Delivery Note, so they do not appear again as empty lines. (https://github.com/frappe/erpnext/pull/56985)
  • The related Work Order status now changes to "In Process" when a transfer from a Pick List is submitted, even if it moves only some of the required raw materials. (https://github.com/frappe/erpnext/pull/57003)
  • The "Stock and Account Value Comparison" report now reposts purchase entries from the original purchase record instead of by item and warehouse. This lets the report update the affected purchase record directly when its stock and accounting values differ. (https://github.com/frappe/erpnext/pull/56607)
  • Creating or updating a Serial and Batch Bundle from a Pick List row now accepts the row details entered on the form. When Posting Date or Posting Time is not set, it uses the current date and time. (https://github.com/frappe/erpnext/pull/57014)
  • Prevents saving a Work Order when Planned End Date is before Planned Start Date. (https://github.com/frappe/erpnext/pull/57019)
  • Trend reports now translate the column labels that appear when you group data, so the headings appear in the chosen language instead of staying in English. (https://github.com/frappe/erpnext/pull/57027)
  • "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/57016)
  • Updates Opening Invoice Creation Tool Item so Outstanding Amount uses the selected company’s default currency instead of the global default currency. This shows the matching currency symbol when you work with more than one company. (https://github.com/frappe/erpnext/pull/57008)
  • When you create a Payment Entry from a Payment Request, the payment references section shows the invoice total and remaining balance instead of the payment request amount. (https://github.com/frappe/erpnext/pull/57041)
  • Uses the quantity in stock when calculating prices that depend on quantity for items entered in a different unit of measure. This helps prevent the price from changing after the item is saved. (https://github.com/frappe/erpnext/pull/57051)
  • Sorts open tasks and events in the Activities section by date, so earlier items appear first. (https://github.com/frappe/erpnext/pull/57055)
  • The Philippines Chart of Accounts template no longer marks Customer Deposits as a payable account. New companies created from this template now use Accounts Payable - Trade for supplier bills. (https://github.com/frappe/erpnext/pull/57060)
  • Keeps the rows you entered in Opening Invoice Creation Tool when one invoice cannot be created, so you can correct the error and try again. Shows the success message only when there are no errors. (https://github.com/frappe/erpnext/pull/57057)
  • The "Inactive Customers" report now limits the document types you can choose to supported options, so unsupported selections are less likely to cause errors. (https://github.com/frappe/erpnext/pull/55720)
  • Makes the Represents Company field in Purchase Invoice read-only and keeps it out of access checks, so invoices are not hidden by that field when company-based permissions are in use. (https://github.com/frappe/erpnext/pull/57074)

Performance Improvements

  • Looks up stock quantities for Delivery Note items and packed items in bulk instead of checking them one by one. Saving delivery notes with many items can take less time. (https://github.com/frappe/erpnext/pull/56993)
  • Auto reorder checks now load Warehouse parent information once instead of looking it up again for each Warehouse. This can reduce the time needed for reorder runs when stock is spread across nested warehouses. (https://github.com/frappe/erpnext/pull/57021)

Other Changes

  • Restores the "Sales Person-wise Transaction Summary" report to its previous behavior so it opens on version 15 again. This avoids the error caused by a newer setting that is not available in version 15. (https://github.com/frappe/erpnext/pull/56924)
  • Limits the Item Variant Of filter to items that can have variants, so regular items and item variants no longer appear in the list. (https://github.com/frappe/erpnext/pull/56999)

Authors: @Sudharsanan11, @ravibharathi656, @mihir-kandoi, @Pandiyan5273, @Nihantra-Patel, @rtdany10, @akhtarmohsin, @Shllokkk, @barredterra, @harisansari008, @ruthra-kumar, @Jatin3128, @nabinhait, @ervishnucs, @diptanilsaha, @raghavisruia, @rohitwaghchaure
Reviewers: @khushi8112, @IMS94, @mihir-kandoi, @github-code-quality[bot], @barredterra, @shahzeelahmed, @ruthra-kumar, @nabinhait, @diptanilsaha, @rohitwaghchaure

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.

Changes with the following labels were excluded:

  • skip-release-notes

Changes with the following types were excluded:

  • chore
  • build
  • style
  • refactor
  • docs
  • test
  • ci

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track erpnext

Get notified when new releases ship.

Sign up free

About erpnext

Free and Open Source Enterprise Resource Planning (ERP)

All releases →

Related context

Beta — feedback welcome: [email protected]