# February 2026

## 2026-02-24

### Added

* New endpoint for **order search counts**: `POST /tenants/{tenantUid}/orders/search/counts` — get order counts by search queries without fetching full order data.
* Support for **downloading payment receipts as PDF**.
* Client: **Danish**, **Swedish**, and **Nynorsk** translations added. Hej! Hei! Heisann!

### Improved

* **Product search** now supports operators `&` (AND), `|` (OR), and `!` (NOT) for more specific and powerful searches.
* NETS payment integration now allows **unreferenced refunds**, similar to how Adyen already works — enabling refunds without requiring a reference to the original transaction.
* Adjustments to **ESCPOS receipt print** formatting.

### Fixed

* **Product media batch update**: Fixed an error when updating existing images via `POST /products/{productUid}/media/batch`.
* **Required options** now show correctly on store product search.
* **Order settlement**: Added null checks for Till and StorePaymentMethod to prevent crashes when processing settlements for Adyen, Stripe, Softpay, and cash payment methods.
* Vipps: Now uses the actual **settlement amount** for capture operations instead of a hardcoded 0. That's... kind of important.
* Vipps callback: Added validation to ensure callback amounts match settlement amounts.
* Client: Fixed **revenue percentage** value in quick totals report.
* Client: **Confirmed order state** could be lost while interacting with an open order — now it sticks.
* Client: Orders with multiple invoices now properly show a selection dialog for **Pay Invoice**, **Manual Payment**, and **View Payments** actions.

## 2026-02-19

### Added

* **Variant property labels** now visible on the main product search page and in sales view when your search matches an exact product. No more guessing which variant is which.
* **Purchase orders** now fully support **package products** — both adding and receiving.
* Admin: **Device name** now shown in the till list, and you can **quickly create a new till** when setting up a new device.
* Client: **Confirmation dialog** when updating a customer's email address for receipt sending — no more accidental email changes.
* Client: Improvements to the **Find delivery options** dialog, which now displays errors from the lookup service and disables confirm if there are issues.
* New **accounting key**: `CASHFLOAT_EXPENSE_WITHDRAWAL`.
* New **supplier fields** in product response — now includes supplier purchase price, supplier SKU, and more.
* **Health endpoint** now returns `minimumVersions` containing the minimum required app versions (Client: 1.27.0, Assistant: 2.6.0).
* **Store update** now validates **cash reconciliation** toggling.

### Improved

* Admin: **Drag-and-drop reordering** for product media — no more fiddling with manual position inputs. Works across the media tab, upload modal, and product creation.
* Client: **Serial number handling** reworked — you can now add serial number products with a blank serial number when set to "deliver now". When entering the payment dialog, any products missing serial numbers are shown in a dialog, and once resolved, you proceed straight to payment.
* Client: The payment dialog now runs an **order status check** and displays any warnings or errors before you proceed.
* Client: On **Windows/Mac**, the window size on startup will only reset to default if the app was previously closed at a smaller-than-default size.
* **Flowbox connection status**: Now checks RabbitMQ consumer connection when listing store flowboxes and updates **ONLINE/OFFLINE status** accordingly.
* **Insurance** and **VAS** (value-added services) products can no longer be sold without an associated main product — because selling insurance on nothing doesn't make much sense.
* Admin: **Warehouse modal** now pins the owner store row at the top, auto-refreshes after access changes, and has improved UX overall.
* Admin: **Import template description** is now optional.
* **Property options** can no longer be added to a **text property field** — only to selection-type properties where they belong.

### Fixed

* Client: **Hardware scanner** now works properly in open sale.
* Client: **Orders with multiple invoices** now show a selection dialog for Pay Invoice, Manual Payment, and View Payments actions.
* Client: Fixed an issue where the app **was not working** when onboarded to a device without a till.
* Client: Order items missing a **serial number** no longer incorrectly block payment when those items are set for later delivery.
* **Partial order address updates** no longer clear the entire address if the phone number is invalid.
* **Price import** no longer sets dates to the year 0001. Time travel is cool, but not in your price lists.
* **Sold-not-delivered report**: Credited order lines are now properly taken into account.
* **Package products**: Delivered quantity now correctly remains 0 when settling an order — only components are delivered.
* Fixed **upserting text properties** on a product update.
* **ORDER\_STATE\_CHANGE webhook** now triggers correctly when an order is canceled.
* **ESCPOS receipt encoding** is now correct.
* Profrakt: Fixed agreement number handling — now stores only the product identifier and looks up agreement information dynamically from the Profrakt API.
* **Open-Item-Report**: Currency code now uses the store's country instead of defaulting to NOK.
* **Order import**: Improved error message when a delivery is not used by any order item.
* Admin: **Import errors** now show actual API error messages instead of generic ones.
* Admin: **Badge colors** display correctly in **dark mode** across all modules.
* Admin: **Order PDF download** shows the actual API error instead of a generic message, and the button is disabled with a tooltip for payment orders.
* Admin: **Media position ordering** preserved correctly during product creation when mixing URL and uploaded images.
* Client: Various undisclosed security improvements.

### Removed

* Admin: Removed unused full-page permissions blocker — superseded by more granular permission controls.

## 2026-02-11

### Added

