How to close job costing and the accounting period in Epicor
how to close job costing period in epicor
Also searched as
- epicor job costing month end close
- epicor wip reconciliation how to
- epicor capture costs job closing checklist
Short answer
Before closing an accounting period in Epicor, run Capture Costs (or confirm background costing is current) to post all labor, material, subcontract, and burden to jobs, review the WIP report for jobs that should be closed or investigated, close completed jobs so their costs relieve WIP, and only then close the GL period, since GL close blocks further transaction posting into it.
Applies to: Epicor Kinetic and Epicor 10.x; costing method (standard, average, FIFO/LIFO, actual) affects exact variance reporting but the close sequence is the same.
Run a clean job costing and period close
- 1Confirm all labor entries for the period are posted - check for unposted time via the labor entry/employee time tracker and post any outstanding entries.
- 2Run Capture Costs (Production Management > Job Management > General Operations > Capture Costs, or confirm your environment runs it automatically) to roll transactional labor, material, and subcontract costs into job cost records.
- 3Review the WIP Detail / WIP Reconciliation report for jobs with unexpected balances - large unexplained WIP often indicates missing receipts, unposted labor, or a job that should have been closed earlier.
- 4For jobs that are complete, run Job Closing (or the engineered Complete/Close job action) so their final costs relieve WIP into inventory/COGS and the job stops accepting new transactions.
- 5Reconcile the WIP account balance in the GL against the sum of open job WIP values - a mismatch usually means a transaction posted outside the normal job cost flow (a manual GL entry) or a timing gap between subledger and GL posting.
- 6Review and post any manufacturing variances (purchase price variance, labor efficiency, burden absorption) that your costing method generates.
- 7Run standard month-end financial closing steps (AP/AR sub-ledger close, bank rec) before touching the GL calendar.
- 8Close the accounting period in GL Period Maintenance / Fiscal Calendar only after confirming no more job transactions need to post into it - once closed, transactions dated in that period are blocked (or routed to the next open period depending on configuration).
Why job close and GL close are sequenced, not simultaneous
Epicor's costing subledger (jobs, WIP) and the general ledger are related but not the same clock. Job transactions (labor, material issues, receipts) can lag their GL posting slightly depending on posting engine schedules, and Capture Costs is what reconciles transactional detail into the job cost record that ultimately drives GL entries. Closing the GL period before all job activity for that period is captured and posted creates a mismatch between subledger detail and the GL balance that is painful to trace after the fact.
This is why most Epicor month-end runbooks explicitly separate "close jobs / reconcile WIP" from "close the GL period" as sequential, not parallel, steps - and why finance teams typically want a WIP reconciliation report signed off before the controller closes the period.
Diagnosing WIP variances
A job with WIP that will not clear to zero on completion usually has one of: unposted labor/material transactions still pending Capture Costs, a job material that was issued but never relieved via a completion transaction, or a standard cost variance that is expected and should flow to a variance account rather than being treated as an error.
Cross-check the Job Traveler / Job Tracker's cost detail tab against the WIP Reconciliation report line for that job - the Job Tracker shows transaction-level detail (labor hours, material issues, burden) that lets you pinpoint exactly which transaction is contributing to an unexpected balance.
-- Jobs with open (non-closed) status and nonzero WIP as of period end SELECT JobNum, PartNum, JobComplete, JobClosed FROM JobHead WHERE Company = 'EPIC06' AND JobClosed = 0 AND JobComplete = 1;
Burden and standard cost considerations
If burden (overhead) rates are applied via standard cost sets rather than actual, confirm the correct cost set/effective date is active before running Capture Costs for the closing period - an outdated burden rate silently understates or overstates job cost without throwing any error.
For make-to-stock environments closing many jobs in bulk, use the mass job closing capability (where available) rather than closing job by job, but still spot-check a sample against WIP reconciliation before finalizing the period.
Common pitfalls
- !Closing the GL period before Capture Costs has run for the last day(s) of the period, leaving job costs stranded in the wrong period once GL close blocks posting.
- !Treating every nonzero WIP balance as an error - open (in-process) jobs are supposed to carry WIP; the review should target jobs that are complete but still show WIP, or balances that grew unexpectedly.
- !Forgetting that job closing is often irreversible or requires an explicit reopen process - closing a job prematurely before a late material receipt posts can misstate that job's final cost.
- !Ignoring standard cost variance postings, letting a real efficiency or price variance accumulate unnoticed because nobody reviewed the variance account during close.
- !Running mass job close without a WIP reconciliation review first, closing jobs that actually needed investigation.
- !Manual GL journal entries posted directly against the WIP account outside the job cost flow, breaking subledger-to-GL reconciliation for future periods.
How an ERP-grounded AI assistant handles this
An ERPray-style agent grounded in a company's Epicor job cost and GL data can run the WIP reconciliation check automatically each close cycle, surface only the jobs whose WIP balance deviates from what recent transaction history would predict, and summarize likely causes (unposted labor vs missing receipt vs real variance) in plain language, cutting the manual detective work controllers otherwise do line by line in the WIP report.
Frequently asked questions
What does Capture Costs actually do in Epicor?
Capture Costs processes pending transactional cost records (labor, material issue, subcontract, burden) and rolls them into the job's cost detail, which is the data source both the Job Tracker's cost view and downstream GL postings rely on - it is a required step, not optional housekeeping, before trusting job cost reports for a period.
Can I reopen a job after it has been closed?
Epicor generally supports reopening a closed job under the right permissions, but doing so after the related accounting period is also closed complicates GL impact, since new transactions on a reopened job in a closed period need special handling - check your version's specific reopen job process and consult finance before reopening a job in a closed period.
How do I explain a WIP-to-GL mismatch to auditors?
Pull the WIP Reconciliation report for the period alongside the GL WIP account detail, and document any known timing differences (e.g. transactions captured after period-end cutoff) plus any manual journal entries posted directly to WIP - auditors generally want to see the reconciliation performed and explained, not a zero variance every period.
Does costing method (standard vs actual) change the close process steps?
The overall sequence (capture costs, reconcile WIP, close jobs, close GL) is the same, but standard costing environments additionally need variance review (purchase price, labor, burden variances) as part of close, while actual/average cost environments focus more on ensuring all actual cost transactions posted before period cutoff.
Related
Epicor MRP Runs but Generates No Suggestions
When Epicor's MRP process completes without a job or purchase suggestion for a part you expect one for, the cause is almost always the part's own configuration (Part Class Type, Make Direct, Non-MRP flag, planning Time Fence) or the demand not being linked in a way MRP recognizes, not a defect in the MRP engine. Work through the part's Planning tab, its safety stock and lead time setup, and the demand source (sales order line status, job material requirement) before assuming the run itself failed.
How-toHow to import data with Epicor DMT (Data Migration Tool)
In DMT, pick the target data type (e.g. Part, Customer, PartWhse), Generate a template from the connected Epicor server so column names match your version's schema exactly, populate the spreadsheet, load it into DMT, run a Pre-Process/validate pass first to surface errors before committing, then Process to write the records.
How-toFixing a Slow Epicor BAQ (Business Activity Query)
A slow BAQ in Epicor is usually caused by unindexed join columns, a subquery or calculated field forcing a table scan, or the BAQ pulling far more rows than the dashboard actually displays before filtering client-side. Fix it by reading the SQL Server execution plan Epicor generates, moving filters into the BAQ criteria instead of the dashboard filter panel, and replacing subqueries with joins where possible.
How-toHow to build a Kinetic homepage dashboard in Epicor
Kinetic homepage dashboards are built from Active Homepage Maintenance: create a BAQ that returns the metric or list you want, add a KPI or List widget referencing that BAQ, arrange widgets on the homepage layout, and assign the homepage to a role or company so the right users see it.
Error fixFixing Epicor BusinessObjectException: BPM Directive Errors
A BusinessObjectException that says "A Business Process Management (BPM) directive has raised the following error" means a directive on that business object stopped the transaction, either deliberately via a Raise Exception widget or accidentally via an unhandled .NET error in Custom Code. Expand the InnerException on the error dialog to see the real message and the directive name, then open BPM Designer for that object and method to find the widget that fired.
Error fixFixing Epicor REST v2 API 401 Unauthorized Errors
A 401 Unauthorized calling Epicor's REST v2 (api/v2/odata) endpoint almost always comes down to one of three things: a missing or wrong x-api-key header, valid credentials but an API key scoped to a different company than the one in the URL, or REST services simply not enabled for that endpoint. Confirm the API key exists and is active in Application Studio (or the classic REST API help page), matches the company segment in the URL, and that the account used for Basic auth or OAuth has the right security group.
AI for ERPAI for accounts payable invoice matching in your ERP
On-prem AI reads vendor invoices, runs 3-way match against your ERP PO and receipt, and routes only real exceptions to your AP team. No invoice data leaves your network.
AI for ERPAI for Epicor Kinetic, Beyond What Prism Covers
Add AI to Epicor Kinetic beyond Prism: private LLM over BAQs, BPM data, and REST v2, on-prem or private cloud, with honest guidance on when Prism already covers you.
Stuck on Epicor Kinetic?
Talk to engineers who work inside Epicor Kinetic every week, and who build private AI that answers these questions from your own ERP data.