---
title: "FIFO COGS for Amazon sellers: why cost basis matters"
description: "FIFO costs each Amazon sale against the oldest inventory lot on hand, so buying one SKU at two prices produces a different profit than average or last cost."
question: "How should I calculate cost of goods sold for FBA?"
cluster: profit-and-fees
published: 2026-08-23
updated: 2026-08-23
tags: [cogs, fifo, accounting, cost-basis]
related: [what-is-cogs, why-profit-tools-disagree, amazon-settlement-reports-explained, landed-cost-for-amazon-wholesale]
---

FIFO cost of goods sold relieves each FBA sale against the oldest inventory lot on hand, which is the method that survives buying the same SKU at two different prices.

Cost basis looks like an accounting preference until a supplier raises a price mid-quarter. The same 400 units of sales then produce $1,840, $1,600 or $1,120 of gross profit depending only on which convention the software applies, and none is arithmetically wrong. This page runs that month.

## Why Amazon cannot tell you your COGS

Amazon never supplies cost of goods sold, because Amazon does not know what you paid your distributor. A settlement report contains the sale price, referral fee, fulfillment fee, refunds, reimbursements and adjustments — the entire revenue and fee side. The cost side originates in a purchase order, an invoice, a freight bill and a prep charge, none of which touch Amazon's systems.

Every FBA profit number therefore has two provenances. The revenue half is authoritative and comes from [Amazon settlement reports](/docs/amazon-settlement-reports-explained). The cost half is whatever you told the tool, applied by whatever convention the tool implements. Sellers assume a disagreement between two profit dashboards lives in fee handling. More often it lives here, invisible because both tools display one confident number with no method label.

## FIFO, weighted average and last cost, defined

Three cost-basis conventions cover almost every tool a wholesale seller meets.

- **FIFO (first in, first out)** — each sale is costed against the oldest unsold lot. Inventory is tracked as dated layers, and one sale can span two layers.
- **Weighted average** — all units on hand are pooled and every sale is costed at the pooled average, smoothing a price change across past and future sales.
- **Last cost** — every sale is costed at the most recent purchase price. This is what a single editable cost field on a SKU record produces by default.

FIFO and weighted average are both recognized inventory accounting methods. Last cost is not — it is an artifact of a data model with room for exactly one cost per SKU, and it is common precisely because it needs no lot tracking. What belongs inside a lot's cost is covered in [how to calculate landed cost for Amazon wholesale](/docs/landed-cost-for-amazon-wholesale).

## One month, two lots, three different profits

One SKU, two purchase lots and one month of sales separate the three methods. Lot 1 arrived March 3: 300 units at $11.20 landed, $3,360. Lot 2 arrived April 18 after a supplier increase: 300 units at $13.60 landed, $4,080. Total cost available for sale is $7,440 across 600 units. In May the SKU sold 400 units at $16.40 of net proceeds each after Amazon fees, for $6,560.

**Table: 400 units of May sales costed three ways, August 3, 2026 worked example**

| Method | COGS applied | Gross profit | Gross margin | Closing inventory, 200 units |
|---|---|---|---|---|
| FIFO | $4,720 (300 at $11.20 + 100 at $13.60) | $1,840 | 28.0% | $2,720 |
| Weighted average | $4,960 (400 at $12.40) | $1,600 | 24.4% | $2,480 |
| Last cost | $5,440 (400 at $13.60) | $1,120 | 17.1% | $2,720 |

The spread between best and worst is $720 — 11% of net revenue and 39% of the FIFO profit figure. FIFO and weighted average both reconcile: COGS plus closing inventory equals the $7,440 actually spent. Last cost does not. It books $5,440 against sales and still values 200 units at $13.60, totaling $8,160 for goods that cost $7,440. That extra $720 is money never spent, which is why last cost cannot produce a balance sheet that ties.

## The retroactive restatement problem

A single cost field per SKU also rewrites history, silently. On April 18 that field is overwritten from $11.20 to $13.60, because there is nowhere else for the new price to go. Any report that recomputes profit from the current cost field rather than a stored per-sale cost now shows March and April at $13.60 too. Say 250 units of Lot 1 had already sold in those two months: each loses $2.40 on paper, and $600 of gross profit disappears from months that closed weeks ago.

The failure mode is dangerous because nothing errors. Last month's dashboard shows a different number than it did last month, and the seller assumes they misremembered. A wholesale operation buying the same SKUs at drifting prices hits this every quarter, which is why [tracking wholesale supplier price changes](/docs/track-supplier-price-changes) belongs in a dated record rather than an overwrite.

## Returns, removals and commingled units

Three FBA events need a cost layer assigned, and each has a defensible answer. A return restocked as sellable should re-enter inventory at the cost it was relieved at, not today's cost — putting a Lot 1 unit back at $13.60 invents $2.40 of inventory value from nothing. A removal or disposal relieves the layer it came from and books the loss at that layer's cost — usually the oldest and cheapest — so the booked loss reads smaller than today's replacement cost implies.

Commingled FBA inventory does not break FIFO, despite the intuition that it should. Cost layers are an accounting construct tied to your receipts, not to physical units, so layers relieve in receipt order regardless of which unit shipped. What commingling breaks is tracing one sold unit back to one purchase order — traceability, not costing.

## How Forge Command tracks FIFO COGS alongside most-recent cost

Forge Command keeps two costs per SKU rather than one, which is the direct fix for retroactive restatement. The profit and loss module runs FIFO COGS built from Amazon settlement flat files, with per-SKU and per-brand profit, returns, reimbursements, indirect expenses and deferred transactions. Separately, purchase orders carry a derived most-recent-cost field alongside freight allocation, landed cost and per-SKU cost seeding. FIFO answers what the units you sold cost; most-recent cost answers what the next unit will cost. Neither overwrites the other.

Where other tools win is worth stating plainly. Sellerboard models FIFO COGS too, and moving a purchase order to Closed prompts a new COGS batch with allocated logistics costs in the export (vendor help center, checked August 3, 2026). If the question is what your accountant books rather than what your buying screen shows, A2X turns each settlement into accrual-correct journal entries for QuickBooks Online, Xero, NetSuite and Sage. Forge Command integrates with QuickBooks but is not a ledger connector of that pedigree.

## Frequently asked questions

### Is FIFO required for Amazon sellers

Amazon does not require FIFO and never sees your cost. FIFO and weighted average are both accepted methods, and consistency matters more than the choice — switching mid-year restates prior periods and needs your accountant involved.

### Does FIFO or weighted average show higher profit

FIFO shows higher profit than weighted average whenever costs are rising, because the oldest and cheapest lots relieve first. In the worked month above, FIFO produced $1,840 against weighted average's $1,600. When supplier prices fall, that reverses.

### Why do two profit tools disagree on the same month

Two tools disagree on cost basis far more often than on fees, and neither usually labels its method. Last cost against FIFO can differ by 39% of gross profit on one SKU, as covered in [why Amazon profit tools disagree with each other](/docs/why-profit-tools-disagree).
