Stock Management
- Stock Reservation
- Cost Prices
- Stock Allocation
- Store Stock
- Terminology - Stock
- Orphan Stock and Stock Matching
Stock Reservation
Stock Reservation prevents automated processes from over-allocating a unit of stock
However, it is possible for a human to override this by manually selecting already reserved stock during Stock Allocation .
How Stock Reservation Works
Sales Orders
Stock which is allocated to a Sales Order line is always reserved to that Sales Order line.
Quotes
When creating a quote, the user will be asked if stock should be reserved for it. This stock will be reserved until the quote expires.
Draft Orders
Stock allocated to draft orders will never act as a reservation. If the user would like to reserve stock, the draft should be converted to an order.
eCommerce Baskets
Stock that is added to an eCommerce basket will be reserved for that basket for the duration of the user’s session. The reservation status will be automatically cleared one hour after the user becomes inactive.
Stock Locations
Stock that
FAQs
What is Stock Reservation?
Stock Reservation is the process by which stock is reserved to Sales Orders.
How does this work with Purchase Orders?
A similar process is used with stock ordered via a Purchase Order.
Once stock has been ordered from a Supplier, and the stock has been
Can stock reservation be overridden?
Cost Prices
This page outlines the way in which Cost Prices are managed, both against individual units of stock, and directly related to Sales Orders.
The Basics
Cost prices are managed within the Variant Tab, and can also be amended within the CSV Import or by using the Price Management tool.
It is possible to set multiple Cost Prices for a single Variant if your system is enabled for Multiple Suppliers.
When stock is added to the system, it will be stored with a Cost Price. That will usually be based on the default Cost Price but may be adjusted in various ways (more detail below).
When fulfilling orders, IXO Commerce will always prioritise the oldest units of stock available.
Zero vs Null Cost Prices
When a product is created, the Cost Price will be set to 'null', unless a user actively amends it.
A 'null' Cost Price means that one has not been entered, and so IXO Commerce can not use it for any purpose. This includes, but is not limited to:
- calculating the total price of Purchase Orders (e.g. an error message will be shown)
- calculating the profit margin of an order (e.g. the unit of stock will be excluded, both as a revenue and as a cost)
- profit margin in reporting (e.g. the unit of stock will be excluded, both as a revenue and as a cost)
- stock holding (e.g. the unit of stock will be excluded from the report)
A 'zero' cost price of £0.00 must be manually entered. If it has been, this will be treated as an absolute value, and will therefore be used by the system as the Cost Price for that item. This includes, but is not limited to:
- calculating the total price of Purchase Orders
- calculating the profit margin of an order (e.g. that line would be 100% profit)
- profit margin in reporting (e.g. sales of that unit of stock would be 100% profit)
- stock holding (e.g. the stock holding for that unit of stock will be £0.00)
Stock Adjustments
Stock may be adjusted either through a Manual Stock Adjustment or via the Stock Take screen.
Manual Stock Adjustments
Item | Details |
---|---|
Adjusting a Variant | When added, stock will be added to the system with a Cost Price that matches the default Cost Price for the Variant |
Adjusting a Unique Stock Record | When added, stock will be added to the system with a Cost Price that matches the default Cost Price for the Unique Stock Record, if it is different to that stored against the linked Variant |
If your product is enabled for Multiple Suppliers and has multiple Cost Prices, when stock is added manually, IXO Commerce will use the lowest Cost Price as the default Cost Price.
Stock Take
Item | Details |
---|---|
Stock Taking a Variant | When stock level is increased, stock will be added to the system with a Cost Price that matches the default Cost Price for the Variant |
When stock level is decreased, stock will be deducted from the oldest stock records first | |
Stock Taking a Unique Stock Record | When stock level is increased, stock will be added to the system with a Cost Price that matches the default Cost Price for the Unique Stock Record, if it is different to that stored against the linked Variant |
When stock level is decreased, stock will be deducted from the oldest stock records first |
If your product is enabled for Multiple Suppliers and has multiple Cost Prices, when stock is added manually, IXO Commerce will use the lowest Cost Price as the default Cost Price.
Purchase Orders
When a Variant is added to a Purchase Order, that line is added at the default Cost Price set for that Variant.
If your product is enabled for Multiple Suppliers and has multiple Cost Prices, when a Variant is added to a Purchase Order, it will use the Cost Price linked to the Supplier attached to that Purchase Order.
Cost Prices may be amended within the Purchase Order.
If the cost price is changed on the purchase order after the stock has been received, it will update the cost price of the unit of stock.
The link to the purchase order is broken once the line has been despatched. If returned, the unit of stock will not be updated by changes against the purchase order.
Cost Prices and Sales Orders
Cost Prices are linked to Sales Order Lines, and are used for margin reporting throughout IXO Commerce.
Default Function
Item | Details |
---|---|
Variants | By default, it takes the cost price of the variant as it was at the time the order was created. |
If the default cost price of the variant changes, it does not affect existing sales orders. | |
Unique Stock Records | If a Unique Stock Record exists and has been selected when creating the order, the default cost price of the Unique Stock Record will override the variant cost. |
Existing Stock
Item | Details |
---|---|
Stock Assignment | If stock is assigned from a warehouse/stock location, it will take the cost price from the oldest unit of stock within that location. |
If the order line is for more than one item, the oldest items in that location are allocated to that order line, producing an average cost price. | |
The average cost price is calculated from the costs of the allocated units, as only one cost price can be stored per sales order line. |
Purchase Orders
Item | Details |
---|---|
Order Line Allocation | If the order line is allocated/linked to a purchase order, the cost price on the purchase order will override the default cost price. |
Goods In | When the stock item on the purchase order is received, a new unit of stock is created with a cost price that matches the purchase order. This item is then automatically allocated to the Sales Order. |
Changes to Purchase Order | If the cost price is changed on the purchase order after the stock has been received, it will update the cost price of the unit of stock and, subsequently, the Sales Order. |
Practical Examples
Example 1: Assigning Sales Orders
- Order Creation:
- Variant "Widget A" has a default cost price of £10.00.
- Sales order created on 01/01/2024 uses this cost price.
- If the cost price of "Widget A" changes to £12.00 on 02/01/2024, the sales order from 01/01/2024 still uses £10.00.
- Unique Stock Record:
- Unique Stock Record for "Widget A" has a cost price of £11.00.
- When creating the sales order, this record is selected.
- The cost price for the sales order line is £11.00, overriding the variant’s default price.
Example 2: Existing Stock
- Stock Assignment:
- Warehouse location "Main" has 3 units of "Widget A" with cost prices £10.00, £11.00, and £12.00 (oldest to newest).
- Sales order line requests 2 units of "Widget A".
- The system assigns the two oldest units (cost prices £10.00 and £11.00).
- The average cost price for the sales order line is £10.50.
Example 3: Purchase Orders
- Linking to Purchase Order:
- Purchase order for "Widget A" has a cost price of £13.00.
- Sales order line is linked to this purchase order.
- The cost price for the sales order line is £13.00, overriding the default cost price.
- Changes and Despatch:
- Cost price on the purchase order is changed to £14.00 after receiving stock.
- The new cost price of £14.00 updates the unit of stock and the sales order.
- Once the sales order line is despatched, it no longer updates from the purchase order.
Example 4: Stock Adjustments
- Variant "Gadget B" has a default cost price of £15.00.
- On 03/01/2024, 5 units of stock are manually added via a Stock Adjustment.
- These units are now in the system at the cost price of £15.00, matching the default cost price at time of the Stock Adjustment.
Example 5: Stock Take
- Warehouse "North" has 10 units of "Gadget C" with varying cost prices.
- During a stock take, it is discovered that 2 units are damaged and removed from the system.
- The system deducts the 2 oldest units first, adjusting the average cost price accordingly.
Example 6: Multiple Suppliers
- Variant "Tool D" has cost prices from Supplier A (£20.00) and Supplier B (£18.00).
- A purchase order is created with Supplier B, setting the cost price to £18.00.
- When stock is manually added, the system uses the lowest cost price, which is £18.00.
FAQs
What happens if the stock is returned after despatch?
The link to the purchase order is broken once the line has been despatched. If returned, the unit of stock will not be updated by changes against the purchase order.
How do I view the cost price history of a variant?
Stock Allocation
IF YOU AMEND A MTO PRODUCT AFTER IT HAS BEEN ORDERED, IT WILL BREAK FUTURE ALLOCATIONS
Stock Allocation
Stock Allocation is the process by which a unit of Stock is added to a Sales Order. This process can be manual or automated.
Stock Allocation is powered by Store Stock and Purchase Orders.
if automated, IXO Commerce will allocate stock based on proximity and age. It will prioritise stock from the selling Store (e.g. the Store in which the Sales Order was created), and will always allocate the oldest units first.
if there is no stock available in the selling store, IXO Commerce will allocate stock from other Stores, if available. stock will be allocated from the Location with the most available stock. other settings at Store and Location level may override that.
if there is not enough physical stock in the business, IXO Commerce will attempt to allocate stock from open purchase orders, if there is free stock on a purchase order
if there is insufficient stock available (either in the business, or in open purchase orders), then the order will fall into ‘unallocated’ and manual intervention will be required
at minimum, the auto allocation process will run hourly
manual assignment can either be done within the pos, or from the sales order edit screen. function is similar on both, but in the pos, it is not possible to split stock, or to create new purchase orders
to allocate a lpine within the pos, the user must click or tap on the line item. this will open the edit item pop up, and stock may be allocated using the drop down
to allocate a line within the sales order edit screen, the user simply uses the drop down against the relevant sales order line
a user may either
- leave the line as ‘not allocated’ (this will trigger automated allocation processes)
- mark the line as ‘do not allocate’ (this will prevent automated allocated processes)
- allocate existing stock from a location by choosing a location
- if there is not enough stock in the location for a line, e.g. 5 are neeed and location a only has 2, then a splitstock button will appear. this will allow the user to split the line, so that the first part is fulfilled from location a, and the second part can be allocated separately
- alternatively, a user may create a new purchase order using the tick box to the right of the drop down. that will create a new back to back purchase order linked to this sales order line
- new purchase orders may also be created from the required orders screen.
---
Overview
Stock Allocation is the process by which a unit of stock is added to a Sales Order. This process can be manual or automated.
Stock Allocation is powered by Store Stock and Purchase Orders.
Automated Stock Allocation
If automated, IXO Commerce will allocate stock based on proximity and age. It will prioritize stock from the selling Store (e.g., the Store in which the Sales Order was created), and will always allocate the oldest units first.
If there is no stock available in the selling store, IXO Commerce will allocate stock from other stores, if available. Stock will be allocated from the location with the most available stock, although other settings at the Store and Location level may override this.
If there is not enough physical stock in the business, IXO Commerce will attempt to allocate stock from open purchase orders, if there is free stock on a purchase order.
If there is insufficient stock available (either in the business or in open purchase orders), then the order will fall into ‘unallocated’ and manual intervention will be required.
At minimum, the auto-allocation process will run hourly.
Manual Stock Allocation
Manual assignment can either be done within the POS or from the Sales Order edit screen. The function is similar in both, but in the POS, it is not possible to split stock or to create new purchase orders.
POS Allocation
To allocate a line within the POS, the user must click or tap on the line item. This will open the edit item pop-up, and stock may be allocated using the drop-down.
Sales Order Edit Screen Allocation
To allocate a line within the Sales Order edit screen, the user simply uses the drop-down against the relevant Sales Order line.
Allocation Options
A user may either:
- Leave the line as ‘not allocated’ (this will trigger automated allocation processes)
- Mark the line as ‘do not allocate’ (this will prevent automated allocation processes)
- Allocate existing stock from a location by choosing a location
- If there is not enough stock in the location for a line, e.g., 5 are needed and location A only has 2, then a split stock button will appear. This will allow the user to split the line, so that the first part is fulfilled from location A, and the second part can be allocated separately
- Create a new purchase order using the tick box to the right of the drop-down. That will create a new back-to-back purchase order linked to this Sales Order line.
- New purchase orders may also be created from the required orders screen
- Stock Reservation prevents automated processes from over-allocating a unit of stock
However, it is possible for a human to override this by manually selecting already reserved stock during Stock Allocation.
FAQs
How does automated Stock Allocation work?
IXO Commerce allocates stock based on proximity and age. It prioritizes stock from the selling Store and allocates the oldest units first.
Can I rely solely on automation?
No, if there is insufficient stock available, the order will fall into ‘unallocated’ and manual intervention will be required.
Is it possible to over allocate?
Store Stock
Stores and Locations
In IXO Commerce, stock is managed at the Store level, with each Store potentially having multiple Locations.
Each Location can be set to one of the following statuses:
- Available: Stock is available for order fulfillment.
- Unavailable: Stock is not available for Sales Order fulfillment (typically used for damaged stock).
- Reserved: Stock is reserved and cannot be used for Sales Order fulfillment.
Units of Stock
For each item (e.g., a Variant or a Unique Stock Record), there may be multiple units of stock. These units are organized by:
Date Received: When the stock was added to the system (typically the date it was received on a Purchase Order)
Cost Price: The cost to associated with that unit of stock.
This allows for multiple units of the same item to have different cost prices and dates of receipt.
Adding Units of Stock
Units of stock can be created through:
- Manual adjustments
- Stock take
- Purchase ordering
Removing Units of Stock
Units of stock can be removed through:
- Manual adjustments
- Stock take
- Supplier returns
- Sales Order fulfillment
Practical Examples
Example 1: Multiple Units of Stock
- Storing the age of a unit of stock:
- Variant “Gadget A” has 5 units of stock in the Bristol Store
- 2 units were received on the 01/05/2024
- 3 units were received on the 24/02/2024
- Storing different Cost Prices:
- Variant ‘small-pink-shirt’ has 5 units of stock in the London Store
- 1 is stored at a Cost Price of £5
- 3 are stored at a Cost Price of £6.50
- 1 is stored at a Cost price of £7
- Total value of the stock holding is £31.50
Example 2: Stock Adjustments
- Variant "Gadget B" has a default cost price of £15.00.
- On 03/01/2024, 5 units of stock are manually added via a Stock Adjustment.
- These units are now in the system at the cost price of £15.00, matching the default cost price at time of the Stock Adjustment.
Example 3: Stock Take
- Warehouse "North" has 10 units of "Gadget C" with varying cost prices.
- During a stock take, it is discovered that 2 units are damaged and removed from the system.
- The system deducts the 2 oldest units first, adjusting the average cost price accordingly.
FAQs
Can I have units of stock with multiple cost prices for the same item?
Yes, IXO Commerce allows you to manage multiple units of the same item with different cost prices and dates of receipt. This helps in accurate cost tracking and inventory management.
Will units of stock be linked to Purchase Orders?
Yes, if a unit of stock was ordered and received as part of a Purchase Order, the Purchase Order Id will be stored alongside the cost price and date or receipt.
What happens if stock units have different dates of receipt?
IXO Commerce allows you to track the date each unit of stock was received, which helps in identifying the age of your stock and managing stock rotation effectively.
Terminology - Stock
Current Stock
This list applies to units which are currently in the business. These terms are used throughout the CMS and the POS.
Label |
Purpose |
Stock |
Total number of units in the business
Includes Available, Reserved and Unavailable |
On Hand |
Number of units held at the current Store
Includes Available and Reserved, but excludes Unavailable |
Available |
Number of units available for Sales Order fulfilment in the User's current Store
This equals 'On Hand' minus 'Reserved' |
Reserved |
Number of units Reserved to Sales Orders and eCommerce baskets
Includes all Sales Order lines which have not been despatched, and excludes orders with the following statuses:
Also includes units of stock in locations marked as 'Reserved' |
Unavailable |
Unavailable units, typically damaged or undergoing quality control
Number of units held in locations marked as 'Unavailable' |
Available Elsewhere | Number of Available units elsewhere in the business, e.g. the total amount of Available units in other Stores |
Purchase Orders
This list applies to units which are currently on order from a Supplier. These terms are used throughout the CMS and the POS.
Label | Purpose |
On Order |
Total number of units ordered from the Supplier
Typically, this is in relation to the total number of units ordered from a Supplier on a particular Purchase Order
This equals 'Allocated' plus 'Unallocated' |
Allocated |
Total number of units on a Purchase Order allocated to Sales Order lines
This equals 'On Order' minus 'Unallocated'
This figure includes units on 'Locked' Purchase Orders |
Unallocated |
Total number of units on a Purchase Order that are free to be allocated
This equals 'On Order' minus 'Allocated'
Units on a 'Locked' Purchase Order will be excluded from 'Unallocated' |
POS
This list includes labels which are only used within the POS.
Label | Purpose |
Available to order | Signifies that there are no units of the SKU within the business, and that there are none on order - fulfilment of a new Sales Order will only be possible following a Purchase Order |
Backorder lead time is xxx days | Displays the default lead time for the SKU |
eCommerce
This list includes labels which are only used within the eCommerce website.
Label | Purpose |
In Stock |
Signifies that there are units available in the business, and that a new Sales Order may be immediately fulfilled
An 'In Stock' figure is made up of the total number of Available units in Locations across all Stores enabled for web fulfilment. |
Out of Stock |
Signifies that there are no units available in the business, and that a new Sales Order may be will not be fulfilled
An 'Out Of Stock' figure is determined by checking the total number of Available units in Locations across all Stores enabled for web fulfilment. |
Available (allow XXX days for delivery) | Displays the default lead time for the SKU |
Low Stock |
Signifies that there are only a small number of Available units
Triggered if the number of 'In Stock' units is less than the 'Low Stock (order at)' figure on the Inventory tab |
Available to pre-order |
Signifies that stock is coming into the business, which will be used to fulfil a new Sales Order
The appropriate lead time will be displayed in the checkout
Only displays if 'allow back order' is not enabled
Total number of units available to pre-order equals the total amount of 'unallocated' units for that SKU across all Purchase Orders |
Orphan Stock and Stock Matching
Orphan Stock
Orphan stock occurs when a unit of stock becomes disassociated from its original purchase order. This can happen in several ways, such as manual stock adjustments made through the inventory screen or the addition of new stock during a stock take. Another common issue arises when non-existent stock is dispatched—if that stock is later returned, it remains unlinked to any purchase order, further complicating inventory tracking.
Orphan Stock Cost Price
Whenever units of Orphan Stock are created, they will inherit the default cost price for that Variant or Unique Stock Record.
Example 1
A customer has bought a Red Hat. There are no stock records for the Red Hat, but Bob has found one. He packs up the item and marks the order as despatched.
The Sales Order is not linked to a Purchase Order, so the true cost of the item is not known.
The Cost Price of the Variant as of today is £5.43, so £5.43 is recorded against the Sales Order and is used in margin reporting.
Example 2
In IXO Commerce, Shelf A has 5 Blue Hats that arrived on PO123 at £2.34 each.
During Stock Take, those are not found, and the stock is removed. At the same time, Shelf B is found to have 5 Blue Hats, so these are added.
If there was no link to another stock record, those new ones would be added at today's cost price of £3.45.
Automated Stock Matching will automatically resolve this problem (see below)
Stock Matching
IXO Commerce will attempt to match Orphan Stock Records as best it can, in order to reduce their number. This will occur in a few specific cases:
- If adjustments are made within a week of each other, for the same SKU
- If adjustments take place within the same store
If automatic Stock Matching is not possible, it will still be possible for a user to manually amend the Cost Price of Orphan Stock Records via the Inventory tab.
Example 1
A customer has bought a Red Hat. There are no stock records for the Red Hat, but Bob has found one. He packs up the item and marks the order as despatched.
The Sales Order is not linked to a Purchase Order, so the true cost of the item is not known.
The Cost Price of the Variant as of today is £5.43, so £5.43 is recorded against the Sales Order and is used in margin reporting.
There is no matching adjustment, so nothing can be matched automatically.
Example 2
In IXO Commerce, Shelf A has 5 Blue Hats that arrived on PO123 at £2.34 each.
During Stock Take, those are not found, and the stock is removed. At the same time, Shelf B is found to have 5 Blue Hats, so these are added.
Because these Stock Takes took place within a week of one another, IXO Commerce can update the Orphan Stock Records with Purchase Order and Cost Price information; the Stock Records on Shelf B will be linked to PO123, and their cost price will be set to £2.34.