Inventory costing is the most technically complex area of Business Central — and the one most often misconfigured. The details matter enormously for your financial statements, tax compliance, and audit readiness. This article covers the core mechanics that every accountant and controller working with BC should understand.
1. The Five Costing Methods
The costing method determines how Business Central values inventory decreases (sales, consumption) based on inventory increases (purchases, production output). It is set per item and cannot be changed once entries exist.
| Method | Cost flow | Best for |
|---|---|---|
| FIFO | First item purchased = first item sold. Actual cost. | Stable prices, perishable goods, most general-purpose scenarios. |
| LIFO | Last item purchased = first item sold. Actual cost. | Rare. Disallowed in many EU countries including Luxembourg (IFRS). |
| Average | Weighted average recalculated per period (day/week/month). | Interchangeable goods — chemicals, bulk materials, commodities. |
| Specific | Each unit carries its exact acquisition cost. Requires item tracking. | Serialized, high-value items. Regulated goods. |
| Standard | Preset cost. Actual variances posted separately. | Repetitive manufacturing. Tight cost control environments. |
Key principle
Regardless of costing method, if you buy 3 items and sell 3 items, the ending inventory value is always zero and total COGS always equals total purchases. The methods only differ in when and how costs flow to each individual sale.
What about FEFO (First Expired, First Out)?
FEFO is not a costing method — it’s a warehouse picking strategy. When enabled on a location, Business Central automatically picks the lot with the earliest expiration date. But the financial cost still follows whichever costing method is set on the item card.
You can combine them freely — for example, Average costing for financial valuation + FEFO picking for warehouse operations. This is common in chemicals, food & beverage, and pharmaceuticals where lot expiration drives which stock ships first, but the P&L uses average cost. Setup requires enabling Require Pick, Pick According to FEFO, and Bin Mandatory on the location card, plus item tracking codes with expiration dates.
2. Item Application: How Costs Link to Transactions
Every inventory transaction creates an item ledger entry (quantity) and one or more value entries (cost). Item application is the mechanism that links outbound entries (sales, consumption) to inbound entries (purchases, output) to determine which cost flows where.
There are two types of application:
- Automatic (quantity application) — BC applies outbound to inbound entries based on the costing method (FIFO sequence, average period, etc.).
- Fixed application — You manually specify which inbound entry an outbound entry should be costed from (using Appl.-to Item Entry or Appl.-from Item Entry fields). Essential for returns, corrections, and exact cost reversal.
Practical example: Purchase returns
You buy Item A at €10 (entry 1) and then at €20 (entry 2). You return the second batch. Without a fixed application, FIFO would cost the return at €10 (wrong). With a fixed application pointing to entry 2, the return correctly reverses at €20. This is why Exact Cost Reversing Mandatoryshould be enabled in your Sales & Receivables and Purchases & Payables setup.
3. Cost Adjustment: Keeping COGS Accurate
In the real world, costs arrive after the fact — a freight invoice posted weeks after the sale, a purchase credit memo correcting a price, an item charge for customs duties. The Adjust Cost – Item Entries batch job is the engine that propagates these cost changes.
It works by detecting changes on inbound entries and forwarding them to all applied outbound entries. This means a freight charge on a January purchase can retroactively update the COGS of a February sale — automatically.
Two modes:
- Automatic — Runs with every posting. Set in Inventory Setup → Automatic Cost Adjustment. Options: Never, Day, Week, Month, Quarter, Year, Always.
- Manual — Run the Adjust Cost – Item Entries batch job on a schedule. Recommended during non-working hours for large datasets.
Warning
If you never run cost adjustment, your COGS and inventory valuation on the balance sheet will be wrong. This is one of the most common issues we find in BC health checks — companies that haven’t adjusted costs in months.
4. Expected Cost Posting
When you receive goods but haven’t yet received the vendor invoice, BC can post the estimated cost to interim G/L accounts. This keeps your balance sheet accurate in real time, even before invoicing is complete.
Enable this in Inventory Setup → Expected Cost Posting to G/L. When enabled:
- At receipt: estimated cost debits Inventory Account (Interim) and credits Inventory Accrual Account (Interim).
- At invoice: interim entries are reversed, and actual cost hits the real Inventory Account and Direct Cost Applied Account.
5. Average Cost Calculation
For items using the Average costing method, BC calculates a weighted average at each point in time within the configured average cost period(Day, Week, Month, Quarter, or Accounting Period).
Two configuration choices in Inventory Setup control this:
- Average Cost Period — The time bucket for recalculation.
- Average Cost Calc. Type — Per Item, or per Item + Location + Variant.
If you back-date an inventory increase or decrease, the average cost is recalculated for all affected periods. If you change the period or calculation type, all affected entries must be adjusted. This is why the Average method requires more care and more frequent cost adjustment runs.
6. Variance (Standard Costing)
Items using the Standard costing method are valued at a preset standard cost. When the actual cost differs — a purchase invoice at a different price, or production consuming more material than expected — the difference is posted as a variance. BC distinguishes between purchase variance, material variance, capacity variance, subcontracted variance, capacity overhead variance, and manufacturing overhead variance.
7. Reconciliation with the General Ledger
Inventory and G/L are separate subledgers in Business Central. The bridge between them is the Post Inventory Cost to G/L batch job (or Automatic Cost Posting in Inventory Setup). This translates value entries into general ledger entries using the account mappings from:
- General Posting Setup — COGS Account, Direct Cost Applied, Inventory Adjustment, etc.
- Inventory Posting Setup — Inventory Account per location/posting group.
If automatic cost posting is off, you must run both Adjust Cost – Item Entries and Post Inventory Cost to G/Lbefore closing an accounting period. Failure to do so means your balance sheet Inventory account won’t match the item ledger — a finding that auditors will flag immediately.
8. How It Looks in the G/L — T-Account Walkthroughs
The theory above only clicks when you see the actual debit/credit flow. Below are three scenarios straight from implementation practice, showing exactly which G/L accounts are hit and when.
Scenario A: Purchase 10 units at €7, then sell all 10
Direct unit cost €7, overhead rate €1. Total cost per unit = €8. Purchase posted and invoiced Jan 1, sale posted and invoiced Jan 15.
Blue = balance sheet. Green = income statement (cost applied). Red = income statement (expense). Inventory ends at zero because everything was sold.
Scenario B: Item charge arrives after the sale (cost adjustment)
Same as above, but on Feb 10 a freight charge of €2 is invoiced against the original purchase. Running Adjust Cost – Item Entries and Post Inventory Cost to G/L creates these additional entries:
Notice the dates: the freight is invoiced Feb 10, but the COGS adjustment is back-dated to Jan 15 (the original sale date). Inventory passes through zero — it debits €2 for the freight, then credits €2 for the adjustment. The net effect is €2 more COGS on the income statement. This is exactly what cost adjustment does: it ensures the right cost hits the right period.
Scenario C: Expected cost posting (receipt before invoice)
You receive goods on Jan 1 (expected cost €95). The invoice arrives Jan 15 for the actual amount of €100. With Expected Cost Posting to G/L enabled:
Step 1 — At receipt (Jan 1): estimated cost hits interim accounts
Step 2 — At invoice (Jan 15): interim accounts reverse, actual cost posts
Purple = interim accounts (balance sheet, temporary). They exist only between receipt and invoice.
The key insight:the interim accounts net to zero once the invoice is posted. The real Inventory account ends at €100 (actual cost), and Direct Cost Applied at €100. If you don’t enable expected cost posting, nothing hits the G/L until the invoice — your balance sheet won’t reflect goods already in the warehouse. For companies that receive goods weeks before invoicing, this creates a material gap between physical and book inventory.
G/L account map: which account is hit by which transaction type
This is the master mapping that drives all inventory posting in Business Central. It is configured in Inventory Posting Setup and General Posting Setup.
| Transaction | Debit | Credit | Type |
|---|---|---|---|
| Purchase (receipt, expected) | Inventory (Interim) | Invt. Accrual (Interim) | BS ↔ BS |
| Purchase (invoiced, direct) | Inventory | Direct Cost Applied | BS ↔ IS |
| Purchase (invoiced, overhead) | Inventory | Overhead Applied | BS ↔ IS |
| Purchase (variance, standard) | Inventory | Purchase Variance | BS ↔ IS |
| Sale (shipped, expected) | COGS (Interim) | Inventory (Interim) | IS ↔ BS |
| Sale (invoiced) | COGS | Inventory | IS ↔ BS |
| Positive/Negative adjustment | Inventory | Inventory Adjustment | BS ↔ IS |
| Production consumption | WIP Account | Inventory | BS ↔ BS |
| Production output | Inventory | WIP Account | BS ↔ BS |
| Production variance (material) | Inventory | Material Variance | BS ↔ IS |
| Assembly consumption | Inventory Adjustment | Inventory | IS ↔ BS |
| Revaluation | Inventory | Inventory Adjustment | BS ↔ IS |
BS = Balance Sheet. IS = Income Statement. Debit/credit direction shown for increases; decreases reverse the flow. Account numbers are configured per posting group — the table above shows the account types.
9. Production and Assembly Order Costing
For manufacturers, BC tracks WIP (Work in Process) through production orders. Material consumption and capacity posting accumulate on the order. When output is posted and the order is finished, costs are moved from WIP to finished goods inventory. The Adjust Cost batch job then finalizes variances.
Assembly orders work similarly but are always at actual cost (no standard cost variance). The posting sequence is: component consumption → assembly output → cost adjustment. Assembly-to-order scenarios have additional logic where the assembly cost is linked directly to the sales order.
10. Inventory Periods
Inventory periods control which date ranges are open for inventory posting. They are separate from accounting periods and from the General Ledger Setup posting dates — but they must work together.
You manage inventory periods from Inventory Setup → Inventory Periods. Each period has a starting date. When you close an inventory period, Business Central prevents any inventory posting (item journal, purchase receipt, sales shipment, production output, etc.) with a posting date that falls within that closed period.
The closing process also forces a cost adjustment and posts inventory cost to the G/L, ensuring the subledger and general ledger are fully reconciled before the period is sealed.
Why inventory periods matter
- Prevents back-dated changes — Once closed, nobody can post an item journal line dated in January after January is closed. This protects already-reported figures.
- Forces reconciliation — Closing the period runs cost adjustment and G/L posting automatically, so you don’t start a new month with stale values.
- Independent from accounting periods — You can close inventory periods on a different schedule than your G/L accounting periods (though aligning them is recommended).
- Does not affect cost adjustment itself — The Adjust Cost batch job can still create adjustment value entries dated in a closed inventory period. What is blocked is new quantity postings.
Common mistake
Many companies never close inventory periods. The result: users can back-date item journal entries months into the past, silently changing inventory values that have already been reported on financial statements. This creates audit findings and makes month-end reconciliation unreliable. Close your inventory periods as part of your monthly close checklist.
11. General Ledger Setup: Allow Posting From / To
The Allow Posting From and Allow Posting To fields in General Ledger Setup are the primary date gates for allposting in Business Central — not just G/L journals, but also sales, purchases, item journals, and production posting. If a document’s posting date falls outside this window, BC blocks it.
These fields exist at two levels:
- General Ledger Setup — Company-wide default. Applies to all users unless overridden.
- User Setup — Per-user override. If set, takes precedence over the company-wide setting for that user.
BC evaluates the narrowest window: if General Ledger Setup allows Jan 1 – Mar 31, but User Setup for a specific user allows only Mar 1 – Mar 31, that user can only post within March.
How it interacts with inventory costing
This is where it gets critical for inventory:
- Cost adjustment creates G/L entries — When you run Adjust Cost – Item Entries followed by Post Inventory Cost to G/L, the system creates general ledger entries. These entries need a posting date that falls within the allowed range. If the original item entry is dated in a period that is now outside Allow Posting From, BC will use the first allowed date instead.
- Automatic cost posting — If you have Automatic Cost Posting enabled in Inventory Setup, every item posting immediately generates G/L entries. The posting date of the item transaction must fall within the allowed window, or the entire posting is blocked.
- Month-end sequence matters — You must run cost adjustment and post inventory cost to G/L before you move the Allow Posting Fromdate forward. Otherwise, late cost adjustments for the old period will be posted with the new period’s date, putting costs in the wrong month.
Recommended month-end close sequence
- Ensure all purchase invoices and item charges for the period are posted.
- Run Adjust Cost – Item Entries.
- Run Post Inventory Cost to G/L.
- Verify: run the Inventory – G/L Reconciliation report. Difference should be zero.
- Close the inventory period.
- Move Allow Posting From in General Ledger Setup to the first day of the new period.
- Close the accounting period (if applicable).
Warning: the date shift trap
If you move Allow Posting Fromto April 1 before running cost adjustment for March, any cost adjustments for March transactions will be posted with an April date. Your March P&L will be understated and April overstated. This is one of the most common period-close mistakes we encounter in BC health checks.
Three layers of date control
Business Central has three independent mechanisms that control when you can post inventory transactions. All three must allow the posting date:
| Control | Where | What it blocks | Affects cost adjustment? |
|---|---|---|---|
| Allow Posting From / To | General Ledger Setup + User Setup | All posting (G/L, sales, purchases, item journals, production) | Yes — G/L entries from cost posting must fall within the window |
| Inventory Periods | Inventory Setup → Inventory Periods | Inventory quantity postings (item journals, receipts, shipments) | No — cost adjustment can still create value entries in closed periods |
| Accounting Periods | General Ledger Setup → Accounting Periods | G/L posting into closed fiscal periods | Yes — if the fiscal year is closed, cost-to-G/L posting is blocked for that year |
Key takeaway
Allow Posting From/To is the gate that most people think about, but inventory periods and accounting periods are equally important. Misconfiguring any one of the three causes either blocked postings (visible, annoying but safe) or costs landing in the wrong period (silent, dangerous). Align all three as part of your month-end close process.
What this means for your business
Inventory costing affects your balance sheet, your income statement, your tax declarations, and your audit. Getting the costing method wrong, skipping cost adjustment, or misconfiguring posting groups creates discrepancies that compound over time and are painful to unwind.
We configure inventory costing as part of every implementation — costing methods, posting groups, adjustment schedules, inventory periods, and G/L reconciliation. For chemicals and metals traders, our Chemicals & Metals app adds lot-specific costing, contract pricing, and quality management on top. For G/L-to-inventory reconciliation, we recommend Inventory 365 by CKL Software — a dedicated app for identifying discrepancies, evaluating floating goods, and mapping the nature-of-expense method.