All Releases
February 19, 2026 February 12, 2026 January 22, 2026 February 5, 2026 January 29, 2026 January 15, 2026 January 8, 2026 January 1, 2026 December 25, 2025 December 18, 2025 December 11, 2025 December 4, 2025 November 27, 2025 November 20, 2025 November 13, 2025 November 6, 2025 October 30, 2025 October 23, 2025 October 16, 2025 October 9, 2025 October 2, 2025 September 25, 2025 September 18, 2025 September 11, 2025 September 4, 2025 August 28, 2025 August 21, 2025 August 14, 2025 August 7, 2025 July 31, 2025 July 24, 2025 July 17, 2025 July 10, 2025 July 3, 2025 June 26, 2025 June 19, 2025 June 12, 2025 June 5, 2025 May 29, 2025 May 22, 2025 May 15, 2025 May 8, 2025 May 1, 2025 April 24, 2025 April 17, 2025 April 10, 2025 April 3, 2025 March 27, 2025 March 20, 2025 March 13, 2025 March 6, 2025 February 27, 2025 February 20, 2025 February 13, 2025 February 6, 2025 January 30, 2025 January 23, 2025 January 16, 2025 January 9, 2025 January 2, 2025 December 26, 2024 December 19, 2024 December 12, 2024 November 28, 2024 November 21, 2024 November 14, 2024 November 7, 2024 October 31, 2024 October 24, 2024 October 17, 2024 October 10, 2024 October 3, 2024 September 26, 2024 September 19, 2024 September 12, 2024 September 5, 2024 August 29, 2024 August 22, 2024 August 15, 2024 August 8, 2024 August 1, 2024 July 25, 2024 July 18, 2024 July 11, 2024 June 27, 2024 June 20, 2024 June 13, 2024 June 6, 2024 May 30, 2024 May 23, 2024 May 16, 2024 May 9, 2024 May 2, 2024 April 25, 2024 April 18, 2024 April 11, 2024 April 4, 2024 March 28, 2024 March 21, 2024 March 14, 2024 March 7, 2024 February 29, 2024 February 22, 2024 February 15, 2024 February 8, 2024 February 1, 2024 January 25, 2024 January 18, 2024 January 11, 2024 January 4, 2024 December 21, 2023 December 14, 2023 December 7, 2023 November 30, 2023 November 16, 2023 November 9, 2023 November 2, 2023 October 26, 2023 October 19, 2023 October 12, 2023 October 5, 2023 September 28, 2023 September 21, 2023 September 14, 2023 September 7, 2023 August 31, 2023 August 24, 2023 August 17, 2023 August 10, 2023 August 3, 2023 July 27, 2023 July 20, 2023 July 13, 2023 July 6, 2023 June 29, 2023 June 22, 2023 June 15, 2023 June 8, 2023 June 1, 2023 May 25, 2023 May 18, 2023 May 11, 2023 May 4, 2023 April 27, 2023 April 20, 2023 April 13, 2023 April 6, 2023 March 30, 2023 March 23, 2023 March 16, 2023 March 9, 2023 March 2, 2023 February 23, 2023 February 16, 2023 February 9, 2023 February 2, 2023 January, 2023 December, 2022 November, 2022 October, 2022 September, 2022 August, 2022 July, 2022 June, 2022 May, 2022 April, 2022 March, 2022 February, 2022 January, 2022 December, 2021 November, 2021 October, 2021 September, 2021 August, 2021 July, 2021 June, 2021 May, 2021 April, 2021 March, 2021 February, 2021 January, 2021 December, 2020
View all releases

January 1, 2026 release notes

Highlights

Mobile App

You can now create product returns directly from the mobile app. To start a return, open the three horizontal dots menu, select Returns, and tap the + icon. Enter the product code and quantity to submit the request.

The app also lets you view details of created returns and quickly find a specific one using search. This helps teams track return activity in real time without switching tools.

For additional context, you can upload a picture to a return, supporting clearer documentation and faster follow-up.

Availability: Available in the latest version of the mobile app.

3298_image_20250401_121741__1_.png

Operations Portal

Company Budget Management Now Available in Operations Portal

Users can now create and manage budgets directly from company detail pages through a streamlined workflow. The new budget creation process is accessible via the "More" dropdown menu and supports configurable parameters including budget type (Total Spend), status tracking (Invoiced/Paid), and custom date ranges. Once created, budgets automatically appear in a dedicated Budgets tab on the company details page.

