The warehouse value calculation method, the order in which products are used, and the cost price of a product recorded for a job are controlled by separate settings. The sales price of the job's product line is also saved separately. Check the appropriate setting depending on whether you are investigating the monetary value of a warehouse, the purchase batches to be consumed, or the cost of a task or service request.

Shared settings and how to change them

You need administrator permissions to change the shared calculation settings. In the browser's side menu, open Settings, select the Settings tab, and open the Product and warehouse settings section. Click a setting's name to open its editing window.

Warehouse value calculation method offers the options FIFO and MAC (moving average cost). The selection applies to all warehouses in the environment and is automatically assigned to new warehouses. It is not changed on the warehouse's own form. The default for a new environment is FIFO.

If you change the calculation method, select Save and confirm the change for all warehouses. Switching is blocked once the customer account has a history of associations between products and warehouse slots. This restriction applies to the entire customer account, even if current balances are zero or the history is in a warehouse other than the one you are viewing. Simply resetting balances to zero does not allow you to switch.

Product Cost Pricing determines product costs for tasks and service requests. Without the waterfall, select one Cost pricing method. When you select Enable waterfall rules, arrange the rules by dragging the handle to their left. Save and reopen the setting to verify the selection and order.

In a new environment, the waterfall is disabled and the cost method is Sales price. An existing environment may have a different saved selection. Changing the cost setting does not, by itself, recalculate previously saved job cost lines.

The order in which batches are used is a separate selection

In the side menu, open Manage warehouses → Warehouses and select a warehouse. The Inventory usage principle shown in its details controls automatic batch selection: FIFO uses the oldest purchase batches and LIFO the newest. If you have permission to edit the warehouse, open Edit to check or change the selection.

LIFO is a usage principle, not a warehouse value calculation option. Selecting a batch separately for a product line and the handling of insufficient stock can affect which batches the products are ultimately deducted from. If needed, read about warehouse exception settings.

How is warehouse value calculated?

FIFO: the warehouse value is the sum of the remaining quantities on batch lines multiplied by their unit values. The unit value is the batch's purchase price or, instead, the Current value per product set on the batch line. Purchase batches marked as depleted are excluded. A missing purchase price is treated as zero in this calculation.

MAC: a shared, quantity-weighted average purchase price is calculated for each product across all warehouses. An individual warehouse's value is based on its remaining product quantities and the products' shared average prices. Quantities on batch lines valued at a current value use their own unit value instead of the shared MAC price; a value explicitly set to zero also applies.

The MAC warehouse value includes positive remaining batch balances whose receipt and creation times are no later than the calculation time. FIFO value calculation has no corresponding receipt-time cutoff. A receipt dated in the future can therefore affect these calculation methods differently.

The moving average cost is recalculated on purchases and stocktakes that increase the balance:

(previous total quantity × previous average price + added quantity × unit price of the addition) ÷ (previous total quantity + added quantity).

During a stocktake, only the added quantity is valued at the unit price of that purchase batch. The total quantity also includes products transferred to a reservation site. Sales, usage, and stocktakes that reduce the balance do not, by themselves, change the average price, but they reduce the quantity used to calculate the next addition. Internal transfers, reservations, and returns from reservations do not, by themselves, change the shared average price.

Example: warehouse A has 10 units of a product at an average price of €5. Another 10 units are purchased for warehouse B at €7 each. The new MAC is (10 × 5 + 10 × 7) ÷ 20 = €6. A's quantity remains at 10 units, but the value of its products increases from €50 to €60 unless they have a separate current value. A purchase in another warehouse can therefore also change the value of products already in stock. With FIFO calculation, B's purchase does not change the value of A's batches.

Checking warehouse value and average purchase prices

In the warehouse details, select Warehouse value. The warehouse feature must be enabled, and you need permission to view that warehouse. The view shows the most recent saved calculation and its time, so the amount may not yet reflect the latest events.

Update value starts a new calculation in the background. Allow it to finish and verify that the calculation time has updated. The update saves a new warehouse value and replaces the current breakdown by product; it does not change product balances. A zero value is also saved for an empty warehouse.

History in the value window opens the saved daily values and explanations of changes. Correcting a purchase price or entering a backdated purchase can also change previously calculated values. Read about viewing warehouse value history when investigating when or why a change occurred.

You can find a product's shared average prices under Manage warehouses → Products → open a product → Product pricing tab → Average buy prices. You can see the current weighted and unweighted average purchase prices and the latest update time.

In the shared unweighted average purchase price, each purchase batch has equal weight regardless of its quantity. This is different from MAC and from the warehouse-specific average price described below. Prices on screen are rounded to two decimal places; hover over a price to see a more precise value. Display rounding does not mean that intermediate steps in the MAC formula are rounded in the same way.

Open Average buy price history in the same place. The purchase batch details and the Average buy price change log, opened using the row's change log icon, let you investigate, for example, the effect of a purchase price correction, a backdated purchase, or a stocktake. If no information is available yet, the view tells you that it will be calculated after the next purchase event. For more detailed instructions, see viewing purchase batches and purchase prices.

Six methods for calculating a job's product cost

