Automatic Cost Adjustment in Business Central: The Setting That’s Quietly Wrecking Your COGS
| Quick Answer: For most manufacturers and distributors, set Automatic Cost Adjustment to Never on the Inventory Setup page, then schedule the Adjust Cost – Item Entries batch job (Report 795) to run nightly through the job queue, followed by Post Inventory Cost to G/L (Codeunit 2846). This keeps daytime postings fast while your costs and COGS still reconcile every night, before anyone opens a report. |
There’s a field sitting quietly on your Inventory Setup page in Business Central that has more downstream consequence than almost anything else in your environment: Automatic Cost Adjustment. I’ve watched more clients than I can count either ignore it entirely or set it to “Always” without understanding what that actually means at volume — and I’ve seen the damage on both ends of that mistake.
Let’s fix that.

What Cost Adjustment Actually Does
Before we talk about when it runs, you need to understand what it does — because the name doesn’t do it justice.
Picture the scenario you’ve probably lived through: you receive a purchase order for $10 per unit, move that inventory — sell it, consume it in a production order, whatever — and then weeks later the vendor’s invoice comes in at $12. Business Central received it at $10. It sold it at $10. Now what?
That’s the job cost adjustment exists to do. It pushes the updated inbound cost forward to every related outbound entry — the sale, the consumption, the transfer — so your COGS and inventory valuation reflect what you actually paid. Microsoft’s own design documentation frames cost adjustment’s core purpose as forwarding cost changes from their source transactions to the transactions downstream that depend on them, according to the item’s costing method, so inventory valuation stays correct.
Skip it, and your financials aren’t dramatically wrong — you’ll still close the books — but they’re quietly wrong in exactly the line items your CFO relies on for margin reporting.
The same logic applies to item charges. Receive goods at $10, post a $2 freight charge afterward, and that $2 needs to travel downstream through every transaction that touched those units. Cost adjustment does that automatically, and it does it by creating new adjustment value entries layered under the original item ledger entry — it doesn’t rewrite what was already posted. That matters the first time an auditor asks about a retroactive edit.
The Seven Settings
On the Inventory Setup page, the Automatic Cost Adjustment field has seven options:
| Setting | What It Means |
| Never | No automatic adjustment on posting. You run it manually or via the job queue. |
| Day | Adjusts automatically if the related posting is within one day of the work date. |
| Week | Adjusts automatically for postings within one week of the work date. |
| Month | Adjusts automatically for postings within one month of the work date. |
| Quarter | Adjusts automatically for postings within one quarter of the work date. |
| Year | Adjusts automatically for postings within one year of the work date. |
| Always | Adjusts automatically on every posting, regardless of when the transaction occurred. |
The time-based options — Day through Year — tell BC how far back to look when deciding whether to trigger cost adjustment at posting. If the related inbound transaction falls outside that window, the adjustment won’t run automatically, and it’ll wait for the batch job to catch it.
Shorter windows like Day or Week are less performance-intensive precisely because they run less often. The trade-off is that some cost adjustments will slip through until the batch job runs — you’re trading real-time accuracy for posting speed.
Why “Always” Backfires at Volume
On the surface, Always sounds right. You want accurate COGS. You want up-to-date margin reporting. Of course you want costs adjusted every time something posts.
Manufacturing and distribution reality says otherwise.
Think back to the example we gave before. You receive a component at $10. It gets consumed in a production order, the WIP rolls into a semi-finished good, that semi-finished good gets built into a new production run with five other components, the finished product ships to a warehouse, and it gets sold to three different customers — all within a few weeks. At some point later, the actual vendor invoice lands at $12.
When that invoice posts, Business Central has to trace that $2 difference through every downstream transaction, in real time, while your AP team sits there watching a loading cursor.
In high-transaction environments, that can mean 10–20 second posting delays – minimum – if you’re lucky. For a team posting dozens or hundreds of invoices a day, that adds up fast, and nobody’s happy about it.
The Better Answer: Never + Nightly Job Queue
My standard recommendation: set Automatic Cost Adjustment to Never, and schedule the Adjust Cost – Item Entries batch job (Report 795) to run nightly through the job queue.
Microsoft’s own documentation backs this approach — they recommend running the batch job as often as possible, during nonworking hours, as an equally valid alternative to automatic adjustment.
The setup, straight from Microsoft Learn: open Job Queue Entries, create a new entry, set the Object Type to Report, the Object ID to 795, the Next Run Date Formula to 1D, and the Starting Time to 2 AM. That’s it. Costs reconcile every night, users never wait on a posting screen, and your financials are current before anyone opens their laptop the next morning.
One honest caveat: pull a profitability report on the same day inventory moved, and you may see costs that haven’t trued up yet — the $10 shows instead of the $12 until the evening run. If you need same-day accuracy on margin reports, and some operations genuinely do, that’s worth weighing.
For most manufacturers and distributors I work with, the trade-off is worth it.
The Inventory Cost Adjustment Page: What’s New Since BC 2024 Wave 1
Starting with Business Central 2024 Release Wave 1, Microsoft introduced the Inventory Cost Adjustment page — a dedicated workspace for monitoring and managing the process, not just another report.

