Stock cost is the total cost of your available unsold stock. When you purchase a product at different prices and sell them at a marked-up price, you want to know the cost of your product in stock based on the purchase price. Calculating this for each product is not the right approach.

In Zenoti, businesses can view the cost of on-hand stock based on the perpetual average costing method.

In this costing method, the cost of the product is prorated with every purchase order or transfer order. For any unaccounted increase in stock due to transactions such as audits, there is no change in the perpetual average cost, and the stock is added as per the perpetual average cost.



Formula

Perpetual Average Cost = Cumulative Stock Cost / Cumulative Stock Quantity

List of transactions that contribute to average cost

Important: Retail sales do not have an impact on the average cost.

  • Receive Purchase Order

  • Receive Transfer Order

  • Return Stock to Vendor

  • Convert Retail to Consumable (Store to Store)

  • Bundle
    When products are bundled as a kit, the cost of the kit is the sum of the cost of each individual product in it.

  • Unbundle
    The cost of the individual product is prorated based on the cost price of each item.

Example

Let’s consider the following stock-ins and stock-outs of Hair Shampoo 100ml at your center and calculate the perpetual average cost after each transaction:

Transaction

Details

Perpetual Average Cost

Cumulative Qty

Cumulative Cost

Purchase Order

Purchased 10 bottles of Hair Shampoo 100ml at $10 each on Jan 1st

10x10 / 10 = $10

10

$100.00

Purchase Order

Purchased 20 bottles of Hair Shampoo 100ml at $15 each on Feb 1st

(10x10 + 20x15) / (10 +20) = $13.33

30

$400.00

Transfer Order
(Received)

Received 10 bottles of Hair Shampoo 100ml at $20 each on Mar 1st

(13.33x30 + 10x20)/(30+10) = $15.00

40

$600.00

Purchase Order

Purchased 10 bottles of Hair Shampoo 100ml at $18 each on Apr 1st

(15x40 + 10x18)/(40+10)= $15.6

50

$780.00

At this point, the Perpetual Average Cost of Hair Shampoo is $15.6. If the front-desk staff sells 10 bottles on Apr 20th.

Transaction cost = $15.6 x 10 = $156.00

Cumulative Qty = 50 - 10 = 40

Cumulative Cost = $15.6 x 40 = $624.00

Transaction

Details

Perpetual Average Cost

Cumulative Qty

Cumulative Cost

Purchase Order

Purchased 15 bottles of Hair Shampoo 100ml at $20 each on Apr 30th

(15.6x40 + 15x20)/(40+15)=$16.8

55

$924.00

At this point, the Perpetual Average Cost of Hair Shampoo is $16.8. If your center transfers 10 bottles to another center on May 1st.

Transaction cost = $16.8 x 10 = $168.00

Cumulative Qty = 55 - 10 = 45

Cumulative Cost = $16.8 x 45 = $756.00

Transaction

Details

Perpetual Average Cost

Purchase Order

Purchased a Hair Shampoo carton of 5 bottles of Hair Shampoo 100ml at $40 each on May 10th

$16.8

At this point, there is no change in the Cumulative Qty and Cumulative Cost as the kit is not unbundled.

Transaction cost = 5 kits x 40 = $200

Transaction

Details

Perpetual Average Cost

Cumulative Qty

Cumulative Cost

Unbundle

Unbundled the 5 kits, with each bottle of $16 on May 12th

(16.8x45 + 25x16)/45+25 = $16.51

70

$1156.00

At this point, the Perpetual Average Cost of Hair Shampoo is $16.51. If your center returns 10 bottles, let’s say at $14 each to a vendor on May 15th.

Perpetual Average Cost = (16.51 x 70 – 10x14) / (70-10) = $16.93

Transaction cost = $14 x 10 = $140.00

Cumulative Qty = 70 - 10 = 60

Cumulative Cost = $16.93 x 60 = $1015.08

Transaction

Details

Perpetual Average Cost

Cumulative Qty

Cumulative Cost

Audit/Reconcile

Reconciled +2 unaccounted Hair Shampoo 100ml bottles at $16.93 each on Jun 1st

(16.93 x 60 + 16.93 x 2)/ (60 +2) = $16.93

62

$1049.66

Transaction cost = $16.93 x 2 = $33.86

Transaction

Details

Perpetual Average Cost

Cumulative Qty

Cumulative Cost

Audit/Reconcile

Reconciled -60 unaccounted of Hair Shampoo 100ml bottles at $16.93 each on Jun 10th

(16.93 x 62 – 16.93 x 60)/(62-60) = $16.93

02

$33.86

Transaction cost = $16.93 x 60 = $ 1016.00

Did this answer your question?