# March 2025

## Monthly summary / tl;dr

### New features 🚀

* There’s now full **support for pre-payments** (e.g. the user pay a limited amount in advance).
* Also **customer reservations** is now possible, with smart functions to inform the customer once the reserved product has arrived, all done while taking the receivement.&#x20;
* You can now **print an order as a PDF** directly from an open sale.&#x20;
* **Inventory transfers between warehouses** is now possible, and it’s also possible to set different warehouses for individual order items within the same delivery.
* The **purchasing** flow has been upgraded with support for **automatic suggestions based on min/max** stock levels, editable purchase orders until fully received, and a new, simplified receival dialog.
* In the Backoffice, you’ll find new tools for **managing printers**, including printing test pages, among several other stings.

*+ much more! Check out the full list below.*

### &#x20;Improved 👌

* Order handling—particularly for scenarios like Click & Collect—has been streamlined, making it easier to mark steps as completed and notify customers.
* The delivery address dialog is more user-friendly, and the system now supports smarter warehouse logic per order item.
* Multiple UI improvements have been made across sales and Backoffice views, including better visuals in touch sales, smarter dropdowns, and simplified navigation.
* Monthly reports for sales and inventory have been improved, and various elements in device and printer linking have been refined for smoother setup.
* There’s also better handling of product and campaign rules, making it easier to maintain accurate stock and pricing across stores.
* Search functionality is more robust, including for suppliers and deliveries.
* It’s now possible to modify warehouse selections for deliveries and remove items from deliveries even when in early stages.

*+ much more! Check out the full list below.*

### Fixed 🤦‍♂️

A long list of bug fixes that improved reliability and user experience, like:

* Several issues with payment dialogs, settlement views, and discount logic have been resolved.
* Partial settlements now behave correctly.
* Orders using reserved items now adjust stock properly.
* Issues affecting EHF invoice exports, label printing, and product reservations have also been fixed.

*+ much more! Check out the full list below.*

***

## 2025-03-31

### **Added**

* Print order as PDF on an open sale
* Support for inventory transfer between warehouses

### **Improved / changed**

* Improved order handling with the ability to more easily notify the customer and mark handling as completed (typically for Click & Collect etc.)
* Delivery state "Not delivered" is deprecated and replaced with "New" and "Started"
* Pre-payment info in parked/canceled order view
* Moved `DeviceLink` code to the top of the device page
* Option to set different warehouse on order items within the same delivery
* Added help text for payment method key
* Improved "deliver to address" dialog

### **Fixed**

* It's now possible to change the warehouse on a delivery or its order items
* Fixed issue where it wasn't possible to remove items from a delivery in status `New` or `Started`, even though it should have been allowed
* Users are now required to select a discount reason when setting a discount on an order, if at least one reason exists
* Improved dropdown menu so text doesn't overflow
* Pressing Enter in the search field (open sale – keyboard mode) now opens the product search dialog
* Settled order dialog failed to open if any items had `ReservationType: Purchase` or `RequestPurchase` – this is now fixed
* Supplier search now works in supplier dropdowns
* Fixed store payment issuer list, which previously failed to load correctly

## 2025-03-28

### **Improved / changed**

* Dintero: removed `dataTimeLayout` for `handleCallbackRequest`, now using `capture.CreatedAt` instead
* Invoice no longer has `requireExclusiveUse`, so it can now be combined with other payment methods

## 2025-03-27

### **Fixed**

* Stripe callback will now always capture the amount

## 2025-03-26

### **Fixed**

* `PurchaseOrderUid` is now included in the notification API response
* Settlements without transactions will now be added to receipts

## 2025-03-25

### **Improved / changed**

* \[Backoffice] Adjusted printer layouts

## 2025-03-25

### **Added**

* \[Backoffice] Implemented support for printer search
* New endpoint: `POST /tenants/{{tenantUid}}/printers/search`
* New API endpoint: `POST /tenants/{{tenantUid}}/printers/{{printerUid}}/test`
* Implemented printer testing – supports ESCPOS, ZPL, and PDF
* Settlement search
* New API endpoint: `PUT /tenants/{tenantUid}/stores/{storeUid}/receipts/{receiptUid}`
* New API endpoint: `GET /tenants/{tenantUid}/stores/{storeUid}/receipts/{receiptUid}`
* Added Finnish receipt and email templates
* Printing of pickup labels for order items
* Added printer information to the `/device` endpoint
* New endpoint: `/tenants/{tenantUid}/orders/reservations` to update reservation type on order items to `PURCHASEORDER` or `WAREHOUSE`
* New field `description` to the device info in payment method response
* New batch endpoint: set stock for a list of products in a warehouse
* \[Backoffice] Implemented NiceUID generation for device and printer
* Added `HasPaymentBalanceOutstanding` request field to settlement search