What it gives you:
- Every item alongside its costing parameters and current adjustment status
- Filters to isolate items that need adjustment, or ones you’ve excluded
- Batch-based adjustment runs, so one problematic item doesn’t hold up everything else
- A Cost Adjustment Tracer for diagnosing slow or failing runs
- Action Messages that flag setup issues before they become problems — too many open periods needing adjustment, production orders pending cost true-up, or individual items taking more than five minutes to process
You’ll also find Cost Adjustment Logging on the Inventory Setup page. Set it to Errors Only at minimum — you want to know when something fails, and without logging on, you won’t.
If you haven’t opened this page yet, it’s worth fifteen minutes of your time.
Two Jobs, One Sequence
Cost adjustment and GL reconciliation are two separate processes, and the order matters — this is the part I see skipped constantly.
- Adjust Cost – Item Entries (Report 795) reconciles the cost layers in the item subledger.
- Post Inventory Cost to G/L (Codeunit 2846) pushes those adjusted values into the general ledger.
Running both manually? Adjust Cost first, then Post to G/L right after. If Automatic Cost Posting is enabled on your Inventory Setup page, new value entries created by the nightly Adjust Cost run post to the G/L automatically, so you don’t need a separate scheduled task for the second step. If it’s not enabled, schedule both job queue entries.
One timing rule Microsoft is explicit about: don’t schedule either of these jobs at the same time as your sales or purchasing posting tasks. You’ll hit locking conflicts, and nothing will be happy.
Bottom Line
Automatic Cost Adjustment feels like a configuration detail. It behaves like a core architectural decision. Set it wrong, and your financials drift a little more every month. Set it right, and your costing works quietly in the background, the way it’s supposed to.
For most operations:
- Set Automatic Cost Adjustment to Never
- Schedule Report 795 nightly at 2 AM
- Schedule Codeunit 2846 to follow it
- Enable Cost Adjustment Logging (Errors Only at minimum)
- Get familiar with the Inventory Cost Adjustment page
If you’re in a high-volume manufacturing or distribution environment and you’ve run on Always for years without issues, leave it — it’s working. But if users are complaining about posting delays, or your COGS doesn’t line up with what you expected at month-end, this is where I’d start looking.
FAQ
What does Automatic Cost Adjustment do in Business Central?
It controls whether Business Central automatically forwards updated costs — from a late vendor invoice, a freight charge, or a production true-up — to every related outbound transaction, like sales and consumption, so your COGS and inventory valuation stay accurate.
What are the Automatic Cost Adjustment options on the Inventory Setup page?
Seven: Never, Day, Week, Month, Quarter, Year, and Always. The time-based options control how far back BC looks for related postings before triggering an automatic adjustment; Never turns automatic adjustment off entirely, and Always runs it on every posting.
Should Automatic Cost Adjustment be set to Always?
Not usually in high-volume manufacturing or distribution environments. Always can add 10–20 second posting delays when a cost change has to trace through many downstream transactions. Most of these environments are better served by Never plus a nightly Adjust Cost – Item Entries batch job.
What is the Adjust Cost – Item Entries batch job?
It’s Report 795, the batch job that reconciles cost layers in the item subledger when automatic adjustment isn’t running, or hasn’t caught a transaction yet. It’s typically scheduled nightly through the job queue.
What’s the difference between Adjust Cost – Item Entries and Post Inventory Cost to G/L?
Adjust Cost – Item Entries (Report 795) reconciles costs at the item subledger level. Post Inventory Cost to G/L (Codeunit 2846) then pushes those reconciled values into the general ledger. They need to run in that order.
Did you find this helpful? Leave a comment or even better, subscribe and get notified on future posts.
Discover more from Dynamics Power Play
Subscribe to get the latest posts sent to your email.