> 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/august-2026.md).

# August 2026

## Monthly summary / tl;dr

August so far:

* **Cross-store tills** — a till can now settle an order that was registered at another store in the same organization, on top of already being able to reserve and receive goods from other stores directly on a customer's order.
* **EHF** invoices can carry the buyer's own order number and the framework agreement number via two new settings — and they no longer send our own voucher number where it could never be matched.
* **Second-hand sales under the VAT margin scheme** — flag a product in Admin to calculate VAT on profit instead of sales price, margin lines are marked "m" on printouts, and their revenue and VAT are booked on two new accounts per store (set them before your next accounting export).
* **Returns can be spread over several receipts**, and a refund can never give back more than the customer actually paid on that payment method.
* **An order finished by confirming it is now closed properly** — settled, credited if needed, and counted in the SAF-T[^1] export and the turnover report.
* **Product prices can be kept without VAT** for B2B tenants, with Flow adding VAT on top when a product goes onto an order.
* **Quick totals and seller reports** are now one tabbed dialog with separate sales and order-intake views.
* **Percentage payments now calculate exactly right** — no more rounding errors when charging a percentage of an order.
* **Required fields for customers and contacts are configurable per tenant and per customer type**, and duplicate checks catch more matching e-mails, more reliably.
* **Gift cards and packages are easier to handle mid-sale** — pay them on their own line, and print or send them the moment they're paid, even before the rest of the order is settled.
* **The shelf warmer report now breaks stock down by warehouse and the day it arrived**, so you can see exactly how old a batch is.
* **Inter-store trade** — stores in the same chain can buy and sell goods from each other, with the purchase order and the matching sales order kept in sync all the way from ordering to receiving the goods.
* **Campaign prices only count while they are valid** — expired and not-yet-started prices no longer put a product on campaign.

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

## 2026-08-18

### Added

* **Second-hand goods sold under the VAT margin scheme are now booked on their own accounts** — every store gets two new accounts on its accounting configuration (and on the account numbers screen): one for margin-scheme sales revenue, one for the VAT calculated on the margin. **Set both on every store that sells used or refurbished goods before your next accounting export**, or the amounts land on the error account. This applies to the accounting report, Navision, 24Seven and VismaNet; Unimicro, VismaBusiness and XLedger still export these lines as ordinary sales.
* **Margin-scheme lines are marked as such on printouts** — order confirmations, invoices and receipts show an "m" in the VAT column instead of a VAT rate, and the note explaining the scheme carries the same "m" so it reads as the explanation for those lines. These lines are deliberately left out of the VAT summary, so they no longer point at a summary row that isn't there.
* **Product prices can be kept without VAT** — a new "Product Prices Excluding VAT" setting on the B2B module, for tenants whose product prices are stored without VAT. With it on, VAT is added on top of the price when a product goes onto an order instead of being calculated out of it; the order line still carries the price including VAT, so settlement, accounting and EHF are unaffected. Receipts also show the unit price without VAT on every VAT-carrying line, while everything else keeps working on the price that is on the product — price labels, for instance, still print it unchanged. Before turning it on, make sure every VAT code in the product catalogue has a VAT rate.

### Improved

* **Card terminals get more time to answer** — a request to an Adyen terminal now waits up to 30 seconds instead of 10, so a slow answer no longer ends the payment attempt.

### Fixed