The feature includes built-in editing capabilities, allowing users to modify budget parameters directly from the budget grid view or through individual budget details. Users can also remove budgets entirely through the grid interface, providing complete budget lifecycle management within the Operations Portal.

View the demonstration video for a complete walkthrough of creating and managing company budgets.

https://youtu.be/0hUTd98F3nI

Tickets

  1. KOD-24897: Customer Mobile App - Add Returns Functionality
  2. KOD-27128: Add Automated Invoice and Statement Delivery documentation to Kodaris.com help pages
  3. KOD-27365: Add server side export to company cross references screen
    • Regression Tests
    • Case 1
      • Go to the Operations Portal.
      • Navigate to Companies > Company > Cross References.
      • Confirm that:
      • The page loads successfully.
      • All grid data is displayed correctly.
      • All elements are available for interaction.
    • Tests
    • Case 1
      • Go to the Operations Portal.
      • Navigate to Companies > Company > Cross References.
      • On the Cross References page, click File > Export > Save.
      • Open the downloaded file.
      • Confirm that:
      • The file is downloaded successfully.
      • The data in the file matches the data displayed in the grid.
  4. KOD-27668: Budgets - Add UX for adding company level budgets
    • Regression Tests
    • Case 1
      • Very that the actions and the navbar on a company page still works.
      • Open the actions menu and test a few actions.
      • On the navbar try to going into the budget and out of it and navigating between non-budget related items.
      • The navbar should show the budget when you navigate into it but then hide it back under “more" when you navigate out of the budget.
    • Tests
    • Case 1
      • Validate that when navigating into a company, such as /companies/1669 on the operations portal that the tab navbar has, on the “more" dropdown, the “Budgets" tab.
      • Click on the Budgets option. The budgets table should open, the address should be /companies/1669/budgets where 1669 is the Company ID.
      • The tabs should display the Budgets tab, instead of hiding it under the “more" dropdown and the more dropdown must not contain the Budgets option.
      • Change tabs and validate that the Budgets is unselected and removed form the tabs and goes back into the “More" dropdown.
    • Case 2
      • Create the budget for a company. In the companies list in the toolbar click the “more" button and click “add budget".
      • The name for the budget is arbitrary (for naming the budget) but mandatory, you can rename it to test or leave the default company name.
      • The Budget type available currently from core config is only “Total Spend" so select it.
      • The default status/restriction type is “Invoiced, Paid", you can leave either or both so the calculation finds both, if none is left the calculation won’t find any.
      • The start and end dates define the range.
      • Before clicking “Add" leave the network tab open on the browser to validate that not only the budget is created but also that the calculate action endpoint is called so the initial calculation is started.
      • After adding you should be redirected to the budget.
      • Because budgets can also be added inline on the table try to fill the new line with the new budget information on the budgets list page and hit enter to add it from there without using the add budget dialog.
    • Case 3
      • Edit and delete rows on the budgets list table and validate that the rows are edited properly and the table is updated with the latest value.
    • Case 4
      • Navigate from the budgets list into the budget detail page. Edit information and validate if the changes are applied (if you want to look at the network tab it should make a PATCH call).
      • The navigate back to the budgets list to validate that the PATCH works and the edited value is the current value.
    • Case 5
      • In this test we want to add “Received" to the budget order type so that it is picked up when a new order is placed even before invoicing and paying.
      • Also for testing right now we need to manually add the date to Extra3 and the date on Extra3 for the order should be within the budget start and end range.
      • Take note of the current spend amount for the budget. Place a new order. On the companies order double check the order value, after the next few steps the current spend amount should have the new order value added to it.
      • In the order go into “more" and “development" and add a date to Extra3, the date should fall between the start and end date for the budget.
      • Then on the budget click and more and click calculate. After a few moments refresh the page to see if the new current spend amount matches the previous spend amount + the new order after calculating.
  5. KOD-28073: Store Credit Testing / Documentation
  6. KOD-28270: Implementation - Integration
  7. KOD-28617: Create abandoned cart email template
  8. KOD-28974: Configure Freight Charges-Credit Card vs Terms Customers
    • Regression Tests
    • Case 1
      • Verify that the Shipping Methods functionality is working correctly in step 3 of the checkout (displayed according to the methods added in the operation portal).
      • Verify that the Rates functionality for Shipping Methods is working correctly (displayed according to the rates added in the operation portal). The shipping total includes the shipping cost.
    • Tests
    • Case 1
      • Verify that when the companyCanUseCreditCards setting is enabled in Shipping Methods, rates are displayed in step 3 of the checkout process according to the rates added in the operation portal, and the shipping total includes the shipping cost.
      • Verify that when the companyCanUseCreditCards setting is disabled in Shipping Methods, rates are not displayed for Shipping Methods, and the order total does not include the shipping cost.
  9. KOD-29010: Order & AP Automation - Development Environment UX
    • Regression Tests
    • Case 1
      • Go to Account Payable → Vendors.
      • Open a random vendor entity.
      • Check that the header with navigation looks good, responsive works well and there’s no any issues with it.
      • Go to Customers → Customers.
      • Open a random customer entity.
      • Check that the header with navigation looks good, responsive works well and there’s no any issues with it.
    • Tests
    • Case 1
      • Go to Account Payable → Vendors.
      • Open a random Vendor entity.
      • In the entity tabs select the “Automation” tab.
      • Check that the layout looks good, responsive works well.
      • Go to Customers → Customers.
      • Open a random Customer entity.
      • In the entity tabs select “Automation” tab.
      • Check that the layout looks good, responsive works well.
    • Case 2
      • On the Vendor automation page check, that in the top right corner is a “Create Analysis Script” button.
      • Click on it and set the next value for script for test to see the results UI:
        • invoice.vendorName = "TEST_VENDOR_NAME" ;
        • invoice.invoiceDate = '2023-01-01' ;
        • invoice.reference = 'PO-998877' ;
        • invoice.totalAmount = 1110;
        • invoice.currency = 'USD' ;
        • invoice.dueDate = '2023-01-02' ;
        • invoiceItems.add({
        • description: 'Software License' ,
        • quantity: 1,
        • rate: 250,
        • total: 250
        • });
        • invoiceItems.add({
        • description: 'Consulting Services' ,
        • quantity: 10,
        • rate: 100,
        • total: 1000
        • });
      • Save it. Go back to the “Vendor Automation” page.
      • Try to upload a new file. Check that after file analysis finishes we have the same values in the UI as we set in script.
      • Go to the script page and try to update some values, for example vendorName and reference . Go back to the “Vendor Automation” page.
      • Try to click on the “Re-analyze” button right under the document preview block.
      • After analysis finish check that the values that you changed in the script, also changed in the result after re-analyzing.
      • Try to click the “Download” button, in the top right corner. You will download the results zip file. Unzip it, check that there’s the same names of files according to “Analysis Methods” selected before analysis started.
      • In the bottom left corner click on “Upload Document”. Try to upload one more document for a test. Check that after file analyze, the analyze document in the preview is updated.
    • Case 3
      • On the “Vendor Automation” page, click on “Update Analysis Script” button. Then go to Revisions. Try to restore to the first revision of the script. Check that the value of the script changed.
      • Go back to the revisions page and restore to the most recent revision. Check that the script is restored correctly.
      • Go to The revisions tab, open specific revision.
      • Check that the code in the revision is read-only. Go to the Detail tab, check that content there rendered correctly.
      • Try to run “Restore” revision from this point. Check that the script changed correctly after restoring.
    • Case 4
      • On the Customer automation page check that in the top right corner is a “Create Analysis Script” button.
      • Click on it and set the next value for script for test to see the results UI:
        • order.vendorName = "TEST_VENDOR_NAME" ;
        • order.invoiceDate = '2023-01-01' ;
        • order.reference = 'PO-998877' ;
        • order.totalAmount = 1110;
        • order.currency = 'USD' ;
        • order.dueDate = '2023-01-02' ;
        • orderItems.add({
        • description: 'Software License' ,
        • quantity: 1,
        • rate: 250,
        • total: 250
        • });
        • orderItems.add({
        • description: 'Consulting Services' ,
        • quantity: 10,
        • rate: 100,
        • total: 1000
        • });
      • Save it. Go back to the “Customer Automation” page.
      • Try to upload a new file. Check that after file analysis finishes we have the same values in the UI as we set in script.
      • Go to the script page and try to update some values, for example vendorName and reference . Go back to “Customer Automation” page.
      • Try to click on the “Re-analyze” button right under the document preview block.
      • After analysis finish check that the values that you changed in the script, also changed in the result after re-analyzing.
      • Try to click “Download” button, in the top right corner. You will download the results zip file. Unzip it, check that there’s the same names of files according to “Analysis Methods” selected before analysis started.
      • In the bottom left corner click on the “Upload Document”. Check that initial view opened.
    • Case 5
      • On the “Customer Automation” page, click on “Update Analysis Script” button. Then go to Revisions. Try to restore to the first revision of the script. Check that the value of the script changed.
      • Go back to the revisions page and restore to the most recent revision. Check that the script is restored correctly.
      • Go to The revisions tab, open specific revision.
      • Check that the code in the revision is read-only. Go to the Detail tab, check that content there rendered correctly.
      • Try to run “Restore” revision from this point. Check that the script changed correctly after restoring.
    • Case 6
      • Go to the Automation page of Vendor/Customer.
      • Open the “Network” Tab in the Developer Tools.
      • Try to change the “Enable Analysis” selected value. Check that in the network */setting request appeared.
      • Try to change the value of “Enable Analysis” back to the previous value. Check that at this time the /vendorInvoiceDocumentAnalysisEnabled or /customerOrderDocumentAnalysisEnabled request appeared.
      • Try to do the same with “Analysis methods” select. In the first time we will see /setting request. In the second time it should be /vendorInvoicePdfDocumentAnalysisMethods or */customerOrderPdfDocumentAnalysisMethods request.
      • After changing these fields try to reload the page and after reload the values of the selects should be the same as before the page reload.
  10. KOD-29064: Update bulk endpoints for adding products to category
  11. KOD-29095: AP- Add Payment Terms Description Next to Code in Vendor Invoice Details
    • Regression Tests
    • Case 1
      • Open an existing vendor invoice with payment terms.
      • Change payment term to a different value.
      • Save and reload the invoice.
      • Clear payment terms field.
      • Test other invoice operations (update amounts, assignees, status).
      • Expected Results:
      • Payment term code and description save/load correctly.
      • All other vendor invoice fields function normally.
      • No errors during save/update operations.
    • Tests
    • Case 1
      • Navigate to Vendor Invoices list.
      • Open any existing Vendor Invoice Details screen.
      • Locate the "Payment Terms" section in the right sidebar.
      • Click on the "Terms" autocomplete field.
      • Observe the dropdown options that appear.
      • Select a payment term from the dropdown.
      • Observe the selected value in the input field.
      • Observe the "Terms Description" section below the input field (if description available).
      • Expected Results:
      • Dropdown display: Each option in the dropdown shows both the code and description (if available) in separate columns.
      • Input field display: After selection, the input field shows only the code.
      • Description section: Below the input field, a separate section displays "Terms Description" header with the full description text.
      • If a payment term code has no description, only the code is displayed without error.
  12. KOD-29172: Replatform - Implement CMS section to schedule visibility of content
    • Regression Tests
    • Case 1
      • Confirm that existing CMS blocks continue to render normally (without any errors).
    • Tests
    • Case 1
      • Confirm that the section block can be added to a page and that it renders without any errors.
      • Confirm that content (text, images, or any other blocks) can be added inside the section block and that it displays correctly on the page.
      • Confirm that when the start date/time is set in the future , the section block is not displayed on the preview site.
      • Confirm that when the end date/time is set in the past , the section block is not displayed on the preview site.
      • Confirm that the section block is displayed correctly when the start date/time is earlier than the current date/time and the end date/time is later than the current date/time.
  13. KOD-29173: Cart Disappearing
  14. KOD-29182: New price discrepancies after updating price engine to v7
  15. KOD-29197: Kodaris - Add new logo to the website
    • Regression Tests
    • Case 1
      • Check that the website footer still looks as normal without issues.
  16. KOD-29199: Adding pagination for /api/system/customerGroup{id}/company/list POST endpoint
  17. KOD-29293: OA: New Customer Parser Setup
  18. KOD-29308: Implement new Order/AP Automation Pattern in Job
  19. KOD-29321: Update Logo for Printed Catalog
    • Regression Tests
    • Case 1
      • Navigate to one of the catalogs → Make sure you can still print out a catalog.
    • Tests
    • Case 1
      • Print out a catalog and notice that the logo is now the distribution one and the color is their primary green color.
  20. KOD-29324: Create Commerce Host
  21. KOD-29326: Page URL structure question - Including parent hierarchy
  22. KOD-29335: Add shipto setting to a company address as soon as it gets pushed to CSD
  23. KOD-29338: Kodaris - Inventory Conversion importer (icss)
  24. KOD-29339: Stock line - Displaying as Non-stock
  25. KOD-29348: Add Credit App PDF to User
  26. KOD-29352: Order Unit conversion CSD Issue
    • Regression Tests
    • Case 1
      • Verify that order creation with products that have Unit Conversions works correctly.
      • Verify that the Unit Conversions type is displayed correctly on the search page, in the cart, and in the items tab in the operations portal after creation (unitSell field).
      • Verify that there are no issues synchronizing with the ERP and that the order is correctly sent to the ERP.
    • Tests
    • Case 1
      • Check that after synchronization with the ERP and receiving data from the ERP, the unitSell values ​​have not changed.
  27. KOD-29353: Parser length fix
  28. KOD-29354: Add Assignees to Content Pages
    • Regression Tests
    • Case 1
      • Confirm that endpoint /api/user/employee/configuration still works.
    • Tests
    • Case 1
      • Confirm setting contentPagesAssignmentTypes exist and can be updated.
    • Case 2
      • Update setting in case 1 to have comma separated values.
      • Confirm that those values are returned from /api/user/employee/configuration endpoint
  29. KOD-29355: Kodaris - Put Order Change System Events on Order System Events Screen
  30. KOD-29363: Automate Parser - Picking up invalid line
  31. KOD-29368: Kodaris Community Show - Episode link issue
    • Regression Tests
    • Case 1
      • Check that the podcasts page still works as expected without issues.
    • Tests
    • Case 1
      • When clicking the ‘Open Episode’ link for any episode, it should take you to that episode, not the latest.
  32. KOD-29373: Confirm getOrderItemHistory endpoint is asynchronous
    • Tests
    • Case 1
      • After clicking Add Item , I select the last product (known to have order history).
      • Immediately after selection, the focus automatically moves to the Qty input, which triggers the /api/system/order/getOrderItemHistory call by default.
      • While the API request is in progress, I click a number to change the quantity and the input remains fully responsive. The quantity value is updated immediately, without any delay or blocking.
      • The history panel appears only after the API response is received, confirming that the endpoint execution does not block user interaction.
    • Case 2
      • The product is selected in the Add Product input to load all required product data.
      • The Qty input is then defocused to reset the state.
      • With network throttling set to 3G , the /api/system/order/getOrderItemHistory request is triggered by focusing on the Qty input.
      • While the API request is in progress, interactions with other parts of the page remain fully responsive and are not blocked.
      • This confirms that the endpoint execution does not block the UI even under slow network conditions.
    • Case 3
      • The Add Product field was used to load all required search data.
      • Network throttling was then switched to 3G , and multiple different products were added rapidly without waiting for previous API responses.
      • All products were successfully added one by one while the requests were still in progress.
      • The page remained fully responsive throughout the process, showing only per-item loading behavior and no global UI blocking or errors.
      • This confirms that rapid item entry is supported even under slow network conditions.
    • Сase 4
      • A temporary 1000ms timeout with a 2000ms delay was added to simulate server errors (5xx/timeout).
      • When the Add Product endpoint was triggered, an error occurred, but the user was still able to continue adding products to the order without interruption.
      • Focus remained on the input, and the UI stayed fully responsive.
      • This confirms that error and timeout handling is non-blocking , and the user workflow is not hindered even under slow or failing API conditions.
      • I used Performance recording in DevTools to see how the browser handled the request and user actions.
      • Selected a product in the Add Item field to load all necessary information.
      • Removed focus from the field.
      • Turned on 3G network throttling in Chrome DevTools.
      • Focused the quantity input to trigger the getOrderItemHistory endpoint.
      • While the request was in progress, typed different numbers in the quantity field to check if the page was still responsive.
      • Result:
      • The API request took over 4 seconds to complete.
      • The main thread kept processing typing at the same time.
      • INP was 23ms, showing immediate response to user interactions.
      • The page remained fully responsive, allowing the user to continue adding products and interacting with the UI without delays.
  33. KOD-29380: Supersede Product Redirect Space Issue
  34. KOD-29394: Replace /api/system/customerGroup{id}/company/list POST endpoint
    • Regression Tests
    • Case 1
      • Verify that the Company Group screen in the operation portal appears correctly.
      • Verify that the assignee company functions (add/remove) work correctly.
      • Verify that there are no errors when navigating to the Company Group screen in the console.
    • Tests
    • Case 1
      • Verify that the /api/system/customerGroup{id}/company/listV2 POST endpoint is called when navigating to the Company Group screen.
      • Verify that the grid on the Company Group page is paginated (50 items are displayed per page).
      • Verify that the grid loads quickly with a large number of assignee companies.
      • Verify that the add/delete functions work quickly with a large number of assignee companies.