Table of contents
- New setting: Automatically fetch shipping label after picking
- Returns: Language translations for products and return portal
- Warehouse setup: Select multiple locations and racks at once
- Barcode scanning with GS1 codes now works consistently across all workflows
- Manual pack during pick: New "Park" option for missing items
- Replenishment: Fewer duplicate tasks and option to combine picks
- Cross-docking: Select number of labels and define shipment dimensions
- Receiving: Import serial numbers via file upload
- AutoStore updates
- OpenAPI
- Product update (PATCH) via OpenAPI: New endpoint for partial updates
- Faster creation and updating of purchase orders via OpenAPI
- Faster handling of purchase order lines via API
- Planned shipping date can now be updated and cleared on existing orders
- OpenAPI: Delivery note comment can now be set via sales orders
- OpenAPI: Long response times for purchase orders eliminated
- OpenAPI: Picked serial number, expiry date, and lot number now available on pick order lines
- Performance updates
- Other updates
- Table settings: "Show all" and "Hide all" columns with one click
- Bundles: Search field now clears automatically
- Receiving: All packaging types can now be selected—including single units
- Homerunner: Extended dangerous goods setup and automatic submission
- Lot-controlled items: Partial picking now possible
- New option: Ship available items at first release
- Webshipper: Configure shipping products via Host ID
- Homerunner: Shipping cost now included for customs
- Returns: Separate delivery address for exchanges
- Move load carrier: Select specific carriers
- Pallet picking: Print packing slip and label together
- Pallet picking: Show pending add-on lines
- Pallet picking: Customer name now shown
- Empty locations report: Item numbers now shown
- Shipped units report: Lot and expiry data added
- Serial numbers in stock: New fields
- Pallet receiving: Button renamed
- Return order lines: All fields now available
- Product import: ExternalLocation now supported
- Bug fixes
Expected release date: June 24th 2026
New setting: Automatically fetch shipping label after picking
A new option has been introduced for when shipping labels are retrieved from the carrier: "Order picked".
With this setting, the label is automatically fetched in the background as soon as an order has been picked. This means that in most cases, the label is already ready when the packing operator scans the order at the packing station – eliminating the need to wait for the label to be generated.
How does it work?
- The picker notices no difference – picking is completed as usual, and the label is fetched in the background without delay.
- The packing operator scans the order at the packing station. If the label is ready, packing continues immediately. If it is still being fetched, a message will prompt the operator to scan again shortly.
- If something goes wrong during the automatic retrieval, the system will fetch the label as a fallback – ensuring that packing never stops.
When is this setting relevant?
This setting is suitable for shipping products that do not require weighing or measuring during packing. If you use shipping products that require weight or dimensions at packing (e.g. for shipments to countries requiring customs), you should continue using the label retrieval setting in "Pack".
The setting is activated by an administrator in the shipping method configuration under Settings > Integration > Forwarder configurations.
Returns: Language translations for products and return portal
If you ship goods to customers in other countries, you may have experienced that product descriptions and texts in the return portal were only shown in the language in which the product was originally created. For example, a German customer opening the return portal might see all product names in Danish.
You can now create language translations per country for products and customize all texts in the return portal to the relevant language.
Product translations
You can create translations of product fields (SKU, description, brand, size, and color) per country code. Translations can be maintained in three ways:
- In PeakWMS – via a new translation dialog directly on the product (Product translations).
- Via Excel import – upload a file containing translations matched by SKU and country code. Existing translations are updated, and new ones are created.
- Via OpenAPI – a new endpoint for creating and retrieving translations, allowing integration with your ERP or PIM system.
When a translation exists for the relevant country, it is used automatically:
- On the packing slip – product descriptions are shown in the destination country’s language.
- In the return portal – end customers see product names and descriptions in the correct language.
If no translation exists for the country, the original values are shown as before.
Return portal texts
All UI texts in the return portal (buttons, headings, info texts, etc.) can now be translated per return portal. Administrators can find the new "Translations" section under return portal settings, when editing the return portal, where original texts are shown alongside fields for translations. Empty fields retain the default text.
Additionally, the image display in the return portal has been improved so that all product images are now shown in a consistent square format for a cleaner and more uniform look.
Warehouse setup: Select multiple locations and racks at once
Previously, in the warehouse setup (Warehouse Editor), you could only work with one location or rack at a time. For example, moving an entire row of racks required selecting, moving, and placing each rack individually – which was time-consuming for larger changes.
What’s new?
You can now select multiple locations and/or racks at once and move or copy them together:
- Multi-select – select multiple locations or racks simultaneously.
- Move – move the entire selection to a new position.
- Copy – copy selected locations/racks, e.g. to quickly create an identical section elsewhere in the warehouse.
This significantly speeds up building and adjusting warehouse structures – especially during major changes, expansions, or when setting up new warehouses.
Barcode scanning with GS1 codes now works consistently across all workflows
If you use GS1 barcodes (e.g. GS1-128 or GS1 DataMatrix), errors could previously occur where the system rejected the barcode during packing, putaway, or stock transfers – even though it worked during picking.
This was because some workflows compared the scanned code directly with the stored barcode without correctly interpreting the GS1 format. This has now been fixed so GS1 barcodes are handled consistently across all workflows: picking, packing, putaway, transfers, and replenishment.
Standard barcodes (non-GS1) work exactly as before.
Manual pack during pick: New "Park" option for missing items
When manually picking orders using the "Manual pack during pick" process, and one or more items were missing, you previously only had two options: ship what was picked or put everything back. A third option is now available: Park the order.
This allows the already picked items to be set aside in a designated parked location using a printed parked label, while the system automatically creates a new picking task for the missing items. When those items become available and are picked, the system prompts the operator to combine the two parts so the order can be shipped as one.
In short: you no longer need to choose between shipping incomplete orders or starting over – orders can now be parked and completed later.
Note: This feature only applies to picking groups using "manual pack during pick". In other picking processes this feature is already standard.
Replenishment: Fewer duplicate tasks and option to combine picks
The replenishment calculation has been improved in three areas:
- Higher priority first
If a high-priority configuration requires items already reserved for a lower-priority task, the system can now reassign the reservation. - Fewer duplicate tasks
If a recalculation finds an existing task covering the same need, the quantity is increased instead of creating a new task. - New icon during picking
When picking a replenishment task, an icon indicates if other tasks exist for the same stock. Operators can view and take over those tasks to pick them together. The system prevents simultaneous takeover by multiple users.
Cross-docking: Select number of labels and define shipment dimensions
Previously, cross-docking only allowed either one label for the total quantity or one per item (pick-alone). You had no control over label count or shipment dimensions.
What’s new?
- A new "Number of labels" field allows operators to define how many labels should be created.
- Quantities are distributed as evenly as possible across labels (e.g. 7 items across 3 labels → 3, 2, 2).
- Shipment dimensions (width, length, height, weight) can be entered per label.
If not provided, dimensions are calculated automatically during label printing.
Receiving: Import serial numbers via file upload
Previously, serial numbers had to be scanned one by one. This was time-consuming for large deliveries.
What’s new?
Serial numbers can now be imported via a text file (.txt or .csv) with one serial per line.
Key points:
- File must match the remaining quantity
- Validation includes format, duplicates, and existing inventory
- All-or-nothing import: errors reject the entire file (up to 20 invalid entries shown)
- Manual and imported entries can be combined
- Imported serials are counted but not individually listed for performance
AutoStore updates
All barcodes are now included in product export
If a product has multiple barcodes, all are now sent to AutoStore – ensuring recognition regardless of which barcode is scanned.
Orders correctly sent after pick group recalculation
Orders moved into automation pick groups are now automatically sent to the automation system, preventing them from getting stuck.
Pick date now based on planned shipping date
Pick date now uses the planned shipping date instead of order date, ensuring proper prioritization.
Error messages during receiving now localized
Error messages for automation containers are now shown in the user’s language and include specific container and location details.
Order date and time sent to AutoStore
Pick lists now include order date and time, enabling better prioritization and visibility in AutoStore.
OpenAPI
Product update (PATCH) via OpenAPI: New endpoint for partial updates
If you use PeakWMS OpenAPI to update products, a new endpoint has been added that allows you to send only the fields you want to change—without including all other product data.
Previously, the update endpoint required all product fields to be included, even if they were not being changed. With the new endpoint, you can, for example, send just a new price or description while leaving the rest of the product unchanged.
What does this mean in practice?
- Product update integrations become simpler and more reliable—there is less risk of accidentally overwriting fields you did not intend to change.
- The old endpoint still works but is marked as deprecated and will be phased out over time.
This change is only relevant if you have an integration that updates products via PeakWMS OpenAPI. Daily use of PeakWMS is not affected.
Faster creation and updating of purchase orders via OpenAPI
Previously, sending purchase orders with many lines via integration could be unnecessarily slow. The system looked up each item line individually—for example, an 80-line purchase order could require up to 100 separate database lookups.
Now, all item lookups are grouped and executed in a single query per type (SKU, barcode, etc.), regardless of the number of lines. This significantly improves performance, especially for large purchase orders.
This improvement happens behind the scenes and does not affect how integrations are used. Everything works as before—just faster.
Faster handling of purchase order lines via API
When updating purchase orders with many lines, the system previously processed each line individually, resulting in multiple database lookups.
Now, lines are handled collectively in memory instead of being looked up one by one. This greatly improves performance for large orders.
This change applies only to purchase orders received via OpenAPI integration. Other integrations (e.g. Business Central, Stocky, Uniconta) are not affected.
Planned shipping date can now be updated and cleared on existing orders
Previously, when an order with a planned shipping date was created via OpenAPI, the date could not be properly changed or removed afterward:
- Full update (PUT): The planned shipping date was ignored, and the original date was retained.
- Partial update (PATCH): The date could be changed but not cleared—sending an empty value had no effect.
This caused issues for customers who rely on the planned shipping date for prioritization (e.g. AutoStore workflows).
What has been fixed?
- Full update (PUT): The planned shipping date is now always updated. If no date is provided, the field is cleared—consistent with other fields.
- Partial update (PATCH): The date can now be both updated and cleared by setting it to null.
This change applies only to OpenAPI updates. Other integrations are unaffected.
OpenAPI: Delivery note comment can now be set via sales orders
Warehouses using OpenAPI sales orders could previously not set a delivery note comment on outgoing orders. This free-text note (e.g. instructions for delivery drivers) had to be entered manually in PeakWMS.
What’s new?
A new field DeliveryNoteComment has been added to the sales order endpoint:
- Optional free-text (max. 2,000 characters)
- Stored on the order and printed on the delivery note
How it works:
- POST: Set the comment when creating an order
- PUT: Replaces the comment; omitted field clears it
- PATCH: Updates only the comment; empty value clears it
- GET: Returns the comment for validation
- Validation: Comments over 2,000 characters are rejected
The field is optional—orders without it work as before.
OpenAPI: Long response times for purchase orders eliminated
Customers with large purchase orders experienced very long response times when creating or updating via OpenAPI—sometimes exceeding 100 seconds.
Cause
Heavy per-line operations and repeated database lookups caused poor scalability, especially for orders with many lines, expected delivery dates, or pre-order statuses.
Fix:
The creation and update processes have been optimized:
- Heavy operations have been streamlined
- Performance now scales efficiently, even for large orders
This fix applies to both POST (create) and PUT (update) endpoints.
OpenAPI: Picked serial number, expiration date, and lot number now available on pick order lines
Previously, integrations retrieving pick orders could not see which serial number, expiration date (BBD), or lot number was actually picked per line.
What’s new?
Three new fields are now included in pick order lines:
- PickedSerialNumber – the serial number picked
- PickedBestBeforeDate – the expiration date of the picked stock
- PickedLotNumber – the lot number of the picked stock
Details:
- Nullable fields – return null if not relevant
- Available for archived pick orders as well
- Fully backward compatible
- No configuration required—fields are included automatically and documented in Swagger
Performance updates
Faster generation of packing slips and order documents
If a webshop logo had a very high resolution, generating order documents such as packing slips could previously take a long time—in some cases up to 5 seconds per document.
We have now optimized image handling so that even large logos are processed quickly. This results in noticeably faster document generation in daily operations.
Faster product search
Searching for products in stock—e.g. by barcode, SKU, or description—is now significantly faster. We have optimized how search results are retrieved, greatly reducing response times.
In practice, this means search results appear almost instantly instead of requiring several seconds of waiting.
Purchase demand: Faster and more stable calculation
Previously, recalculating purchase demand for customers with many products could cause the system to freeze or fail—especially when many purchase lines already existed. The progress bar could show 100% while the system was still deleting old calculations in the background, which could take a long time or time out.
This has now been resolved with a new approach:
- New results are created immediately
- Cleanup of old data occurs automatically in the background
This means:
- Calculations feel faster since you no longer wait for cleanup first
- Fewer errors and timeouts, even for large assortments
- Cleanup happens automatically—no action required
Inventory value report: Faster balance calculation
The calculation of inventory balance by date has been optimized, making the report generate significantly faster—especially for warehouses with many items and movements.
Improved performance for bundle product inventory adjustments
When orders with bundle products were created or updated, the system previously fetched each related product individually, resulting in many database calls.
Now, all related products are retrieved in a single query, and inventory adjustments are processed collectively. This significantly improves performance, especially for customers with many bundle products.
The change happens behind the scenes—functionality remains the same, just faster.
Other updates
Table settings: "Show all" and "Hide all" columns with one click
Previously, administrators had to move columns one by one between visible and hidden lists.
Now two new buttons are available:
- Show all – makes all columns visible
- Hide all – hides all columns
Example: Instead of manually hiding 37 out of 40 columns, click "Hide all" and add the 3 needed columns.
Bundles: Search field now clears automatically
When adding sub-products to a bundle, the search field is now automatically cleared after selecting a product—making it easier to add multiple items without confusion.
Receiving: All packaging types can now be selected—including single units
Previously, only packaging levels like cartons or pallets could be selected during receiving.
A new setting "Storage relevant" allows administrators to define which packaging levels can be selected.
System behavior:
- No stock-relevant units → no selection shown
- One → selected automatically
- Multiple → user must choose
Applies to receiving, returns, stock counting, and stock transfers.
Homerunner: Extended dangerous goods setup and automatic submission
Previously, only hazard class and UN number could be set.
Now full dangerous goods information can be configured, including:
- UN number and hazard class
- Proper shipping name
- Packing group
- Tunnel restriction code
- Packaging details
- Environmental hazard indicators
All data is automatically sent with shipments via Homerunner.
Lot-controlled items: Partial picking now possible
Previously, you could only pick the full quantity or mark a shortage.
Now, partial pick is available (if no specific lot is required):
- Pick available quantity
- System creates a new task for the remaining quantity from another lot
If a specific lot is required, behavior remains unchanged.
New option: Ship available items at first release
Orders are normally only released when all lines are in stock.
With the new setting, orders can be partially released on first release:
- Available items are picked and shipped immediately
- Remaining items are released later
The setting is off by default and must be configured per order.
Webshipper: Configure shipping products via Host ID
You can now enter a Host ID directly instead of selecting from a list.
- Enter Host ID → product auto-filled
- Select product → Host ID auto-filled
- Fields remain synchronized
Homerunner: Shipping cost now included for customs
Shipping cost is now included in shipment data sent to Homerunner:
- Sent with currency
- Includes VAT and discounts
- Supports zero-value shipments
Return labels are not affected.
Returns: Separate delivery address for exchanges
Exchange shipments can now be sent to a different address than the original order.
- Supports API-defined addresses and parcel shop IDs
- Default behavior copies return address
- Address can be edited later
All shipping integrations now use the exchange address.
Move load carrier: Select specific carriers
When moving load carriers:
- Select none → all moved (as before)
- Select specific ones → only those are moved
The UI shows how many are selected.
Pallet picking: Print packing slip and label together
New completion option: "Delivery note and order label"
Both documents are printed in one step when finishing a pallet.
Renamed field + new field
- "Planned shipping date" renamed to "Planned release date"
- New field: "Planned shipping date" (informational only)
Pallet picking: Show pending add-on lines
Consolidation screen now shows pending pick lines from other orders—helping workers decide whether to consolidate or wait.
Pallet picking: Customer name now shown
Customer name is now displayed on the order info screen when starting pallet picking.
Empty locations report: Item numbers now shown
New column shows which SKUs are assigned to empty fixed pick locations.
Shipped units report: Lot and expiry data added
New columns:
- PickedLotNumber
- PickedBestBeforeDate
Improves traceability.
Serial numbers in stock: New fields
Two new optional fields:
- SupplierComment (max 512 characters)
- Affiliation (max 256 characters)
Available in UI and via OpenAPI.
Pallet receiving: Button renamed
"Print label" → "Print Stock Item label"
Return order lines: All fields now available
All fields are now visible, searchable, and filterable in the overview.
Product import: ExternalLocation now supported
The ExternalLocation field can now be imported via Excel—enabling bulk updates.
Bug fixes
Order release: Fixed issue with duplicate item numbers across lines
If an order contained the same item number on multiple lines—e.g. across different delivery groups—the system could incorrectly put the order on hold, stating that stock was reserved for older orders.
The issue occurred because reservations for older orders were counted multiple times—once per order line—instead of once per order. This made the system believe less stock was available than actually existed.
This has now been fixed so reservations are only counted once, regardless of how many lines contain the same item. Orders previously placed on hold incorrectly will now be released as expected.
Partial picking: Shipping label now correctly regenerated when splitting orders
When an order was partially picked and split into two shipments, the original shipping label was previously reused for the first shipment. This caused mismatches between the label (weight/content) and the actual package.
Now, a new shipping label is automatically generated when an order is split. The label correctly reflects the package contents and ensures accurate freight calculation.
Returns: Fixed error when returning bundle products
Returning items that were part of a bundle could previously result in a system error (HTTP 500), especially if a return order already existed.
This has been fixed so bundle returns now work correctly—even with existing return orders. Return reasons and actions are still properly propagated to sub-items.
Picking: Correct release rule used for alternative locations and short picks
When release rules were merged, the system lost track of the original rule for order lines:
- Alternative pick locations could show too few options
- Short pick logic could incorrectly flag items
Now, the system tracks the original rule and evaluates the entire rule chain:
- Alternative locations show all relevant stock
- Short pick logic searches correctly across rules
Applies only to new pick orders.
Dialogs: Date filters now correct across time zones
Relative date filters (e.g. "last hour", "today") could previously show incorrect results due to UTC-based calculations.
Now all calculations use local time, ensuring consistency with dashboards.
Homerunner return labels: Fixed issue with two address lines
Customer address lines were previously merged into one, exceeding carrier limits.
Now, they are sent as separate fields—ensuring labels are generated correctly.
Inventory adjustment: Pick orders with picked lines no longer deleted
Previously, reducing stock to zero could delete entire pick orders—even if some lines were already picked.
Now:
- If at least one line is picked → the order is preserved
- If no lines are picked → the order is removed as before
This ensures picked work is never lost.
Consolidation: Canceled main order no longer blocks child orders
If a main order in a shipment group was canceled after picking:
- Child orders became stuck
- Packing could not proceed
Now, during scanning:
- Main order is canceled
- Stock is restored
- Child orders are released
No manual intervention required.
Webshipper: Customer name no longer duplicated
For private addresses, the customer name could appear twice on labels.
Now:
- Company name is only filled if present
- Customer name appears once
Packing station: Resend orders no longer block workflow
"Resend" orders previously prevented the packing station from resetting.
Now:
- The system correctly distinguishes resend vs split orders
- Workstation is reset after completion
Consolidation: Canceled lines no longer block packing
Canceled lines were incorrectly included during consolidation.
Now, they are excluded—ensuring orders can complete properly.
Pallet picking: Zero-count only triggered when location truly empty
Zero-count verification was incorrectly triggered even when stock existed on other load carriers.
Now, it checks all stock at the location before triggering.
Business Central: Failed postings no longer block adjustments
Previously, failed journal postings could permanently block inventory adjustments.
Now:
- Old journal lines are cleared automatically
- Errors trigger alarms in PeakWMS
3PL: Goods owner deletion no longer blocked
Shared freight configurations previously blocked deletion.
Now:
- Cross-references are cleaned up automatically
- Deletion completes successfully
Picking groups: Archived orders no longer block deletion
Archived pick orders previously prevented pick group deletion.
Now:
- References are cleared automatically
Rack deletion: Counting lines no longer block deletion
Pending stocktake lines could block rack deletion.
Now:
- These lines are automatically removed
Location deletion: Inactive workstations no longer block
Inactive workstation references previously prevented deletion.
Now:
- References are cleared automatically
Shipmondo: Customer name no longer duplicated on parcel shop labels
Duplicate names on labels have been fixed—customer name now appears once.
POS adjustments: Alarm when adjusting QA stock
Adjustments on QA (blocked) stock were silently ignored.
Now:
- A clear alarm is triggered
- No automatic adjustment is made
Receiving: "Close inbound delivery" button now accessible
After receiving the last line, the user is now kept on the correct screen where the delivery can be closed directly.
Purchase/Credit note: "Create" button always enabled
Orders created via API without forecast method blocked credit note creation.
Now:
- Default value is set automatically
- Credit notes can be created normally
Shopify: Integration fields preserved during OAuth
Previously, retrieving an access token reset all other fields.
Now:
- Existing values are preserved
Zone picking: Premature box scan fixed
Box confirmation was triggered too early due to missing logic for load carrier paths.
Now all paths are considered correctly.
Menu: Right-click on "Settings" now works
The settings button now behaves like a proper link, allowing standard browser actions.
HostedShop: "Test connection" now respects language setting
Previously, language setting was ignored during testing.
Now:
- Correct language is used
- Errors reflect actual configuration
External warehouse movement: Quantity display fixed
Rapid +/- clicks did not update the UI correctly.
Now:
- Display always reflects actual quantity
Employee performance: "Select all" fixed
Multiple issues with employee selection have been resolved:
- Toggle works correctly
- Search works properly
- Admin users excluded
- Selection persists after reload
Var denne artikel nyttig?
Fantastisk!
Tak for din feedback
Beklager, at vi ikke var nyttige
Tak for din feedback
Feedback sendt
Vi sætter pris på din indsats og vil forsøge at rette artiklen