* **A return can now be taken on several receipts.** Every partial receipt on a return was rejected with a message saying the receipt total exceeded the remaining order value, even when it was well within it, so the whole return had to go on one receipt. A receipt larger than what the return has left is still rejected, and the amounts in that message no longer lose the øre.
* **A refund can no longer give back more than the sale has left on that payment method.** Earlier refunds now count against the limit — whether they were made on the sale itself or on an earlier return of it — and the sale counts once instead of once per returned line, so a return with several lines can no longer give back several times what the customer paid. The limit matches what the payment method list reports.
* **A refund method that cannot be used is now stopped when you pick it**, instead of being accepted and then failing at the payment provider: refunding to a method the sale was never paid with, or tying a refund to a single payment when the sale was paid several times with the same method. Terminals that can read the card handle the latter themselves; otherwise you are asked to pick another method.
* **An order finished by confirming it is now closed properly** — it counts as settled, gets a voucher number, its lines can be credited, and its sales reach the SAF-T export and the turnover report instead of being posted to accounting as delivered but not paid. Lines can no longer be changed on a finished or cancelled order. Orders finished this way before the change keep their old figures.
* **An order stays open while the customer still has money left on a prepayment**, whether you are confirming it or paying its last line — until the remainder is paid out or used. A cancelled prepayment no longer blocks confirming the order at all.
* **Money handed back from an unused prepayment is no longer counted twice in the books** — it was written to the rounding account on top of being paid out as change.
* **Changing the customer on a VAT-free order no longer raises the line prices** by the VAT rate, which left every line that had not been priced by hand too expensive. This affects all tenants, not only those keeping prices without VAT.
* **Order printouts report line status correctly.** A package no longer carries a status of its own claiming it was handed out — its contents are listed as separate lines, each with its own status and quantity. Services, fees, freight and other non-stocked lines are no longer marked as delivered from the moment they are added; a line says nothing until it actually has been handed out. The status column is no longer left blank for lines waiting to be ordered from the supplier, or once part of the order has been paid. And an order confirmation in English no longer marks a paid line as paid twice.
* **A receipt for a delivered line keeps the delivery details** — address, recipient, carrier, and the date it was handed over on a line of its own — so reprinting a customer's own receipt for a home delivery no longer gives them a document that looks like a counter sale. The planned delivery date still disappears once the goods have been handed over, and receipt-printer output is unchanged.
* **A line reference now prints on the settled receipt too**, not only on the order receipt.
* **The Finnish payment barcode carries the due date** when the invoice is printed from the order, not only from a settled receipt.
* **The activation details for a digital product** — activation slip, PIN and serial number, license key, installation address and instructions — now appear on the invoice and the order confirmation as well as the receipt, including the notice shown when an activation has not gone through.
* **A package takes its cost price from the products it contains**, rather than from its own sales price without VAT (which showed up once an order had been parked and opened again), and crediting a package keeps the cost it was sold at instead of what its contents cost today.
* **A package now shows how many of it are reserved** — reserving something the package needs lowers how many of it are left, whether it was reserved as part of the package or on its own. The figure used to stay at zero however many were sold.
* **A shipment from another store no longer arrives with an expected arrival time that has already passed** — only the dispatch time is filled in, and whoever receives the goods can add the arrival date if it is worth recording.
* **A supplier that represents a store is now shown as such** in the supplier list, the supplier search and supplier payouts, the same as when the supplier is opened on its own.
* **Omnium**: a customer whose lookup fails is no longer treated as missing and rebuilt from what Flow alone knows — the sync stops and reports the failure, leaving the customer in Omnium untouched until the next attempt. Syncing a private customer or a business contact person also keeps tags set elsewhere, and leaves alone the parts of the address Flow does not hold itself (apartment and street number, region, location name, and the address's own e-mail and phone).
* Client: the payment dialog no longer reports post-settlement tasks as unfinished the moment you settle — it rechecks once first — and no longer locks up when the order's payment methods cannot be fetched; you now get the error and a retry button.

## 2026-08-11

### Added

* **EHF invoices** can now carry the buyer's own order number and the agreement number a sale was made under, via two new optional settings, "Order Reference Key" and "Contract Reference Key" — so the recipient's system can match the invoice to their own order and track spend against framework agreements.
* **A till can now settle an order that was registered at another store**, as long as both stores belong to the same organization.
* **Message templates** can now insert the products in the order, the customer's name, mobile number and e-mail, and the store's address, phone number and e-mail; delivery confirmation SMS templates gain the store fields too. A new "Order arrived at store" SMS template type lets that message be customised per tenant instead of being fixed.
* Admin: **second-hand sales** — products can be marked to calculate VAT on profit instead of sales price (the VAT margin scheme) when creating or editing a product; the setting carries over when duplicating a product.
* Admin: package products now show a copy icon next to each component's SKU in the Slots tab, for copying it to the clipboard.

### Improved

* **The shelf warmer Excel export now breaks stock down by warehouse and the day it arrived**, instead of one summed row per product, so you can see how long each batch has been sitting (oldest stock first). New "Store", "Warehouse", "Stock In" and "Days Since Stock In" columns show this; "Stock In" counts any movement that puts stock back on the shelf — a return, a stock count, an import, an RMA, a manual adjustment or a store transfer — not only goods receipts, so it can reset for part of a batch when only some of it moves. A report asking for more than 100,000 rows is now rejected with a clear message instead of taking minutes to build a file too large to use.
* Error messages for a missing permission are now clearer — they address you directly and name just one permission when several would work.

### Fixed

* **Orders imported from Omnium keep the customer's name** when Flow writes the order back to Omnium.
* The card terminal slip is no longer printed twice on a receipt.
* Error messages in Nynorsk now show properly instead of falling back to English.
* Operators with the service order permission can now add, edit and remove attachments on a service order without also needing the asset permission.
* Gift cards printed on a receipt printer no longer come out in oversized text.
* Deactivated users no longer show up in the device login list — only active and not-yet-activated users are offered.
* An SMS the provider reports as delivered, but bills for later, is no longer wrongly shown as failed.
* Admin: tenant settings — the price list and default customer group can now be cleared back to "None".
* Admin: tenant settings — the price list dropdown is now translated instead of always showing Norwegian.

### Removed

* Printer and app settings that used to live on the till (receipt/barcode printer, touch mode, auto logout, sale-stop-at-delivery) now live only on the paired device — make sure they're set up there. A till whose device has no printer of the type it needs will fail to print until one is added on the device.

## 2026-08-07

### Added

* **Quick totals and seller reports** are now combined into one tabbed dialog with separate views for sales and order intake; the seller report defaults to your device's store and can be switched to another store from the report.
* **Duplicate contact check** — when your tenant turns this on, a contact can no longer be saved with an e-mail address another contact already uses.
* Customers can now have a customer number.
* **Prepayment completed view** now has its own A4 print button for the prepayment receipt; the view's existing A4 button is relabelled, since it always printed the full order.
* **Price list dialog** now shows a "to" date for prices that have an end date, plus a switch to show only currently active prices; the item code is now shown together with the product name and group in a single column.
* **Contact and customer forms now enforce exactly the fields your tenant requires** — mobile, e-mail, address, postal code and city can each be required separately for private customers, companies/B2B, departments and contacts (name, company name and VAT number stay required as before). Address fields appear automatically when needed or already filled in, and can otherwise be added on demand — including for departments, where they used to be hidden even when required.

### Improved

* Downloading a file on Windows now asks where to save it, instead of always using the Downloads folder.
* The product group browser in sale views now only lists products once you've drilled down to a group with no sub-groups.
* **Customer type** (private, company/B2B) can no longer be changed by accident from the customer overview; changing it now happens deliberately, from the edit customer dialog.
* The Client app on iPad now requires iOS 15 or later.
* **Duplicate customer check** now also catches a matching e-mail address for private customers, not just a matching mobile number.

### Fixed

* **Percentage payments now calculate the exact amount** — entering a percentage with decimals no longer rounds the settled amount incorrectly, and paying with a percentage still typed into the amount field is blocked until it's converted (press Enter), so you can't accidentally charge the percentage number itself as an amount.
* **Duplicate customer check now runs reliably**: departments are no longer wrongly checked against their own parent company, the check runs every time a customer is created (not only when the value was typed in fresh), and copying an edited address onto a customer is now actually checked instead of being compared with itself.
* **Gift cards and exchange notes for a partially paid receipt are now available as soon as that receipt is paid** — printing the receipt (thermal and A4) is offered too, instead of waiting for the rest of the order to be settled.
* Sending an order confirmation by e-mail is available again for orders that aren't fully settled yet (for example a confirmed order with a prepayment); invoices you send externally still don't offer e-mail here.
* The order details view no longer shows a delivered checkmark on lines that were credited without ever reaching the customer, and a line's credit link now says "crediting started" instead of "credited" while the credit is still in progress.
* Saving a customer whose ledger number couldn't be stored (for example if you lack the accounting permission) no longer looks like it failed — the customer is saved, and a clear warning explains that only the ledger number was skipped.
* Order search when creating or changing a service now also finds confirmed orders with a partial payment or delivery, not only fully settled ones.
* Deleting a purchase order line linked only to a confirmation now explains that the confirmation must be removed first, instead of a misleading error about receivements.
* The manual invoice payment button in order details is available to tenant admins and to tenants without granular permissions, without needlessly requiring the payment permission.
* **Serial numbers**: the deliver-out and order handling dialogs no longer block sale-only products against warehouse stock they don't need, ask for a warehouse before checking a serial number, or show a generic "not in stock" message when the real problem was a network or server error.
* Receiving a purchase order for items reserved on customer orders no longer offers (and pre-selects) sending an SMS notification when the tenant doesn't have the SMS extension — that used to block confirming the receivement with an error.
* Changing the warehouse on a deliver-out line now updates the stock count shown in the order right away, instead of only after closing and reopening it.
* The prepayment button no longer disappears on a zero-total order in touch mode — you can still refund a prepayment there — and keyboard mode no longer offers a new prepayment (which isn't possible on such an order) instead of only the refund.
* **Print and download got smoother**: dialogs (print/download, service order, purchase order, internal purchase order, RMA) now show a loading indicator while a file is generated, the "saved" confirmation appears only once the file is actually written — not before, and not if you cancel — and on macOS the save dialog remembers the folder you last used instead of always suggesting the desktop.

## 2026-08-04

### Added

* **Inter-store trade** — a new extension that lets stores in the same chain buy and sell goods from each other. It has a setting for a percentage markup added to the selling store's price, and one for whether stores in different organizations may trade with each other. A supplier or a customer is marked as representing a store, which is what connects a purchase in one store to a sale in the other.
* **A purchase from another store stays in sync with that store's sale.** When a store orders goods from another store, the selling store automatically gets the matching sales order, lines added, changed or removed on the purchase are mirrored on the sale, and both sides show what they are connected to. A purchase order placed with another store counts as placed rather than as a draft, since the selling store already holds the matching order and there is nobody to send it to.
* **Reserve goods another store has on the way in** — staff can look up which other stores have a product incoming and reserve from it directly on a customer's order, creating the whole chain between the stores in one action. The lookup only offers goods a store has ordered from a real supplier, not goods it is itself receiving from another store, so nobody ends up as an unintended middleman.
* **Shipments between stores land in stock by themselves.** When the selling store ships the goods, a receivement is prepared at the buying store carrying the selling store's order number, the shipment's tracking reference and when it was sent, so several incoming shipments on the same order can be told apart. Once the goods are received there, the customer's order line becomes ready for pickup as usual. It works the other way round too: when a store such as a central warehouse sells goods to another store and ships them, the buying store's purchase order and receivement are created automatically on delivery.
* **Worth knowing about inter-store trade**: each purchase line is connected to exactly one sales line, so products handled one at a time — those needing a serial number, or that cannot be ordered in a quantity — should be ordered with one unit per line between stores. Products a store is not allowed to sell cannot be ordered from another store, and fixed packages are not supported between stores.

### Improved

* **The shelf warmer report judges standing stock per warehouse instead of per product.** A product used to disappear from the report as soon as one of the selected warehouses had moved its stock; now only that warehouse drops out, so stock standing still in one store is reported there even if another store sold the same product yesterday. Quantity in stock, stock value, last received and last stock change count only the warehouses that qualify, and last sold counts only sales in the stores that own them — so the date can no longer fall after the point you asked about.
* **Setting a customer's ledger account number** now only requires the customer permission.

### Fixed

* **The duplicate check on contact email addresses now runs**, so a tenant with the setting switched on can no longer end up with two contacts sharing an email address.
* **A product is only on campaign when the price list holds a price that is valid right now.** Expired or not-yet-started prices could flag a line as being on campaign with no valid price to apply, leaving it at full price with a broken discount, or keeping a discount from a price that had already expired. Any leftover discount on such a line is removed.
* **Gift card and package lines can now be paid on their own**, so they can go on their own receipt like any other line.
* **Changing the price on a package no longer reserves stock for the package itself** — the stock belongs to the component lines. Lines that already carry such a reservation are not corrected by this change.
* **Receipt transfers to Omnium no longer get stuck when Omnium does not know the customer.** The customer is created in Omnium and the transfer retried once before the job is marked as failed.
* **Orders imported from Omnium are no longer rejected for a missing name.** A company name carried in Omnium's organization field is now used, a full name held in one field is split into first and last name, and an order carrying nothing but a phone number is created with a customer address and no invoice address instead of being turned away.
* **A user's "last modified" in Admin no longer changes on login** — it now only moves when the user record is actually edited.

## For developers

API and integration changes released in August.

### Added

* New optional EHF service settings `Order Reference Key` and `Contract Reference Key`, alongside the existing `Buyer Reference Key`.
* Message templates gain variables for the order's products, the customer's name/mobile/e-mail, and the store's address/phone/e-mail.
* Inter-store trade: reservation, incoming-purchase lookup and purchase/sales coupling endpoints. Quantities exchanged between stores use a hundredths scale, and each purchase order line couples to exactly one sales order line.
* The product turnover report (`POST .../reports/products`) accepts an optional `includeDeliveryCostAdjustments` boolean. When true, the Excel export adds a cost-only row after each product row where the delivery cost per unit (at the time of warehouse picking) differs from the sale cost price and the delivery happened on a later calendar day than the sale. The extra rows are included in the column sum; all other numeric columns stay empty on them. Used to verify cost figures reported in the R9 accounting report.
* `POST .../pricelists/{pricelistUid}/prices/search` accepts optional `fromDate` and `toDate` in the request body; only prices whose validity period overlaps the range are returned, so clients can ask for active prices without filtering client-side. Either field may be omitted, and leaving both out keeps the existing behaviour.
* New public `GET /spec` endpoint serving the OpenAPI specification the deployment was built with. Anonymous callers get the document with internal operations stripped (matching the public Stoplight export); a valid token whose claims carry `super_admin` gets the full specification, internal endpoints included.
* Customer search takes `hasMobile` and `hasEmail` — presence filters on whether the customer has a mobile number or an e-mail address at all, rather than matching a specific one.
* The available payment methods on an order now carry a `presentation` object holding the resolved presentation values: whether the method can be used for what is being settled and why not, whether the card must be present, and the highest and lowest amount it can settle. Clients must adopt it; till behaviour is unchanged until they do.
* Margin-scheme accounting keys added to `AccountingConfigKeyENUM` and to the account-number schemas — one key for margin-scheme sales revenue, one for the VAT calculated on the margin.
* New B2B module setting `Product Prices Excluding VAT`: with it on, VAT is added on top of the product price when a line is created. A client-supplied price counts as manually set and stays without VAT, so clients must let Flow look up the price rather than sending it back; every VAT code needs a VAT rate, since a service order line now requires one.

### Changed

* `GET /orders/{uid}/status` and `POST /orders/{uid}/verify` now resolve an order registered at another store within the same organization; `PUT /orders/{uid}/status` still requires the order's own store. Requesting a store that doesn't exist now reports "store not found" instead of "order belongs to a different store."
* EHF invoice/credit note order reference now carries the buyer's mapped order number (or `NA` if unmapped) instead of the internal voucher number; the sales order reference still carries Flow's own order number alongside it. A credit note's contract reference no longer repeats the order number unless an agreement number is mapped.
* Shelf warmer export: new `Store`, `Warehouse`, `Stock In` and `Days Since Stock In` columns replace `Categories` and `Last Received`; `Last Sold` and `Last Stock Change` are now scoped to the store/warehouse being reported. Export rejected above 100,000 rows.
* Operators with the `CUSTOMER` permission may now update `ledgerNumber` on a customer.
* Adyen card terminal requests now time out after 30 seconds instead of 10.
* Margin-scheme order lines are posted to their own revenue account with the VAT on the margin booked separately, instead of as ordinary revenue on the account for their VAT code (accounting report, Navision, 24Seven, VismaNet). Unimicro, VismaBusiness and XLedger still export them as ordinary sales.

### Fixed

* Creating a tenant user with the `INTEGRATION` account type, and creating an integration token for a tenant user, both work again — they previously failed with a `500`.
* Gift card and package order lines report the `PAYABLE` allowed action while they are not yet on a receipt.
* Package order lines no longer set `reservedQuantity` to the ordered quantity on any line update. Existing lines holding a stale reservation are not corrected by this change.
* Adding recipients to a broadcast skips a duplicate address instead of failing with an internal error, whether the address repeats within the request or is already on the broadcast. Moving a recipient onto an address another recipient already has reports a conflict.

### Deprecated and removed

* Till: `receiptPrinter`, `barcodePrinter`, `appSettings` (`touchMode`, `autoLogout`, `saleStopAtDelivery`), `deviceIdentifier` and `regularPrinter` fields removed. Read printer and app settings from the paired device instead (`TOUCH_MODE`, `AUTO_LOGOUT`, `APP_SALE_STOP_AT_DELIVERY`, device `identifier`). Sorting the till list by any of these fields now returns an invalid sort field error.
* `AvailableOrderPaymentMethodResponseSchema`: `visibility`, `position`, `minimumPaymentAmount` and `amountInput` are deprecated in favour of the same fields inside `presentation`, where they hold the resolved values. They are still populated and are scheduled for removal in November 2026.

[^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.


---

# 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/august-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.
