> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.booksgpt.ai/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Sell inventory and post cost of goods sold

When inventory costing is on, posting an invoice takes stock off the shelf and books its average cost to cost of goods sold.

|| Costing starts off. An owner turns it on under **Costing setup**. Until then, **On hand** falls and cost of goods sold does not post. See "Set up inventory costing".

## Sell it on an invoice

1. Open **All pages** in the left sidebar, then click **Sales** and **[Invoices](https://app.booksgpt.ai/go/invoices)**, then **New invoice**.
2. Pick the customer in **Bill to**.
3. On **Line items**, focus **Description**. The menu is **Products & services**.
4. Choose a stock-tracked product. **Qty** is in that product's unit. A line with no saved product does not move stock.
5. Click **Save as final** or **Save & send**. **Save draft** does not move stock or post cost.

![Line items, with House grind at $8.50 chosen from Products and services](https://booksgpt.ai/help/sell-inventory-and-cogs/picker.png)

**Save as final** posts to accounts receivable and sends no email.

![Finalize without sending, with Keep editing and Save as final](https://booksgpt.ai/help/sell-inventory-and-cogs/finalize.png)

## Choose lots on the invoice

Pick a product with **Track lots** or **Count it two ways (catch weight)**, and **Stock lots** opens under the line.

* Enter the line **Qty** in the product's unit.
* If it tracks lots, click **Add lot**, choose the lot (**Choose stock lot**), and enter **Quantity** from that lot. Split the line until the full quantity is allocated.
* Counted two ways? Enter **Total case sold for this line** (or **Total** plus your **Second unit**) on the line and on each lot. The two must match.
* On hand is checked again when you post. Nothing is reserved.
* Posting takes that stock off **On hand**. A draft does not.

## Average cost

The cost is the average on the invoice date, not the selling price: one average per product, or that lot's average when **Track lots** is on. A sale already posted keeps its cost. An earlier receipt entered later does not change it.

Harbor Meats bought 200 lb of House grind at $5.00. Invoice 1082 sells 40 lb at $8.50:

* Revenue $340.00
* Cost of goods sold $200.00
* Inventory down $200.00
* 160 lb remain, worth $800.00

The journal memo is **Record inventory cost**.

## If stock would go below zero

An owner sets **Negative stock** on **Costing setup**. Open **All pages** in the left sidebar, then click **Inventory** and **Costing setup**.

* **Allow stock below zero** posts with no warning. Missing units use the last purchase cost until you receive more, and **Products & stock** shows **Oversold** (more was sold than is on hand).
* **Block stock below zero** stops the post. Receive the goods first, or ask an owner to allow it. See "Receive inventory on Bills".

## When BooksGPT refuses a date

With costing on, BooksGPT can refuse a date that would sell or remove stock before it arrived. The message names a date that works, when one exists.

Invoices, Bills, stock adjustments, and credit memos are covered for products without lots. A lot sale is not covered: that lot uses its own receipt.

A receipt can still be refused, even on a lot, when you date it before another receipt that already covered a sale made before the goods arrived.

* Use the date the message names, or a later date. To receive stock earlier, undo the later receipt first.
* If it names sales, stock adjustments, credit memos, or Bills that already used the stock, undo or correct those first.
* Contact support when it offers no date, when another sale would be left waiting past a receipt, or when there is too much history to check.

## Change or undo a sale

* **Correct amounts & dates** reposts the cost. **Stock lots** works the same way: a price or date change keeps the split, and a quantity or lot change asks for the amounts again. A later Bill that covered the sale can refuse even a price change.
* **Revise details** does not move stock or cost.
* **Void invoice** or **Delete invoice** returns the stock and reverses the cost. Remove any payment first. A later receipt that already covered the sale can refuse it.
* An issued credit memo blocks void, delete, and correct. See "Issue a credit memo".
* To return goods, click **Issue credit memo**. See "Return inventory with a credit memo", including items sold at a zero price.

## Where the cost shows

Open **All pages** in the left sidebar, then click **Inventory** and **[Products & stock](https://app.booksgpt.ai/go/products-and-stock)**. **Cost history** lists **Purchase cost**, **Sold inventory**, **COGS**, and **Running value**. A lot sale names the lot under **Sold inventory**. Open a lot, then **Show all lots**.

![Cost history: a $1,000 purchase, then $200 of COGS, $800 remaining](https://booksgpt.ai/help/sell-inventory-and-cogs/cost-history-v2.png)

Period totals are the **COGS** view on **Inventory costs**. See "Read inventory value, COGS, and margin".