Cost of Goods Sold is where most Amazon sellers' books quietly fall apart. Get it wrong and your margins are fiction, your inventory asset is wrong, and your tax return over- or under-states profit. Three mistakes cause almost all of it: using supplier price instead of landed cost, expensing inventory when purchased instead of when sold, and ignoring inventory Amazon loses.
Landed cost: your real unit cost
Your cost per unit is not the factory invoice. It's the factory price plus inbound freight, customs duties and tariffs, import taxes and brokerage, and prep-center fees — allocated across the units in the shipment. Freight allocates best by weight or volume; duties by value; simple cases by quantity. A $4.00 widget routinely lands at $5.60 — and a 40% error in unit cost is a 40% error in your gross margin math.
See what Amazon owes you — free
Connect your seller account and get a free reimbursement audit. No credit card, keep 100% of what you recover.
When COGS hits the books
Inventory you buy is an asset, not an expense. COGS is recognized when units sell: each settlement period, you move (units sold × unit cost) from Inventory Asset to COGS. That's accrual accounting, it's what lenders and buyers expect, and it's the only way margins by month mean anything.
Valuation method matters too. Weighted-average cost recalculates your average unit cost on each receipt and is the practical default. FIFO tracks each purchase lot separately and consumes oldest first — more precise when your purchase prices move a lot, and it preserves lot-level audit trails.
The part everyone misses: inventory events
When Amazon loses or damages your units, those units are gone but most tools leave them sitting in your inventory asset. Correct books write the units down when they're lost, recognize a receivable when a reimbursement is due, and book the cash when Amazon pays. Even leading accounting connectors tell you to make these balance-sheet adjustments manually each month. BeanHawk posts them automatically — the inventory ledger, the claim, and the journal entry stay in sync because they come from the same data.