Ordinex
← All postsOperator

Tracking Per-SKU Profit With a Simple Sheet

June 12, 2025

Most shop owners know they are making money overall, but not which SKU is actually making it. Once a catalog grows past a dozen items, the feeling of a good month can hide the reality that three products are subsidizing losses on seven others. This is about building a simple sheet to see profit and loss per SKU, and reading it into concrete import decisions.

Why you need per-SKU tracking

When you carry many SKUs, total revenue buries a lot of information. A month with 50 million VND in sales could come from two strong SKUs and eight that are dragging the average down. If you only see the total, you keep funding all ten, rather than concentrating capital on the two that work and cutting what is costing you.

The second problem is reorder decisions. When stock gets low, the question is not whether you have cash, but whether this specific SKU deserves more capital. The answer lives in its profit history, not in the feeling that it sells fast. A SKU that moves quickly but leaves almost nothing after platform fees and ad spend may not be worth restocking. One that sells slower but needs no ads can be far healthier. Per-SKU tracking is how you tell the difference.

The columns that matter

A minimal but functional sheet has these columns:

  • SKU name and internal code. Write a short description and a code you can match to invoices. For example: "Foldable phone stand, black, GT-01".
  • Real landed cost per unit. This is the most important number, and it is not the 1688 price. Real landed cost adds up: the product price converted to VND (around 3,600 VND per yuan, check the current rate when you calculate), domestic China freight to the consolidation warehouse, sea or air freight to Vietnam (sea freight typically runs 18 to 30 days at lower cost, air is faster but significantly pricier), customs and handling fees spread across the batch, the order-service fee if you use an agent (typically a few percent of the goods value), and a shrinkage allowance for defects and returns. Divide the total by usable units received, not units ordered.
  • Average actual selling price. Not the listed price. The real average across the month, including discounted and flash-sale orders. Pull this from the platform revenue report, not the product listing.
  • Platform fees and domestic shipping per order. Each platform takes a percentage that varies by category and shop tier, plus shipping costs the shop may absorb. This number shifts with promotions, so use the monthly average rather than a fixed rate.
  • Ad cost per order sold (CPS). Take total ad spend on that SKU in the month and divide by orders that came from ads. If you run shared campaigns across multiple SKUs, estimate by revenue share. Imprecise but far better than leaving it out.
  • Gross profit per unit. Selling price minus landed cost, minus platform fees, minus ad cost per order. This is the real cash left after all direct costs.
  • Units sold in the month. Needed to calculate total contribution.
  • Total monthly profit. Gross profit per unit multiplied by units sold. This is the number you compare across SKUs.
  • Current stock. Units on hand. Tells you when to reorder.
  • Notes. Space for anything that distorts the month: a deep promotion, a spike in returns, a supplier price increase.

How to fill it and keep it current

Fill the sheet once a month after you have clean data from the platform. Weekly is too noisy. Monthly is enough to see trends without drowning in detail.

Where to pull each number:

  • Landed cost: from your import invoice or freight settlement document, divided by batch quantity. If this import cost more than the last, use the current batch's number.
  • Revenue and units sold: from the platform's sales report, filtered by SKU.
  • Platform fees: most platforms provide a detailed payment report per order, listing commission and shipping fees separately. Sum the fees for that SKU and divide by orders.
  • Ad spend: from the platform's ad dashboard, filtered by campaign or ad group tied to that SKU.

Update monthly and keep at least three months of history. Three months is enough to see direction: a SKU improving, holding flat, or declining.

Reading the sheet into decisions

Once you have three months of data, several decisions become clear.

Whether to reorder. The simplest read: if gross profit per unit is positive, total monthly profit is meaningful, and the sales pace is stable or rising, restocking is justified. If gross profit per unit is zero or negative, adding more stock means adding more loss.

Finding SKUs that drain quietly. Some SKUs move orders consistently and look healthy, but when you run the full numbers, gross profit per order is only a few thousand VND or actually negative. This sheet surfaces those SKUs before they spend a year pulling your profitability down.

Comparing capital efficiency across SKUs. The SKU with the highest total profit is not always the best use of capital. What matters more is profit per dong invested. A SKU earning 5 million VND from 10 million VND tied up in stock is more efficient than one earning 8 million from 40 million, because the same 10 million can run four cycles of the first SKU instead of one partial cycle of the second.

To calculate this simply, estimate the capital currently in inventory for each SKU (stock on hand multiplied by landed cost) and divide monthly profit by that number. The ratio is comparable across SKUs regardless of scale.

Reorder timing. From the average monthly sell rate and current stock, you can estimate how many weeks of stock you have left. If lead time from 1688 typically runs four to six weeks total (ordering, production if needed, sea freight around 18 to 30 days, customs clearance), set your reorder trigger when you have six to eight weeks of stock remaining, not when you are almost out.

Common mistakes when starting out

A few errors come up often when people first build this sheet.

Missing a cost layer. The most frequent one is forgetting the order-agent service fee (usually a few percent of the goods value) or forgetting shrinkage. If 100 units arrive but only 93 are sellable, landed cost should be calculated on 93, not 100. Skipping one small fee layer across many SKUs adds up to a meaningful distortion.

Using listed price instead of actual selling price. If you ran flash sales or platform discount programs that month, your real average selling price is lower than the listing price. Pull from the revenue report, not from the product page.

Skipping ad cost because it is hard to split. This is the column most often left blank, and it makes profit look better than it is. Even a rough estimate beats nothing. If you spent 5 million VND on ads and sold 200 orders from those ads, your ad cost per order is 25,000 VND. That number belongs in the sheet.

Keeping only one month of data. One month is not enough to tell whether a SKU is getting better or worse. Three months shows direction. Less than that is just a snapshot.

When the simple sheet is no longer enough

This format works well for a shop running under 30 to 40 active SKUs. As the catalog grows, you will want to consolidate data across platforms for the same SKU, or break down performance by channel (TikTok Shop separate from Shopee and Lazada). At that point, a manual sheet starts losing control and you need more automated aggregation.

But even with more powerful tools later, the logic stays the same: real landed cost, actual selling price, platform fees, ad cost, profit per order, total profit per SKU. Understanding each column in this simple sheet is the best foundation for reading any more complex report that comes after.

Bottom line

Tracking per-SKU profit does not require software. A sheet with the right columns, filled consistently each month, is enough to see which SKUs are building the business and which are quietly consuming capital. Reorder decisions, capital allocation, and cut decisions all get clearer when the real numbers are in front of you, rather than scattered across a general sense of whether the month felt good or bad.