Every sale costed against the batch it drew from.
Each purchase-order line you receive is a batch at its own landed cost. Sales draw from the oldest batch first, so the unit you bought cheap in March and the one you bought dear in July are each costed as what they were.
30 days free with one shop and 5 purchase orders. No card needed.
Batches in, sales out, oldest first
- Every received purchase-order line becomes a batch, at that line's own landed cost, freight and duty included.
- Batches are ordered by their purchase order's date. Each sale takes units from the oldest batch that still has some.
- A sale that empties one batch and starts the next is costed at the blend of the two, weighted by the units it took from each.
- Every draw is recorded: which batch, which sale, how many units, at what cost and what revenue. Profit per batch is read straight from that record.
Your dashboards, SKU tables and exports all read the cost of goods from these draws, so every screen shows the same figure.
An average hides which purchase made money
Suppose you buy the same product twice: the first batch lands at $3.30 a unit, the second at $4.47 after a freight rate rise. A weighted average costs every sale somewhere in between. Your margin looks steady while the second batch is quietly earning less than you think, and you only find out when the cheap stock runs out.
Batch costing shows it while it is happening. The Batches page lists every received purchase-order line with units sold and remaining, cost of goods, revenue and gross profit, so you can see which supplier, which shipment and which price is still worth reordering.
We are straight about the assumption: TikTok does not report which physical batch shipped an order, so oldest first is how CogsIQ assigns them. For stock that sells in the order it arrived, it is the right one.
Late invoices, backdated orders and revaluations
FIFO depends on order: a new batch, a backdated sale or a late freight invoice changes the cost of every sale after it. So CogsIQ never patches one sale. It replays the whole shop in date order after every import, correction, manual match and landed-cost change, and a Recost button runs the same replay on demand.
- A late freight invoice goes on its purchase order. The batch's landed cost changes, and so does the cost of every unit already sold from it.
- A batch revaluation sets a batch's unit cost with a reason. It is kept on record, applies to every sale from that batch, and survives every future replay.
- More sold than received is still costed, and flagged, so a missing purchase order shows up instead of hiding as a zero cost.
FBT and 3PL stock kept apart, listings kept together
Stock you send to Fulfilled by TikTok and stock at your own 3PL are different piles. Tag a purchase-order line with its channel and an FBT sale draws only from FBT and untagged batches, a 3PL sale only from 3PL and untagged ones, in one pass so no unit is used twice.
The opposite problem is one product sold under several TikTok listings. Map the extra listings to one internal product and their sales draw from one set of batches, with one cost and one stock count.
Sales made off TikTok, like a wholesale order or a stock clearance, can be recorded too, and are costed from the same batches.
Questions
Does TikTok tell you which batch an order shipped from?
No. TikTok never reports which physical batch shipped an order, so drawing from the oldest batch first is an explicit assumption, not a measurement. It is the standard assumption for stock that sells in the order it arrived.
Why FIFO and not a weighted average?
Because the same SKU bought in March and in July can cost different amounts, and an average hides which purchase made money. FIFO costs each sale against the batch it drew from. The weighted average is still shown, as the figure for valuing the stock you hold.
What happens when a sale spans two batches?
It takes what is left of the older batch and the rest from the next one, and its cost per unit is the blend of the two, weighted by how many units came from each.
What if I record a purchase order with an earlier date after the sales?
CogsIQ replays the whole shop in date order, so every sale after that date is re-costed against the batches as they now stand. The same happens after an import, a correction or a landed-cost change.
Can I record a sale made outside TikTok Shop?
Yes. Record a wholesale order or a stock clearance as an off-platform sale. FIFO costs it like any other sale, and it can be undone by reverting it.
Keep reading
See which batch made you money.
Free for 30 days with one shop and 5 purchase orders, no card needed. Import one settlement report and one purchase order and the gap between revenue and profit shows at once.