### **Improved / changed**

* \[Backoffice] Improved Monthly Sales Report
* Added EHF status check
* \[Backoffice] Improved Monthly Inventory Report
* \[CHORE] New table `order_settlement_transactions` to track captured and refunded transactions
* RabbitMQ[^1] can now be disabled 🐰
* Device code is now checked case-insensitively when linking a device
* Renamed table `order_settlement_transactions` to `order_settlement_transaction_logs`
* Purchase orders are no longer automatically set to `RECEIVED` or `CLOSED`
* Webhook `ORDER_HANDLING_STATE_CHANGED` now includes `orderHandling`
* Inventory check on orders now includes all products for the SKU
* Improved query performance for listing campaign products
* Devices can now be filtered by `storeUid`
* Delivery search now properly supports `storeUids` filtering
* Campaign update now disallows `CHEAPEST` type without required criteria
* Added validation for `flowretail_cashdrawer` when updating tills
* It is now possible to download order receipt using a device without a till
* Better error message if country code is missing on supplier

### Fixed

* Verifone: payment no longer fails when timeout is reached
* Fixed response structure for purchase requests on order lines
* Delivery is now properly removed when deleting an order, and `deliveryUids` are removed when deleting a delivery
* Warehouse is no longer kept on order deliveries after deletion
* Fixed 400-error when creating purchases based on min/max with no lines
* `CreateSplitOrderProductLines` now correctly accounts for discounts
* Prevented infinite loop on update/create customer when Omnium integration is active
* Corrected EHF calculation for discounted invoice lines
* Fixed table cell spacing in receipt CSS
* `PurchaseOrderQuantity` is now prevented from being negative

### Removed

* Removed deprecated field `requireExclusiveUse` from device info payment method response – clients must now use the field in the `requirements` object

## 2025-03-24

### Added

* Support for **package / bundle products**
* **Purchase orders** can now be automatically **pre-populated based on min/max** stock levels for a specified warehouse
* A new **simplified dialog** is used for receieval **of purchase orders**
* (Beta) Administration of **customer reservations** (order lines marked as needing purchase)
* **Filters** added **to the product** page
* New button in the order **receipt dialog to print** order as PDF
* (Beta) Order with **pre/part-payments**
* \[Backoffice] FlowRetail CashDrawer service on tills
* \[Backoffice] Printers tab added on the store page for store-located printers
* \[Backoffice] **Devices tab** on the store page for devices located in the store
* \[Backoffice] **Printer test page** is now available
* \[Backoffice] **Invoice** **outstanding Excel report**
* \[Assistant] Ability to **create** and **edit purchase orders**

### **Improved / changed**

* \[Backoffice] Till device information updated – revoke/authorize device removed
* \[Backoffice] Product group search-scope selector added to product group create/edit dialog
* \[Assistant] Ability to filter purchase orders by product
* \[Assistant] Ability to filter orders by product
* Cost price now visible in touch mode sale when pressing the CM (Consumer Margin) button
* Configurable products now have a "Show variants" option on the product page
* Payment description field
* The Purchase and Receive page now includes a filter for purchase order status
* Filters in product search are now preserved when selecting a variant for a configurable product
* Purchase orders can now be edited until fully received or closed
* Confirmation dialog in keyboard mode when activating VAT-Free sale
* GTIN added to product details dialog
* Long-press to copy SKU on the product list page
* Settled order dialog now shows in-stock quantity for items not delivered
* Display messages on a terminated settlement are now shown in the payment dialog
* Improved tabs in the product info dialog
* \[Assistant] Purchase orders can now be accessed from the product details page
* \[Assistant] Ability to zoom in on full-screen product images
* \[Assistant] Product restrictions are now visible on the product details page
* Purchase order product search now hides products that are not allowed to be purchased
* Archived purchase orders can now be found in the Purchase page by enabling relevant statuses in the filter
* Mystats now displays the correct currency
* Simultaneously update the ETA for all products in a purchase order
* Shortcut for changing estimated delivery date in purchase orders is now "E" (previously "D") to avoid conflict with the "show details" shortcut
* Purchase order search results now only show orders from the same organization
* Store list response is now filtered to only include stores from the same organization
* In touch mode, open sales of type "Offer" now show a green chip
* Negative amounts are now displayed in red in order lists
* Supplier toggle in product search (for adding products to purchase orders) is now enabled by default
* \[Backoffice] Till number info shown when creating or editing a till
* \[Backoffice] Pricelist management has been removed – now managed in Client
* \[Assistant] General UI improvements
* \[Assistant] Minimum supported iOS version is now 15.5

### Fixed

