10,000 feet overview of Dynamics AX Inventory Cost Management

The past few years I’ve ventured into the SCM code base of AX, and I most admit I found the physical operations easier to comprehend than their financial counterparts. Perhaps it is just the terminology, or perhaps its because I’m “just” an engineer. At any rate I discovered I’m not the only one struggling – so here is an high level overview of the Cost Management domain and how it is handled in Dynamics AX.

A text-book condensed into a paragraph

A company is profitable if it can sell its goods for a higher price than they paid for them. This difference is called the Gross profit, it can be found on the Income statement, and is the difference between Sales and Cost of goods sold (COGS). In other words, COGS directly influences the company’s profitability and the amount of tax to pay.  The General accepted accounting principles (GAAP) describes several Costing principles, i.e. ways COGS can be measured. As the costing principle(s) used can have a significant impact on the company’s financial performance, there must be full disclosure to which costing principle(s) is used. For these reasons companies are inclined to stay with their current costing principle. The history of accounting for costs predates computer science and ERP systems. Several of the costing principles in use today reflects this fact – they are designed to be applied periodically (in the past by a book keeper with a pen in his hand).  The inputs to the costing calculations are called cost elements. They include Direct cost (purchase price of finished goods or raw material) and Indirect cost (such as labor and equipment).

Dynamics AX’s Inventory Models

In Dynamics AX the Costing principles are called Inventory models. An Inventory model prescribes how Direct cost is determined. Indirect cost is always estimated. These estimations are provided by the Costing sheet.

In the following consider this sequence of event:

  1. Monday:          Purchase of 1 pcs @ $10
  2. Tuesday:          Purchase of 1 pcs @ $12
  3. Wednesday:     Sale of 1 pcs (sales price is irrelevant)
  4. Thursday:         Purchase of 2 pcs @ $15 each.
  5. Friday:              Inventory Close


AX supports these Inventory models:

  • Normal costing accounts the costs as they occurred, however various circumstances can later influence the posting, such as back-dating. An example of back-dating could be that the Thursday purchase is register as if it occurred on Tuesday. At the end of the period the Inventory Close process will take care of any differences.

    AX supports 5 variants:

    • FIFO – First in first out; In the example the cost is $10
    • LIFO – Last in first out over the entire next period; In the example the cost is $15
    • LIFO Date – Last in first out (until the sale); In the example the cost is $12
    • Weighted average – over the entire period; In the example the cost $13. ((10+12+2*15)/4)
    • Weighted average date – in the period until the sale; In the example the cost is $11. ((10+12)/2)
  • Standard cost is based on estimates for both Direct and Indirect costs. This means it can be calculated during planning and thus is a powerful operational management tool. The BOM calculation is used to estimate the costs. AX supports several versioning of the estimates – they are called Costing versions. This makes Standard cost a perpetual model, where cost always can be determined during the sale. In the example above the cost is whatever estimate is provided by the active costing version, e.g. $9.
  • Moving average is similar to Weighted average date. However; it is a perpetual model, where cost always is determined during the sale. This means that back-dating will not impact the posted costs, and Inventory Closing is not required. In the example; the cost is $11.


AX 2009 Costing models: http://www.microsoft.com/en-us/download/details.aspx?id=1041

Moving average: http://technet.microsoft.com/en-us/library/hh597235.aspx

More background: http://www.accountingcoach.com/inventory-and-cost-of-goods-sold/explanation

Comments (0)

Skip to main content