> For the complete documentation index, see [llms.txt](https://docs.flowretail.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flowretail.com/docs/september-2026.md).

# September 2026

## Monthly summary / tl;dr

September so far:

* **Store-specific accounting accounts** — a store can now override a product's central accounting account from its own accounting tab.
* **Shelf warmer report** rows can now be unfolded to show the stock breakdown by warehouse and arrival date right on the report page, not only in the Excel export.
* **Broadcasts can now be sent by email** as well as text message, composed with a subject line and an HTML body edited against a live preview.
* **Customer addresses now sync to Omnium** automatically as they're added, changed or removed.
* **Suppliers can now be asked to confirm quantities and delivery dates** for several products in one request.
* **Inter-store trade orders sync earlier and more tightly** — a sale creates the buying store's purchase order as soon as it's parked, and changes on either side now reach the other immediately.
* **Inter-store trade pricing now follows one consistent rule** regardless of which side started the trade, and a line can no longer cross stores without a price on it.
* **Purchase orders now show when goods are on their way** — a confirmed receivement moves the order to "in transit", with the received quantity staying at zero until they arrive.
* **Admin sign-in and sign-out are more reliable** — logging out now fully clears the session, and a stuck sign-in offers a manual option instead of endless redirects.
* **Package sales are no longer double-counted** — turnover, profit and the SAF-T[^1] export were too high for any period with package sales.
* **Organizations, stores and tills can now enroll with Sweden's fiscal control system**, registered and commissioned directly from Flow.
* **Orders can now print a pickup note, a pick note or a missing-items note** on receipt and label printers, instead of only per-product pickup labels.
* **A new Invoice payments report** lists payments registered against invoices for a period, filterable by store and by who registered them.
* **Purchase order costs now reflect the price at receipt**, not when the delivery was confirmed, so a discount agreed in between no longer inflates margins.
* **Stocktaking is more reliable** — counted items are no longer lost to a failed refresh, a dropped connection, or a closed app, since progress now saves automatically as you count.

Working with the API? See For developers at the bottom.

## 2026-09-15

### Added

* **Swedish fiscal control system enrollment** — organizations, stores and tills can now be registered and commissioned directly with Sweden's fiscal control system.
* **Orders can now print a pickup note, a pick note (plukkelapp) and a missing-items note (restlapp)**, on both receipt and label printers, with support for printing only one handling's lines at a time. Standard stores now print pickup notes in this format; Power stores keep printing per-product pickup labels.
* A settlement now tells you whether it can still be cancelled.

### Improved

* Pricelist permissions now follow store and organization scope, so you only see and edit the price lists and prices your own stores use; creating a price list still needs tenant-level access.
* Orders can now be found by any of their external IDs, not just the primary one.
* Invoice payments can now be searched across an entire organization, not just one store at a time.

### Fixed

* Stock received against a purchase order is now valued at the order's discounted price as it stands when the goods are received, not as it stood when the delivery was confirmed, so a discount agreed in between no longer inflates the average cost and margin shown.
* Auto-printed pickup labels now include only the items for the handling that triggered the print.
* Pickup notes show the external order number again when labelled external IDs haven't been set yet on the order.
* Printing a receipt with no lines selected includes every line again, the same as leaving the selection out entirely.
* An email already reported as delivered no longer flips back to failed if a bounce or spam complaint arrives later for the same message.
* The public error page no longer shows visitors the internal error message, and the 404 page now offers a single working "Go back" link.
* Deleting a delivery no longer fails when its own freight line is the only automatically added line, and any discount on that freight line is now removed too, with the order total recalculated.
* The Navision accounting export no longer writes zero-amount lines.
* A card payment declined or cancelled on an Adyen terminal now closes immediately instead of leaving the cashier waiting.
* Deleting an organization that's still in use now explains what's blocking it — stores, purchase orders, or customer parameters — instead of failing with a generic error.
* A purchase order line's price or quantity can be changed again even after it's fully reserved, whether from goods already received or from several sales lines reserving the same line.
* Delivery search now always filters to your own tenant; a search sent without specifying any store could previously return deliveries belonging to other tenants.

## 2026-09-09

### Added

* **Admin**: a new Invoice payments report lists payments registered against invoices for a period, filterable by store and by who registered them.

### Improved

* **Admin**: "Only products with stock" can now be set on a partial stocktaking, not just a full one, so counting a product group no longer pulls in everything that has no stock.
* **Admin**: the confirmation after adding products to a stocktaking now says how many products it holds, instead of only that products were added.

### Fixed

* Confirming a receivement against an ordinary supplier no longer moves the purchase order to "in transit" — only a purchase from another store does that.
* **Assistant**: stocktaking counts are no longer lost — pulling to refresh, a failed registration (a timeout or dropped connection), or a crash or closed app all now keep what's been counted, since progress is saved automatically on the device as you count.
* **Assistant**: registering counted items with serial numbers no longer fails, or silently drops an item, after its count was reset to zero.
* **Admin**: a malformed email address in a broadcast's recipient list no longer fails the whole batch.
* **Admin**: deleting a stocktaking now closes its confirmation dialog, so a second click can no longer fail with a server error.
* **Admin**: the description of a completed or deleted stocktaking can no longer be edited, since saving it always failed.
* **Admin**: the Swedish translation for the stock-only stocktaking option now shows correct Swedish instead of Norwegian.

## 2026-09-08

### Added

* **Admin**: broadcasts sent by email can now be composed with a subject line and an HTML body edited against a live preview.
* **Purchase orders now show as "in transit"** once the supplier confirms shipment, so you can see the goods are on the way while the received quantity stays at zero until they arrive.
* A purchase order that is closed, or that the supplier has cancelled, can no longer be added to, or reserved against.

### Improved

* **Inter-store trade pricing** now follows one rule no matter which side started the trade: the buying store's own price list if it stocks the product, otherwise the selling store's cost plus its markup — and a line can no longer cross to another store without a price above zero on it.
* The inter-store stock lookup now shows the note the selling store left on its own purchase order line, so you can see what was said about the goods before reserving from them.
* A return that must go back to the original payment method now only lists that method, instead of also showing the others as unselectable options.
* **Admin**: the user menu now shows the API version in every environment, and which build is running outside production.

### Fixed

* Releasing a reserved line back to the purchase-request queue, or removing the reservation, now correctly resizes or removes the buying store's purchase order line, so it always reflects what is still needed.
* A sales line that had already received stock from its purchase order now keeps naming that order after being released, and correctly forgets it if nothing had arrived yet.
* Stock reserved from, or earmarked on, a purchase order no longer loses track of that order when a line is updated automatically rather than by a person.
* A purchase order line no longer counts a released sales line as still reserved, which could stop the next customer from being served from stock that was actually free.
* Updating a company customer synced from Omnium no longer clears data Flow doesn't manage — assortment codes, category filters, discount and price groups, per-market credit, the logo, and consent history are left untouched.
* A campaign requiring a minimum quantity now removes its discount as soon as the quantity drops below the minimum, and reapplies it if the quantity goes back up; a per-item fixed-amount campaign now recalculates correctly when the quantity changes, and a product taken out of a campaign's selection loses the discount too.
* A line that loses its campaign discount automatically no longer keeps naming that campaign as the reason, so receipts, the Omnium export and the EHF[^2] basis no longer show a discount reason for a discount that no longer applies.
* A campaign limited to a customer group no longer keeps its discount if the order's customer leaves that group, or the order has no customer at all.
* Removing a line from a purchase order already sent to the supplier no longer reverts the whole order back to a draft.
* **Package sales are no longer double-counted** — turnover, profit and the SAF-T export were too high for any period with package sales.
* Goods received on a purchase order confirmation are now placed in the warehouse chosen at receipt, instead of always the confirmation's original warehouse.
* Shipments sent to Omnium now use the delivery method's configured mapping, instead of always reporting a generic "ship to customer" method when the delivery method had dynamic options.
* A payment taken on a Dintero terminal is now correctly reported to Dintero as in-store, instead of being filed as an online payment.
* **Admin**: Nynorsk labels that had kept Bokmål forms now read correctly, and the store setting for payments without a sales order uses the same term as the till.
* **Admin**: the HTML editor for email bodies and poster templates now shows a text cursor in dark mode, with a background matching the other fields.

## 2026-09-07

### Fixed

* **Client**: the service orders search field is now focused automatically when the search opens.
* **Client**: save and close in the price list dialog no longer stays disabled after changing a product's price, from-date or time — the change can always be saved.

## 2026-09-01

### Added

* **Store-specific accounting accounts** — a store can now override a product's central accounting account from its own accounting tab (**Admin**), for both regular and margin-scheme products.
* **Shelf warmer report** rows can now be unfolded to show stock split by warehouse and the day it arrived, right on the report page — previously only available in the Excel export.
* **Broadcasts can now be sent by email** as well as text message. Recipients see the store's name as sender and reply address, and delivery status is reported back per recipient.
* **Customer addresses now sync to Omnium** automatically as they're added, changed or removed.
* **Suppliers can now be asked to confirm quantities and delivery dates** for several products in one request.
* **Admin**: the app settings that control what the till shows for a store can now be edited from the store's general tab.

### Improved

* **Inter-store trade orders now sync earlier and more tightly.** A sale creates the buying store's purchase order as soon as it's parked or confirmed, instead of waiting until the goods are delivered, and adding, resizing or removing a line on the sale now reaches the buying store's order immediately instead of waiting for shipment. Cancelling one side now cancels the other automatically, and closing a received purchase order no longer cancels a sale whose goods have already shipped.
* **A purchase order between stores now shows more about the trade** — which warehouse holds the goods, what the selling store is waiting on to fulfil it (already in stock, on order from its own supplier with an expected date, or coming from a third store), and the coupled sales order's number, status and store instead of just an ID.
* **Sales order lines in inter-store trade show which other store is involved**, including the seller's incoming shipments for that line.
* **Admin**: the shelf warmers report now has organization and store pickers right at the top, and every active filter shows as a removable chip, so scoping the report no longer needs the filter dialog.
* **Admin**: sign-in and sign-out are more reliable — logging out now fully clears the session (it could get stuck, making a fresh sign-in the only way out), a link opened after signing out asks you to sign in instead of silently reusing the identity provider's still-active session, and a stuck sign-in offers a manual option after a few failed attempts instead of redirecting endlessly.
* **Admin**: the product search dialog now follows dark mode properly — its row highlight and dividers no longer show fixed light-mode colours.

### Fixed

* **Product images are back on printed offers and order confirmations.**
* **A Nets card payment the terminal completes after Flow has already marked the attempt cancelled or rejected is now recorded**, instead of silently discarded — so the customer is never charged without it appearing in Flow.
* **The X/Z report now names everyone who had the till open on the report's date**, instead of whoever opened it most recently, which could put the same name on a whole week of reports.
* **Broadcast recipients whose delivery report never arrives are now marked failed after 24 hours**, instead of leaving the broadcast's counts permanently short.
* **A broadcast that can't be sent at all now reports as failed**, instead of working through the recipient list and finishing as completed without sending anything.
* **Import status now reflects reality** — a file that can't be read at all (invalid, unreadable or empty) is now marked failed instead of not started, and an import that finishes very quickly no longer gets stuck showing as still running.
* **Returns not linked to an original sale are now sent to Omnium as proper returns**, instead of counting as an ordinary negative-quantity sale.
* **Product, price and supplier-product imports can now update an existing product by SKU** when the row's ID doesn't match anything, instead of failing with "SKU already exists"; SKUs are also cleaned up (surrounding spaces removed, inner spaces turned into underscores) before being matched, the same as when a product is saved.
* **A contact's roles in Omnium are no longer duplicated on every sync.**
* **The turnover report per seller no longer counts products excluded from statistics**, matching the product and sales reports for the same period.
* **The turnover report on order-date basis now includes parked orders.**

## For developers

API and integration changes released in September.

### Added

* `includeStockLayers` on the shelf warmer search (`POST .../reports/shelf-warmers`) returns each warehouse's stock split by stock-in day, with its own last-sale and stock-change dates; product rows now also carry the full product group path.
* New endpoints to list, set and remove a store-specific accounting account for a product, overriding the product's central account.
* Broadcasts can be sent by email; delivery status is tracked and reported per recipient the same way as SMS.
* Customer addresses are synced to Omnium on create, update and delete; an address used for both invoicing and delivery is sent as one Omnium address carrying both purposes.
* New supply-forecast endpoint: ask a supplier to confirm quantity and delivery date for several products in one call; an unrecognised article number fails the whole call.
* Inter-store trade: sales order lines carry the counterpart store and incoming-shipment details; purchase order lines carry `reservationDetails.warehouse` and the coupled sales order as an object (`interStoreSalesOrder`, replacing `interStoreSalesOrderUid` / `interStoreSalesOrderItemUid`).
* Swedish fiscal control system: `POST /tenants/{tenantUid}/organizations/{organizationUid}/fiscal/enroll` and `POST /tenants/{tenantUid}/stores/{storeUid}/fiscal/enroll` create and commission in one step (repeatable if it stops halfway); an organization's fiscal credential (unit id, API key, secret) is set via `settings.fiscalCredentials`, validated against the control system and never returned in a response; till endpoints support register, commission and decommission against the control system.
* Invoice payments can now be searched at the organization level: `POST /tenants/{tenantUid}/organizations/{organizationUid}/payments/search`, filterable by registration date, value date, registering user and store.
* The entity timestamps endpoint now reports `organization`, so a client can detect an organization change without a blind resync.
* A printer's `availablePrintActions` now includes `SHORTAGENOTE` and `PICKNOTE` alongside `PICKUP_LABEL`.
* Delivery search now also matches on the order number or any order external ID; order search now matches on all external IDs, not just the primary one.
* A settlement now reports whether it can be cancelled, in `allowedActions`.

### Changed

* Shelf warmer Excel export gains a "Store Number" column, the full product group path, and a uid/name column per group level; columns from "Store" onwards shift one right.
* A product with a store-specific accounting account is booked to it ahead of the product's own account and the store's product group/VAT setup.
* An inter-store purchase order is coupled to the selling store's sales order when it is sent to the supplier, not when it is created; a sale to a customer representing another store creates that store's purchase order on park/confirm instead of on delivery.
* Editing a coupled inter-store sale now reaches the buying store's purchase order immediately for added, resized or deleted lines; blocked with `409` (naming the store and purchase order) once the purchase order is closed, cancelled, fully received, or would be reduced below what's already reserved or received for a customer.
* Cancelling an inter-store sale cancels the buying store's purchase order too (refused with `409` if the buying store has reserved or received the goods); closing an inter-store purchase order cancels the selling store's sales order unless a receivement already exists against it.
* An inter-store purchase order line and its coupled sales order line each now carry their own price instead of copying it from one another; a line is rejected if the price crossing to the other store is not above zero.
* Adding a line to, or reserving against, a purchase order that is closed or cancelled by the supplier is now rejected.
* An authentication failure now reports `ErrInvalidToken` on its own instead of wrapped in `ErrGeneric` (the `code` field is unchanged).
* The last-changed user and time on a company customer synced from Omnium are now stamped by Omnium itself instead of being sent from Flow.
* A discount removed by hand through the order-item endpoint keeps its reason code unless it is cleared in the same request.
* Fiscal setup must now happen in order — the FISCAL extension on the tenant, then the credential on the organization, then the extension on the store, then the till — each step refused until the one before it is in place, and a step cannot be disabled or deleted while a later step still depends on it; an organization or store enrolled with the fiscal control system can no longer be deleted.
* A delivery's freight line can no longer be removed from, or moved off, its delivery through the order-item endpoint — change the delivery instead, and the freight line follows.
* A store lacking the required warehouse role is now told which store and warehouse by UID and answered with `403` instead of `500`, on both the order and service-order endpoints.
* Searching orders with `isCustomerOrder` now also finds the selling store's side of an inter-store trade.

### Fixed

* Sourcing an inter-store purchase order line reports the actual problem (no such line, naming it, or the order doesn't buy from the named store) instead of always saying the selling store's sales order was missing.
* Deleting a purchase order, or a line on one, that a receivement points at now answers `409` with the reason instead of a generic server error.
* The inter-store reservation lookup already excluded another store's inter-store purchase order and purchase orders that are unsent, closed, cancelled or fully received; reservation now refuses these cases too, not only the lookup.
* A coupled inter-store sale is restored to its pre-edit state (a parked sale stays parked) after an edit on the buying store's purchase order.
* Reducing, deleting or archiving a purchase order that sales lines have reserved against is blocked once it has been sent to the supplier; while still a draft the change goes through, and the newest reservations are reset to requesting a purchase.
* Outgoing email now times out after a minute instead of hanging indefinitely on a stalled connection to the provider.
* Skipped rows in a customer import are marked `IGNORED`, matching every other import type (previously `IGNORE`).
* Stock-adjustment imports only fall back from uid to SKU when the uid cell is empty; a filled-in uid that matches nothing still fails the row, since a wrong match would overwrite the product's stock level.
* An insert-only product import keyed on SKU now counts an already-existing product as ignored instead of failing the row.
* `warehouseUid` on the receivement confirmation update request now sets the warehouse goods are registered in, instead of always using the confirmation's original warehouse.
* The access log now records the actual status, response body and error code for every failed request — a request rejected by the OpenAPI validator, an authentication failure, or an error from an API handler — instead of logging an empty `200`.

[^1]: SAF-T (Standard Audit File for Tax) — the standardised accounting export Norwegian businesses must be able to hand over to the tax authorities on request.

[^2]: EHF = Elektronisk Handelsformat, the Norwegian standard format for electronic invoices, used for invoicing public-sector and many B2B customers.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.flowretail.com/docs/september-2026.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