* Partial settlements were not shown in the payment dialog, and could not be deleted – now fixed
* It was not possible to add variants to internal purchase orders – now works as expected
* Adding a note to an order line in keyboard mode made the order line itself invisible – this is fixed
* Keyboard shortcuts did not work in the payment success screen
* If a new purchase order failed to be created, the app would be stuck until restart – now resolved
* Discounts can now be applied with precision
* RMA orders created from a purchase order didn’t set warehouse on items, so stock wasn't adjusted – this is now handled
* \[Backoffice] Various bugs fixed in report forms
* \[Backoffice] Product group, brand, and store lookup lists now include all items
* \[Backoffice] "New" buttons moved to the top of the page for device, printer, and till
* \[Backoffice] Added multi-store dropdown for optional organization filter
* \[Assistant] Camera scanner now only scans items visible in the viewfinder

## 2025-03-14

### **Fixed**

* Fixed error when creating a delivery with a non-physical freight item
* Forced `NON_PHYSICAL` products to never create deliveries, even if set to be reserved

## 2025-03-11

### **Added**

* Implemented `flowretail_cashdrawer` protocol
* New field `hideNotAllowPurchase` in product search to hide all products not allowed to be purchased from supplier
* Network print support added
* List products that are requested for purchase, ordered by name
* Discount handling added for package products
* New API endpoint: `POST /tenants/{tenantUid}/stores/{storeUid}/orders/{orderUid}/pre-payments`
* Implemented new webhook: `ORDER_HANDLING_STATE_CHANGED`
* Initial component price now supported for package products

### **Improved / changed**

* Receipt email subject now uses tenant language
* `OrganizationFilter` in search for purchase orders
* Support for payment on invoice in Visma Business accounting report
* Variant information is now printed on product labels
* Order number is added to EHF file name
* Visma Business accounting report now uses receipts instead of orders

### **Fixed**

* EHF XML creation bugs: Norwegian org. number and line price excluding VAT
* `PurchaseOrder`: set `expectedDeliveryDate` to today when using `AutoOrderProposal`
* Fixed package component price calculation
* Customer contacts can now be created with a custom UID
* Allowed actions are now properly set for package product order lines
* `reservationType` was not set when creating order lines – now it is
* Purchase: fixed wrong status after deletion and incorrect `purchasedQty` in product search
* Package product itself is no longer deliverable – only its components are
* Correct codepage is now used when printing exchange notes on ESCPOS printers

## 2025-03-04

### **Added**

* Ability to **create VAT-Free sales**
* View, create, and **edit printers**
* **Select printer** for a **device**
* "**Send invoices externally**" tenant setting
* **Payment method parameters** for **invoice**
* ESCPOS: Open connected cash drawer
* Verifone: Added context with timeout in `Payment` and `LastTransaction`
* New API endpoint: `GET /tenants/{tenantUid}/stores/{storeUid}/orders/{orderUid}/items/{orderItemUid}/addons`
* New `LedgerType`: `CUSTOMER_LEDGER`
* New webhook: `ORDER_RECEIPT_SETTLED`
* It is now possible to **manually send an invoice through EHF** using `ehf-invoice --send`

### **Improved / changed**

* Lines now exclude VAT when order is marked as `vatFree = true`
* Package data now included in product response
* Added `externalmsn` param in `logTransaction` for extended logging
* Verifone: Added internal status `POLLING` to trigger `GetSettlementStatusFromExternSource` on every fetch
* Verifone: Mapped `DEVICEOUT` to `POLLING` status
* General improvements to search
* Verifone: Updated handling of `DeviceOUT` status
* Add, update, and delete of customer contacts now requires tenant access level `Backoffice/Avdelingsleder`
* Custom parameters (e.g., reference number) can now be added to the invoice payment method
* Response from order receipt search now includes additional fields
* All users with access to a tenant can now search in purchase orders
* Campaign codes are now case-insensitive

### **Fixed**

* External customer search now works reliably across all scenarios
* Fixed pagination in organization list
* Fixed pagination in stocktaking product control list
* Verifone: added unique `refServiceID` for `getLastTransaction`
* Campaign price and name now show on product details for store – implemented in `ListCategoriesForStore` and `GetCategoryDetailsForStore`
* Fixed pluralization error and 500 error in purchase search
* Delivery of `NON_PHYSICAL` products is now correctly handled
* Fixed EHF XML creation: Norwegian org. number and line price ex VAT

### Removed

* Verifone: removed unused async payment/refund services and handlers

[^1]: RabbitMQ is used to ensure smooth and reliable communication between different parts of the system, handling tasks in the background so everything works efficiently without interruptions.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.flowretail.com/docs/2025/march-2025.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
