Multiple Sites, Multiple Site Cost IDs & Sharing Cost IDs

Over time there have been multiple posts and questions on how multiple sites can have different (or same) costs. The purpose of this post is to describe how it works.
Company: A group of Sites…
SITE: A place with warehouses… typically I like to define a site as a group of warehouses that are close enough that there is 0 transport time between warehouses. If the warehouse is across town, and requires a truck for transport, then it might need a new site.
Site Cost ID: Each site MUST be assigned to a CostID. “Typically” by default, CostID “1” is assigned to every new site, NOTE: This “assumption” is erroneously used many times in BAQs. CostID 1 is NOT a rule, it is a default.
PartCost: There is a TABLE called PartCost… the index to the table is the Company/PartNum/CostID. Note that it does NOT have the Site (Plant) as part of the key. To find the cost for a part, you need to know the Site (Plant) and lookup the CostID from the PLANT table, and then use that (instead of assuming CostID = “1”).

OK… onto the options assuming you have three SITES X, Y, & Z:

  1. Sites X, Y, and Z can all share one common CostID…
  2. Sites X, Y, and Z can each have different CostIDs
  3. Sites X & Y can share one CostID, and site Z can have a different cost ID

So… what does this all mean?

  • With option 1, when you move an item from site X to any other site, the cost remains the same. there is only one Cost record per part. if you change the cost, the inventory value in all three sites (and all their warehouses) adjusts as well.
  • With option 2, each site is independent. you can adjust the cost in site X, without affecting the other two sites. BUT… if you transfer inventory from site X to site Y, and if their costs are different, this will cause a “Transfer Cost Variance” to be posted (the money must go somewhere).
  • Option 3 is simply a combination of the above 2 options, transfers between X & Y are at the same cost, but site Z is independent.

Special Note about CostID…

  • You can create a new CostID, you can calculate new costs, but never associate it to a site.
  • you can copy costs from an unattached CostID to a CostID that is in use (using Costing workbench).
  • you can reassign a new CostID to a site in the Site Maintenance. WHEN YOU DO THIS, you will journal entries for any costs that change for parts… This process can create 10000s of cost adjustments if the two cost tables are different.
  • If you are AVERAGE COST, and you are using Option 2, then every CostID will have its own average calculation. the parts can literally cost different for every part because of the average calculation.

Other IDEAS:

  • I have created new CostIDs to “store” historical costs… at the end of each year, we create a new CostID and copy the costs into the new year. Then you can create your own BAQ/Dashboard to do historical tracking of costs.
  • One “OldSchool” method of doing recosting involves 1. create new CostID. 2. Develop all the new costs for “next year”… create dashboards to compare current to “next year”… once ready to make this live, you go into the Site Maintenance and Switch the cost ID to the new year.

How do you all use CostIDs in a special way? Has this giving you any additional ideas?


Our current thoughts are option 2. I will review GL CTRL codes for transfer variance. Thanks for highlighting.

I like the historical cost idea.

1 Like

Hi Tim,

When you are creating new Cost IDs for the next year do you implement during a stock take when setting qty to zero? It seems from what I’ve just seen in my test environment changed IDs with a qty produces alot of transactions.


yes, when you change cost IDs, it will generate a journal entry for each difference… for example, if you have a part X with the CostID of 2021… it has a cost of 1.25… but you create a new CostID called 2022, and you change the cost of part X to 1.26… When you change the cost ID, it will examine the current Qty On Hand, and if any, it will produce a cost adjustment of .01 per qty… But this same thing would have happened if you posted a cost change in the Costing Workbench.

1 Like

Many thanks Tim. We have yet to implement our main manufacturing site yet so as part of or go-live and stock count I will Zero all QOH for and the new cost ID to MfgSys and then bring in QOH for both sites.

when you bring in the new QOH, it will also cause GL Transactions… :wink:

Hi Tim,

I’ve tested a few parts and transferred from one site to the other but one thing I expected to see but didn’t was Epicor unable to handle the cost variance. All posting went to known accounts i.e. not our catch all clearing account of 99999… and went smoothly. I tested with parts initially at $1,000 and purposefully raised POs at a higher price and received them in one site then bought and received under that in the other. Both sites had different costs but the transfer went smoothly. Did I see another post mentioning Epicor posting a variance somewhere?



Transfer variance is a big topic. If you want to break down and cry, read this post and all its 37 replies:

We went on several tangents, but it might prove useful to your endeavors. (We are std. cost here; sounds like you might use average?)

But, point is, there is a place for transfer variance, even without “interdivisional accounting,” which thankfully we decided against.

Do you have GL controls on the plant transfer definition (site maintenance, I think)?

EDIT: You know, it’s something else when I am the only person in the history of this forum to ever mention “interdivisional accounting.” Twice - once here and once in the post I linked to above. And we avoided it after all. So, this is not exactly a well-beaten path, I guess!

The transfer variance will only happen if you are Standard Cost (or the dreaded Last cost). If you are Average, Lot, Fifo, or LotFifo, then there will be no variance captured.

If standard cost, here is what happens:

  1. Site 1: Std Cost of $1000, purchase at $1200 - a $-200 variance. the cost in the system is now $1000
  2. Site 2: Std Cost of $1500, purchase at $1200 - a $300 variance. the cost in the system is now $1500
  3. transfer the part from site 1 to site 2. It will
  • transfer OUT $1000 from site 1,
  • transfer IN $1500 into site 2…
  • there will be a $500 variance due to the change

If Average cost then here is what happens: the cost will adjust the average when you move the parts, just as though they were purchased. It follows all the normal average costing rules.

  1. Site 1: purchase at $1000 - If none on hand before trx, the cost in the system is now $1000
  2. Site 2: purchase at $1500 - if none on hand before trx, the cost in the system is now $1500
  3. transfer the part from site 1 to site 2. It will
  • transfer OUT $1000 from site 1,
  • transfer IN $1000 into site 2…
  • The new cost in site 2 will change from 1500 to 1250 due to averaging. No variance will be posted.

And, as @JasonMcD pointed out, you need to make sure that you have the GL Controls for Plant Transfer definition setup correctly so that variances (if needed) go the right places.

Thanks Jason. Due to the break down & cry item this may be an afternoon thing.

At least you get the Interdivisonal Accounting reference. I only have elephant’s foot to my name ;p

Thanks again Tim. We are average so may have dodged this bullet.

1 Like

Yes, I see that, yes you do. Well, congrats?

Statistically Improbable Phrases, or something like that, right?