Your COGS is wrong until Adjust Cost runs
A Business Central P&L can show cost of goods sold that is off by a meaningful amount for days or weeks after the sale posted. Not because anything is broken, but because of how the system is designed. Most finance teams don't know this until a month-end number doesn't tie.
What actually happens when you ship
When a sales shipment posts, Business Central creates an item ledger entry and a value entry for the outbound quantity. The cost on that value entry is whatever the system knows at that moment: the item's current unit cost, or the cost of the specific inbound entry it was applied to.
That's rarely the final cost. The inbound purchase may not be invoiced yet (so its cost is still "expected"). A freight item charge may land later. A production order may still be open, with actual consumption and capacity cost still accumulating. When any of those settle, the true cost of what you shipped changes, but the value entry you already posted doesn't update itself.
Adjust Cost - Item Entries is what fixes it
The Adjust Cost - Item Entries batch job walks the chain of item applications, finds every outbound entry whose cost no longer matches its inbound source, and posts an adjustment value entry for the difference. Only after that runs does your COGS reflect what the goods actually cost.
Until it runs, the Inventory Valuation report and the G/L can both be wrong in the same direction, and they'll still tie to each other, which is why the problem hides so well.
Rule of thumb: if Adjust Cost hasn't run since the last purchase invoice, production order finish, or item charge was posted, your COGS is provisional. Treat it that way in any report you hand to leadership.
The setup choice that decides everything
On the Inventory Setup page, the field Automatic Cost Adjustment controls whether Business Central runs this adjustment on its own, and how far back it looks. The options are Never, Day, Week, Month, Quarter, Year, and Always.
- Never: nothing adjusts until someone runs the batch job manually. Common in tenants set up quickly, and the usual root cause of "the numbers were fine last week."
- Always: every posting that changes an inbound cost immediately adjusts every outbound entry it affects. Accurate in real time, but on a busy tenant with long application chains it can make postings noticeably slower.
- Day / Week / Month / etc.: automatic, but only for entries within that window of the posting date. Older entries wait for a manual run.
The companion field Automatic Cost Posting decides whether those adjustments flow to the G/L immediately or wait for the Post Inventory Cost to G/L job. Two switches, four combinations, and only one of them ("Always" with automatic posting on) gives you a P&L that is right without anyone remembering to do anything.
What we recommend
- Set Automatic Cost Adjustment to Always unless you have measured a performance problem. If you have, use Month and add the batch job to the Job Queue nightly.
- Turn on Automatic Cost Posting, and keep Expected Cost Posting to G/L on so received-not-invoiced inventory is visible on the balance sheet.
- Make "Adjust Cost has run" a hard step in the month-end checklist, before the inventory-to-G/L reconciliation, not after.
- When a margin looks wrong on a specific sale, open the item's Value Entries and look for adjustment entries. The story is always there.
Why this matters more than it sounds
Gross margin is usually the first number a CFO looks at. If it moves by a few points between the day you look and the day the adjustment runs, every decision made in between was made on the wrong number. The fix takes ten minutes on Inventory Setup, but only if someone knows to look.
Seeing this on your own tenant and not sure which combination you're running? That's a fifteen-minute conversation. Get in touch.
CoreLedger Solutions