Business Central Inventory GL Entries - Sales
- Ken Sebahar
- Aug 15
- 6 min read
Updated: Oct 9
In an earlier post, Business Central Inventory GL Entries - Purchases, we walked through an example demonstrating how Business Central uses Posting Groups to determine the G/L Entry records that get created when posting purchase documents including Purchase Receipts, Purchase Invoices, and Purchase Invoices for Item Charges. We reviewed how the Inventory Setup settings determine when G/L Entry records are created and then explained the specific Posting Groups and fields that are used to determine which G/L Accounts are debited and credited during each G/L Entry.
In this post, we will continue the same example and walk through the G/L Entries that get created when Sales documents are posted including Sales Shipments, Sales Invoices, and Sales Invoices for Item Charges.
For an overview of Posting Group setup provided by Microsoft on Microsoft Learn, please refer to Set up posting groups.
Background and Assumptions
The G/L Entries detailed below are all generated within Business Central in real-time as each transaction is posted due to the following setups on the Inventory Setup page:

Before we begin processing the Sales Order, let's review the current on-hand quantity and unit cost for the Cronus Brewery koozies we will be selling to the customer:



April 1, 2025
The new Sales Order shown below is created to sell 100 koozies for $2,50 EA, for a total expected sales amount of $2,500.00. There will also be a shipping charge invoiced to the customer for $25.00 and this will be processed as an Item Charge when invoicing the Sales Order.
No G/L Entry records are created when the Sales Order is created.
Note: in the screenshot below, the "Unit Cost ($)" has been added to the page to show that the original cost associated with the koozies is set to $1.05 which is the current "Unit Cost" on the Item Card when the new Sales Order is created.

April 9, 2025
The Sales Shipment is posted for the 100 koozies and the Item Charges.
Two separate G/L Registers are posted containing the following G/L Entries:
Entry #1

Debit: General Posting Setup - “COGS (Interim)”
Based on the combination of Gen. Bus. Posting Group assigned to the Customer and the Gen. Prod. Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account. The type of G/L Account used here can be misleading since the setup table labels this field "COGS (Interim)", However, since the other side of this entry is the "Inventory (Interim)" account on the balance sheet and no G/L Entry is created to record the expected Sales amount, the "COGS (Interim)" account should be set up as a balance sheet account. To improve the clarity of the entries being made, the G/L Account used as the "COGS (Interim)" account can be labeled "Inventory Shipped not Invoiced" (or something similar).
Credit: Inventory Posting Setup – “Inventory Account (Interim)”
Based on the Inventory Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account.
Entry #2

This entry will use the same setups as Entry #1 above, however, which G/L Account is debited and which is credit will depend on whether the value in the "Unit Cost" field on the Sales Order line is greater than or less than the expected FIFO cost layer to actually be applied when the Sales Invoice is posted.
In this example, the Adjust Cost process applies the oldest (FIFO) cost layer to the sales entry and therefore adjusting entries are posted to arrive at the expected cost of $0.95 EA.
April 12, 2025
The Sales Order is invoiced, resulting in a Posted Sales Invoice for $275.00.
Three separate G/L Registers are posted containing the following G/L Entries:
Entry #3

This entry effectively is two entries in one: the first entry made is the exact reversal of the "Interim" entries created during the sales shipment posting process. The second entry is to recognize Cost of Goods Sold and reduce the value of on-hand inventory. Unfortunately, as you can see above, the order in which these G/L Entries are created makes it less obvious what is happening with these entries.
Based on the entry shown above, the entries are:
Debit: Inventory Posting Setup – “Inventory Account (Interim)”
Based on the Inventory Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account.
Credit: Inventory Posting Setup – “Inventory Account"
Based on the Inventory Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account.
Debit: General Posting Setup - "COGS Account"
Based on the combination of Gen. Bus. Posting Group assigned to the Customer and the Gen. Prod. Posting Group assigned to the Item.
Typically defined as a Cost of Goods Sold type G/L Account.
Credit: General Posting Setup - “COGS (Interim)”
Based on the combination of Gen. Bus. Posting Group assigned to the Customer and the Gen. Prod. Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account.
Entry #4

In this example above, there are two credits because the Item and the Item Charge were set up with different Gen. Prod. Posting Groups which used two different "Sales Accounts".
Debit: Customer Posting Groups - "Receivables Account"
Based on the Customer Posting Group assigned to the Customer. (Note: Business Central includes a feature whereby the Customer Posting Group can be modified on each sales transaction, so the source could be the Sales Invoice header)
Typically defined as an Asset type G/L Account.
Credit: General Posting Setup - "Sales Account"
Based on the combination of Gen. Bus. Posting Group assigned to the Customer and the Gen. Prod. Posting Group assigned to the Item or the Item Charge.
Typically defined as a Sales (Revenue) type G/L Account.
Entry #5

This final cost adjustment entry made via the "Adjust Cost - Item Entries" process could be thought of as additional G/L Entries that are part of Entry #3 above. However, as you can see by the "Entry No." values assigned to the G/L Entry records, Business Central generates a separate G/L Register to record this final entry. This entry is the adjustment required to properly record the actual cost to be assigned to COGS and the actual cost impact to the inventory valuation.
Which G/L Account below is debited and which G/L Account is credited depends on whether the actual/final cost is higher than or lower than the original estimated (Interim) cost amounts posted.
In this specific G/L Register, the entries increase inventory and reduce the COGS amount because the actual cost ($0.95/EA) is lower than the expected/Interim cost amount ($1.05/EA):
Debit: Inventory Posting Setup – “Inventory Account"
Based on the Inventory Posting Group assigned to the Item.
Typically defined as an Asset type G/L Account.
Credit: General Posting Setup - "COGS Account"
Based on the combination of Gen. Bus. Posting Group assigned to the Customer and the Gen. Prod. Posting Group assigned to the Item.
Typically defined as a Cost of Goods Sold type G/L Account.
Summary and Takeaways
When expected cost posting is enabled and real-time cost adjustments are enabled on the Inventory Setup page, Business Central builds G/L Entries to ensure that the Inventory Valuation and related cost accounts on the income statement are as accurate as possible based on the existing information in the system.
The result is that Inventory remains fully reconciled to the General Ledger at all times - as of any day of the month!
Take your financial setups to the next level by making sure you are familiar with other suggestions I have provided in this previous post: 10 Best Practices for Financial Setups in Microsoft Dynamics 365 Business Central.