At a glance
Per-SKU gross margin percentage. The drill-down for the Gross Margin % headline. Surfaces which products are eating margin and which are subsidising the rest.
| What it counts | (SUM(SO line revenue) minus SUM(SO line COGS)) ÷ SUM(SO line revenue) per Item, for the period. |
| Tax treatment | Net of tax. |
| Shipping | Included if revenue/cost item, otherwise excluded. |
| Discounts | Deducted from revenue. |
| Refunds / Credit Memos | Deducted from both. |
| Currency | Reporting currency. |
| Subsidiary scope | Respects dashboard filter. |
| Sort | Default sort by margin %, ascending (worst first). Toggle to descending or by revenue contribution. |
| Time window | 30D |
| Alert trigger | Any SKU below break-even (negative margin) above a $5K monthly revenue threshold |
| Roles | owner, finance |
Calculation
Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US wholesale apparel distributor on NetSuite. 30-day window 14 Mar 26 to 12 Apr 26. Sorted by margin %, ascending.| SKU | Description | Revenue | COGS | Margin % |
|---|---|---|---|---|
| BR-D-014 | Brand D Discounted Sub-style | $24,000 | $26,800 | -11.7% |
| BR-C-088 | Brand C Clearance Tee | $18,000 | $19,200 | -6.7% |
| BR-A-202 | Brand A Premium FOB-only | $42,000 | $43,200 | -2.9% |
| BR-B-014 | Brand B Polo Navy XL | $58,000 | $52,400 | +9.7% |
| BR-A-001 | Brand A Premium Tee Black M | $186,000 | $115,000 | +38.2% |
| (top SKUs by margin %) | ||||
| BR-A-014 | Brand A Premium Polo | $94,000 | $48,000 | +48.9% |
| BR-A-022 | Brand A Premium Hoodie | $128,000 | $64,000 | +50.0% |
- 3 SKUs are negative margin. Trip the alert. Each is selling below cost.
- BR-D-014 at -11.7% is the worst. Likely heavy discounting + freight cost spike. The Controller pings merchandising: stop selling, raise price, or accept temporary loss to clear stock.
- The worst SKUs are typically discounted clearance lines. That’s not a problem if it’s intentional; it is a problem if margin compression on bestsellers (BR-A-001) goes unnoticed.
- Concentration matters. BR-A-001 contributes 71K gross profit. One SKU = 25% of profit. If it OOS or compresses, the impact is huge.
- Pair with Top SKUs Value and sales velocity. Low-margin + high-velocity = re-evaluate pricing. Low-margin + slow = liquidate.
Sibling cards merchants should reference together
| Card | Why pair it with Margin by SKU |
|---|---|
| Gross Margin % | Headline. |
| Margin Erosion Alerts | Trend per SKU. |
| Top SKUs Value | Inventory-side cut. |
| Landed Cost Avg | Upstream pressure. |
| Dead Stock Value | Slow + low margin = liquidate. |
| Revenue by Class | Brand/category roll-up. |
Reconciling against the vendor’s own dashboard
Where to look in NetSuite:Reports → Sales → Sales by Item with Margin (per-item, per-period) Reports → Inventory → Item ProfitabilityThe Sales by Item with Margin report should match this card per SKU. Why our number may legitimately differ:
| Reason | Direction | Why |
|---|---|---|
| Average vs FIFO costing | Either | FIFO can spike margin on a single transaction if costs swung. Average smooths. Card respects Item record method. |
| Subsequent landed cost adjustments | Either | Bills posted after Item Receipt adjust historic cost retroactively. |
| Period boundary | Small | Transaction date vs posting date. |
| Card | Relationship | Why |
|---|---|---|
| shopify.gross_margin per product | Different cost basis | Shopify uses Variant cost field, not landed cost. Comparing by SKU exposes whether commerce-side cost is current. |