Why Job Costing Setup Matters
Job costing configuration errors compound over time. A misconfigured WIP account means every job that closes posts to the wrong account. A wrong burden rate means every hour reported on the shop floor produces an incorrect overhead absorption. These errors distort P&L, inflate or deflate inventory, and create variance analysis that doesn't tie to reality.
Getting the setup right at the start (or fixing it when you find the errors) is the single highest-value Epicor finance configuration project for most manufacturers.
Step 1: Choose Your Costing Method
The costing method is set at the Company level in System Management > Company Configuration > Modules > Inventory. Your options:
- Standard Cost — parts have a predefined standard cost. Job variances are the difference between standard and actual. Most common for manufacturers who want visible cost variances.
- Average Cost (AVCO) — cost is the rolling average of what you've paid or produced. No standard variances — the cost updates with each transaction. Common for distributors and some manufacturers.
- Lot/FIFO — cost is tracked by lot or on a first-in-first-out basis. Most common for food, pharma, and other lot-tracked industries.
Changing the costing method after go-live is extremely difficult and requires a full inventory revaluation. Make this decision carefully before you go live with Epicor, or be prepared for significant effort to change it later.
Step 2: Configure GL Control Codes
GL Control Codes are the bridge between Epicor's operational transactions and your GL accounts. For job costing, you need control codes correctly configured for:
- WIP (Work-in-Process) — the GL account that accumulates job costs before the job closes
- COGS (Cost of Goods Sold) — the GL account debited when jobs close and parts ship
- Material Variance — the variance account for standard vs. actual material cost
- Labor Variance — the variance account for standard vs. actual labor cost
- Burden/Overhead Variance — the variance account for absorbed vs. actual overhead
- Inventory — the GL account for finished goods and raw material inventory
Navigate to Financial Management > General Ledger > Setup > GL Control Code to review and configure these. Each control code maps to a specific type of transaction — make sure each maps to the correct GL account for your chart of accounts.
After setting up GL Control Codes, run a test job from open to close in a test environment and trace every GL posting. This is the only reliable way to confirm your control codes are mapped correctly before going live.
Step 3: Set Up Resource Groups and Burden Rates
Resource Groups represent your work centers or production resources. Burden rates on Resource Groups define how overhead is absorbed into jobs. This is where most job costing configurations go wrong.
Navigate to Production Management > Engineering > Setup > Resource Group:
Labor Burden (Labor Overhead)
A rate added on top of direct labor cost — typically as a percentage. If your direct labor rate is $30/hr and your labor burden rate is 50%, every hour of direct labor absorbs $15 in labor overhead.
Production Burden (Machine Overhead)
A rate applied per machine-hour or per production hour — typically a fixed dollar amount per hour. This absorbs machine-related overhead costs (depreciation, maintenance, utilities).
Burden rates should be calculated from your actual overhead budget divided by expected production hours for the year. If your burden rates are rough estimates or haven't been updated in years, your job costs are likely wrong.
Step 4: Create Operation Templates
Operation templates (Production Management > Engineering > Setup > Operation) define standard operations that are added to Method of Manufacturing (MOM) records. Each operation template should reference the correct Resource Group — this is what pulls the burden rate into the job when the operation is used.
If operations are pulling the wrong burden rate, trace it back: check whether the operation on the job references the correct template, and whether the template references the correct Resource Group.
Step 5: Test with a Complete Pilot Job
Before relying on your job costing setup, run a complete test job in a test or sandbox environment:
- Create a job and issue material to it — verify the WIP account is debited and inventory credited
- Report labor on the job — verify the burden rates absorb correctly
- Complete the job and close it — verify WIP relieves fully and COGS is debited (or inventory is debited if the part goes to stock)
- Check variance accounts — if using Standard Cost, variances should be small and in the right accounts
If WIP doesn't relieve on job close, or variance accounts show large unexplained balances, trace each step of the cost flow against your GL Control Code setup.
Common Job Costing Configuration Mistakes
- WIP account not mapped correctly — all job cost accumulates in the wrong account
- Burden rates never updated — overhead absorption is based on costs from years ago, producing large variances
- Operations using the wrong Resource Group — one work center's burden rate applied to all jobs
- Subassembly costing not set up correctly — see our guide on subassembly setup in Epicor MOM
- Standard costs not updated after changes — if you use Standard Cost, running Cost Rollup periodically to refresh standards is essential
Still Stuck? We Can Help.
If this guide didn't fully resolve your issue — or you're dealing with something more complex — our Epicor consultants are available same-day. No long-term contract required.