Without the waterfall, only the selected calculation method is used. The unit cost is multiplied by the quantity on the job's product line. Warehouse-based methods require a warehouse to be selected on the product line.

  • Sales price: uses the product's own sales price as its cost. This selection does not automatically apply a customer price table or the customer's discount and margin rules.
  • FIFO/LIFO (batch price): uses the selected batch's purchase price or refines the cost later using the prices of the batches consumed. This method is not applicable to a MAC warehouse. The subsequent processing is described in the next section.
  • Moving average cost (MAC): uses the latest shared weighted average price for the product that is valid at the calculation time. This method requires a MAC warehouse. If no saved shared average price exists, the fallback calculation uses the original quantities and purchase prices of batches in the selected warehouse. It may therefore differ from the shared MAC price used to calculate warehouse value.
  • Last buy price: uses the purchase price of the most recent purchase batch line by receipt time across all warehouses. The batch does not need to have any products remaining. Future receipt times are not excluded, so this rule can use a price that MAC does not yet use.
  • Average purchase price in warehouse: first calculates the average purchase price of the product lines within each purchase batch in the selected warehouse, then calculates the average of these batch-specific prices. Each batch has equal weight. Depleted batches may also be included.
  • Weighted average purchase in warehouse: calculates sum(remaining quantity × purchase price) ÷ sum(remaining quantity) using positive remaining batch quantities in the selected warehouse. It uses purchase prices, not the current values of batch lines, and differs from the MAC price for the entire customer account.

Waterfall: order and additional rules

In the waterfall, the first rule that produces a price determines the cost. The price must be zero or greater. Zero is also a valid result and stops the calculation: the next rule is then not used. If a rule requires a warehouse, customer, batch, or price information that is missing, the calculation moves to the next rule.

All the methods described above appear in the waterfall under the same names, except that Sales price is called Product sales price. The following additional rules are also available:

  • Customer price table: uses the product price in the job's first customer's valid price table. The rule requires a customer and a price table entry for the product.
  • Customer product cost adjustment: uses the job's first customer's valid product cost discount or margin. A positive discount reduces the product's sales price: sales price × (1 − discount percentage ÷ 100). Otherwise, a positive margin increases the purchase price: purchase price × (1 + margin percentage ÷ 100). If both are positive, the discount takes precedence. The base price used must be positive. Here, margin means a markup on the purchase price, not a share of the final sales price.
  • Product buy price: uses the purchase price saved in the product's basic details, not the purchase batch price.
  • Current value per product (batch line): uses the current value set on the product line of the selected purchase batch. It requires a selected batch, warehouse, and warehouse slot, and a current value set on that line. Stock availability is checked using the integer part of the quantity: a quantity below one product does not use this rule, and for 1.5 products, for example, the check compares the balance against one. You should therefore verify the actual availability for a decimal quantity separately.

The initial waterfall order is MAC, weighted warehouse average price, unweighted warehouse average price, FIFO/LIFO, last buy price, customer price table, customer product cost adjustment, product buy price, product sales price, and the batch line's current value. However, check the saved order. For example, a current value rule placed last will not be used if an earlier rule already produces a price.

If you want the customer price table to take priority, move it before the general price rules. If the price table determines the price, a later discount rule is not applied on top of it. Selecting a purchase batch does not override earlier waterfall rules either.

When an individual calculation method cannot find a price, or no waterfall rule produces a valid price, the cost is zero. Zero alone therefore does not indicate that the product is free: also check the source data and the requirements of the selected rule.

Refinement of FIFO/LIFO costs

In the individual FIFO/LIFO mode, a separately selected purchase batch supplies the cost directly from the purchase price on the product line for that slot. A price can be obtained even if the batch balance is insufficient for the full quantity. A calculated cost therefore does not prove that the corresponding quantity could be deducted from the warehouse.

Without a batch selection, the FIFO/LIFO cost initially uses the product's sales price as a temporary price and awaits processing. When warehouse events are created, background processing replaces the pending cost with the sum of the quantities consumed from each batch multiplied by their prices. The same applies to the waterfall if the FIFO/LIFO rule determined the price without a batch selection. A cost determined by another rule is not replaced during this subsequent processing.

If priced batch events were not created for the full quantity, the missing portion is priced using a fallback price. The price is sought in batches in the product's selected warehouse and in the selected slot, if one is set: from the oldest non-depleted batch in FIFO order and the newest non-depleted batch in LIFO order. If all batches are depleted, the search uses the newest batch. If no suitable price is found, the product's sales price or zero is used. A pending cost without a warehouse slot can also be priced this way.

Check the final cost and the actual stock deduction separately. Pricing the missing quantity does not correct a missing consumption entry.

Rounding and the difference from the sales price

MAC, both warehouse average prices, the batch line's current value, and the customer product cost adjustment round the unit cost to two decimal places before multiplying it by the quantity. The waterfall's FIFO/LIFO rule also rounds the unit price of a separately selected batch to two decimal places.

The product's base prices, the customer price table, the last buy price, and the direct batch price in the individual FIFO/LIFO mode do not have the same unit price rounding step. FIFO/LIFO background processing sums the prices multiplied by quantities for the batch events. A calculation based on rounded prices shown on screen can therefore differ from the saved total.

The product cost, the cost method used, and the sales price are saved separately for the job. Manually overriding the product line's sales unit price does not override the cost calculation. See adding a product to a job and overriding the sales unit price.

How to verify the result

Reopen the setting and check the calculation method or waterfall order. Compare the same product, product line quantity, warehouse, warehouse slot, and batch, if any. For customer rules, also check the job's first customer and their valid price information.

On Android and iOS, Add Product, opened from the job's Products section, passes the quantity, warehouse, and warehouse slot to the server for calculation. The product addition window's Choose Warehouse and Choose Slot on Android, and Select warehouse and Select slot on iOS, therefore affect the inputs to warehouse-based cost rules on mobile as well. The shared settings and value checks described in this guide are handled in the browser.

Wait for the warehouse value update and any subsequent FIFO/LIFO processing to finish. Verify the warehouse value calculation time, the job's final product cost, and the actual warehouse events separately. The current warehouse value does not, by itself, explain a previously created job cost line.