* New **cash report** endpoint: `GET /tenants/{tenantUid}/stores/{storeUid}/cashreports` — list all cash reports for a store in one go.
* New **accounting keys** for cash float operations: `CASHFLOAT_DEPOSIT`, `CASHFLOAT_WITHDRAWAL`, and `CASHFLOAT_TO_BANK`.
* **Subscribers** for automated reports — stores can now subscribe to receive **sales summary reports** automatically. Manage subscribers from the new **Notifications tab** on store details in Admin.
* New **accounting config endpoints** for easier setup:
  * `GET /tenants/{tenantUid}/stores/{storeUid}/accountingConfigs/productGroups`
  * `GET /tenants/{tenantUid}/stores/{storeUid}/accountingConfigs/treatcodes`
  * `GET /tenants/{tenantUid}/stores/{storeUid}/accountingConfigs/accountnumbers`
  * `GET /tenants/{tenantUid}/stores/{storeUid}/accountingConfigs/vatTypes`
* Ability to **receive payments on an invoice** from an external system.
* Omnium order sync now **auto-delivers items** when Omnium has set DeliveredQuantity — less manual work for warehouse staff.
* Admin: **Advanced search** added to the orders list.
* Admin: **Swedish translations** added.
* Client: **"Last modified at" filter** added to the order handling list — find recently touched orders faster.
* Client: **Confirmation dialog** now appears before closing order handling, so you won't accidentally lose your work.

### Improved

* **Order confirmation** now includes more detailed **delivery information**.
* Admin: Redesigned **pre-login pages** with an animated gradient background, new card layout, and consistent styling across sign-in, no-tenants, and clear-session views.
* Admin: **Accounting page** layout redesigned for better overview.

### Fixed

* **Cash reports** now show the correct `cashRevenueAmount` when listing till reports.
* **Open items report**: Payments were not being taken into account — now they are.
* **Product searches** sped up with database index improvements.
* Creating an **order delivery** now properly saves the `countryCode`.
* **Purchase Order**: Fixed inconsistent expected delivery date handling when no date is provided.
* **Qualified Product Campaign**: Fixed discount calculation when the campaign uses an amount-based discount.
* Omnium: Customer relation sync now sets relations the correct way.
* Admin: Missing **Flowbox label settings** for barcode printer now available.
* Admin: Missing **webhook types** added.

### Removed

* Time for more housekeeping! The following deprecated API fields have been **permanently removed**:
  * **Product API**: `requireCustomer`, `productLinkUid` (addon response)
  * **Order API**: `customerContactUid`, `shippingAddress`, `reserveStock` (use `reservationType`), `createdAt` in import (use `orderDate`), `deliveryProviderUid`/`deliveryProviderMethodUid` in import delivery (use `shipping.*` equivalents), and backward compatibility for these fields on the delivery update endpoint
  * **Stocktaking API**: `productUid` on stocktaking item schema
  * **Tenant API**: `availableExtensions`
  * **Settlement API**: `paymentAomunt` (use `paymentAmount` — yes, it was a typo all along), `storeSettlementIssuerUid` (use `storeSettlementIssuer.storeSettlementIssuerUid`)
  * **Receivement API**: `unitPrice` (use `unitCost`)
  * **Product API**: `brandUid` in search (use `brandUids`)
* **Purchase Order API**: The deprecated `currency` field is now optional and will be removed in a future release.
* **Order API**: Deprecated fields `warehouseUid` and `timeslotName` are now optional on order delivery responses — will be removed in a future release.
* **Tenant API**: Deprecated `defaultCustomerGroupUid` field is now optional. Use `TenantAppSettingsResponseSchema` instead.

## 2026-02-03

### Added

* **Extended Finnish language support** — the Admin interface is now available in Finnish 🇫🇮
* **Store settlement**
  * **Multiple store settlements per day** — you're no longer limited to one store settlement per day. Perfect for stores with shift changes or multiple reconciliation windows.
  * **Store settlement cut-off time** — new option to set a cut-off time for store settlements. Tills cannot be opened after this time until the previous store settlement is completed. No more "I forgot to close the till" excuses.
  * **Print option for store settlements** — generate printable PDF reports directly from the store settlement page.
  * **Change amount check** — the system now verifies change amounts before counting till on the store settlement page.
* **Settled state indicator** — orders now show their settled status on both the order list and in the order dialog.
* **Purchase order search filter** — new `hasConfirmedReceivements` filter to find purchase orders with or without confirmed receivements.
* New endpoint field: VAT number and contact person are now included on <kbd>Omnium</kbd> orders.

### Improved

* **Till management** — stores with the Cash Reconciliation feature enabled can now close tills without counting, and view a till list with status information.
* Layout adjustments on the products table in Admin for better readability.
* <kbd>Omnium</kbd> sync now includes comprehensive Sentry error tracking and panic recovery for all sync processes (orders, receivements, warehouse sync, and cleanup jobs).
* <kbd>Omnium</kbd> receipts now include sellercode on order lines.
* Device list now shows the **app version number** for easier troubleshooting.

### Fixed

* **Campaign calculation** — the campaign engine now correctly calculates campaigns for order lines even when the current price is higher than the original price.
* <kbd>Adyen</kbd>: Fixed the store settlement issuer for referenced refund requests to use the original settlement.
* <kbd>Omnium</kbd> customer loyalty ID mapping now correctly uses ExternalIds (ProviderName) instead of the Properties field for both B2B and B2C customers.
* <kbd>Omnium</kbd> customer sync now properly adds customerRelations for business customers.
* <kbd>Omnium</kbd> orders without lineItemId are now handled gracefully — flagged as errors and the sync continues to the next order.
* Cash report comment field is now properly included in the store cash reconciliation response.
* Store cash reconciliation cut-off time is now read and used correctly internally.
* Tills are now blocked from opening while a store settlement is in progress.
* Admin UI no longer jumps back to the first tab on the store page unexpectedly.
