Insufficient quantity of item on inventory
Business Central raises this when an outbound posting would push the item below zero quantity at that location and variant, and negative inventory is not allowed. The blocking rule is Prevent Negative Inventory, set on the Item Card or in Inventory Setup. Post the missing receipt or free the quantity that is reserved or already on a pick, then post the line again.
Before it writes an item ledger entry, Business Central verifies that the outbound quantity is actually there for that item, location, variant and unit of measure. The number it checks is the available quantity, not the quantity on hand: reservations, open picks, open warehouse shipments and unposted outbound documents all consume availability while the goods are still physically in the racks. So the check can fail even when the shelf is full, and it fails on any negative posting, whether it comes from a shipment, a consumption or assembly consumption line, a transfer, or a negative item journal line.
Most cases of this error are a sequence problem rather than a stock problem: something was consumed or shipped before the corresponding receipt was posted. Posting receipts on the day the goods arrive, and posting production output before consumption where the process allows it, removes the bulk of these failures. Reviewing the reserved quantity regularly also helps, because reservations left on cancelled or stalled orders quietly lock stock that everyone assumes is free.
Only if Prevent Negative Inventory is set to No for that item or in Inventory Setup, which is a company-wide setup decision and usually requires an administrator. It is not a fix: it lets the posting through and leaves you with negative inventory and unreliable unit costs until the receipt is posted.
Because the check uses available quantity. Reservations, open picks, open warehouse shipments and other unposted outbound documents reduce availability while the goods are still on the shelf. Stock at another location, variant or lot also does not count for the line that failed.