Your gross margin is low because something between the price a customer pays and the cost of the product itself is eating the gap — usually payment fees miscounted as revenue, discounts you forgot to net out, rising supplier costs, or ad spend wrongly stuffed into cost of goods. Gross margin measures product economics only, so the fix starts with cleaning up what belongs in cost of goods sold and what does not. Fix the categorization first; then attack the real cost drivers.

If your gross margin looks thin, the number is trying to tell you something specific: for every dollar of net sales, too little is left after the direct cost of the product. The frustrating part is that a "low" gross margin often is not a pricing problem at all — it is a bookkeeping problem wearing a pricing costume. Before you raise prices, make sure you are measuring the right thing.

What gross margin actually measures

Gross margin is net sales minus cost of goods sold (COGS), divided by net sales. It answers one question: does the product itself make money before you pay for ads, apps, and yourself?

Net sales is gross sales minus discounts and refunds. COGS is the direct, per-unit cost of the specific units you sold — for a print-on-demand store, that is the supplier's production charge plus the shipping baked into it. Everything else that keeps the business running lives below the gross-profit line.

So gross margin has exactly two inputs. If it is low, either your net sales are lower than you think, or your COGS is higher than you think. Every real cause below traces back to one of those two.

The five most common reasons your gross margin is low

1. You are booking your payout as revenue

This is the single most common cause in small Shopify stores, and it is invisible until you look. The deposit Shopify drops in your bank is a net settlement — sales minus processing fees, minus refunds, plus or minus adjustments — on a delayed, rolling schedule. It almost never equals your sales for the same window.

If you record that net deposit as "sales," you have already subtracted your fees from the top line without recording them anywhere. Your revenue looks smaller, your margin looks worse, and nothing reconciles. Book gross sales at the top, put fees and refunds on their own lines, and treat the payout as the cash consequence at the bottom.

2. Discounts and refunds you never netted out

Say you run a ten-percent-off code and it gets used more than you expected. If you are eyeballing "orders placed" as revenue but customers actually paid less, your true net sales are lower and your margin quietly compresses.

Refunds bite twice. A refunded order removes the sale, but the payment processing fee on the original charge is generally not returned to you. So a refunded thirty-two-dollar order still costs you roughly a dollar in fees for a sale you kept nothing from. Track discounts and refunds as contra-revenue — reductions to sales — so the drag shows up where it belongs.

3. Rising supplier and production costs

For a POD store, COGS is mostly the supplier's production charge. When your supplier raises blank-garment or print prices, or you shift your mix toward a pricier product (a hoodie instead of a tee), COGS climbs and margin falls even if your retail price never moved.

For context on how much room you have, gross margins vary widely by category — one accounting breakdown puts apparel around fifty-seven percent and general retail around thirty-three percent (predawnaccounting.com). A POD apparel store sitting well below that band usually has a cost or categorization leak, not a market problem.

4. Ad spend hiding inside COGS

This one inflates and then confuses. Ad spend scales with revenue, so it is tempting to file it as a cost of the sale. Do not. Paid acquisition belongs in operating expenses, below the gross-profit line.

Put it in COGS and two bad things happen: your gross margin swings around with your ad budget instead of reflecting product economics, and you hide the fact that customer acquisition cost — not the product — is your real risk. Keep ads in OpEx and your gross margin becomes a stable, honest read on the product.

5. Payment processing treated as an afterthought

Whether processing fees sit in COGS or OpEx is a legitimate judgment call — just be consistent, because flipping it month to month makes your trend line meaningless. What you cannot do is ignore them. A percentage-plus-fixed fee on every order is a real, recurring bite out of each sale, and on low-priced items the fixed portion hurts disproportionately.

A worked example: where the margin actually goes

Say you run a t-shirt store and have one month like this. All figures are illustrative.

You take 300 orders at about $32 each, for $9,600 in gross sales. A ten-percent code costs you $480, and nine refunds pull another $290. That leaves net sales of $9,600 − $480 − $290 = $8,830.

Now COGS. Production runs about $12 a unit across 300 units, so $3,600. Say your card processor charges roughly 2.9% plus 30 cents per order — that is about $346 across 300 orders. Total COGS is $3,600 + $346 = $3,946.

Gross profit is $8,830 − $3,946 = $4,884, and gross margin is $4,884 ÷ $8,830 = 55.3%. That is a healthy product.

Here is the trap. Ad spend of $3,000, plus $180 for Shopify and apps, $90 for tools, and $500 for your own draw, is $3,770 in operating expenses. Operating profit is $4,884 − $3,770 = $1,114, an operating margin of about 12.6%. The product is fine; ad spend is eating almost the entire gross profit. If you had buried that $3,000 in COGS, your "gross margin" would have collapsed to around 21% and pointed you at the wrong problem entirely.

This is why the categorization comes first. A low gross margin and a low operating margin have completely different fixes, and mixing the two lines makes both invisible.

How to diagnose your own low margin

Work top to bottom, in order:

  • Rebuild the top line from gross sales, not from your bank deposit. Pull the sales total before fees.
  • Subtract discounts and refunds separately so you can see how much each is costing you.
  • Confirm what is in COGS. It should be direct per-unit cost only. If ad spend, subscriptions, or your salary are in there, pull them out.
  • Recompute gross margin, then compute operating margin below it. Now you know whether the problem is the product or the business around it.

For the full line-by-line layout — including where shipping income and each fee type belong — walk through our ecommerce P&L guide. If your recomputed number came out surprisingly high, the causes are worth understanding too, in why is my gross profit high. And because gross margin and net margin move for different reasons, it helps to read why is my net profit margin high alongside it.

Fixing a genuinely low gross margin

Once the books are clean and the margin is still thin, you have real levers — and they split into two groups.

Lift net sales per order. Raise price where the product supports it, cut the depth or frequency of discount codes, and shift your mix toward higher-margin products. Even trimming a blanket ten-percent code to a targeted five-percent one flows straight to net sales.

Cut true product cost. Renegotiate supplier pricing or move to a lower-cost production option, consolidate on fewer product types to earn volume, and choose a payment setup that avoids stacked gateway fees. Most guides only mention raising prices — the cost side is usually where the quieter, more durable wins live.

Once you have both a clean gross margin and a clean operating margin, you can finally see which orders and products actually make money. The related read on why is my gross profit low goes deeper on the dollar figure behind the percentage.

Where PodVector fits

The hard part of all this is that the real numbers live in different places — Shopify holds your sales, refunds, and fees; your ad platforms hold spend; your POD supplier holds production cost. Stitching them by hand is exactly where categorization mistakes creep in.

PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful and computes true per-order profit — production, fees, shipping, and ad cost attributed down to the individual order. Victor, its AI operator, reads that live data and tells you which products and orders carry your margin and which drag it down, then proposes moves and can act on the Shopify side with your approval. Victor is not a dashboard, and he does not touch your ad account — he reads ad data to explain the picture and leaves the ad platform alone. If you want the per-order profit picture without the spreadsheet gymnastics, start free with PodVector.

To keep the underlying data clean so these numbers stay trustworthy, see how Shopify accounting integrations split each payout into its real components.

FAQs

Is a low gross margin always bad?

Not necessarily. A low gross margin is only alarming once you have confirmed the number is measured correctly — ad spend out of COGS, payouts not booked as revenue, discounts and refunds netted out. A genuinely low margin on a high-volume, low-touch product can still support a healthy business; a "low" margin caused by a bookkeeping mix-up is just noise. Clean the books first, then judge the number.

What is a good gross margin for an ecommerce or POD store?

There is no universal target, and any single benchmark should be treated with caution. Gross margins vary a lot by category — one breakdown lists apparel near fifty-seven percent and general retail near thirty-three percent (predawnaccounting.com). Use your own category as the reference point, and watch the trend in your margin over time more than the absolute number.

Should payment processing fees go in COGS or operating expenses?

Either can be defensible — the rule that matters is consistency. Processing fees are a direct, per-transaction cost, so many stores put them in COGS; others keep them in OpEx. Pick one placement and never flip it, because switching month to month makes your margin trend meaningless. What you must not do is leave them out, which is what happens when you book the net payout as revenue.

Why did my gross margin drop when I started running ads?

If your gross margin moved when you changed your ad budget, ad spend is almost certainly sitting inside your COGS. Gross margin should reflect product economics only and should not react to your ad spend at all. Move paid acquisition to operating expenses, and your gross margin will stabilize while your operating margin correctly absorbs the ad cost.

Does raising prices fix a low gross margin?

It is one lever, but rarely the only one. Raising price lifts net sales per order, but cutting true product cost — better supplier pricing, a tighter product mix, avoiding stacked gateway fees — often produces more durable gains without risking conversion. Diagnose whether the leak is on the sales side or the cost side before you reach for a price increase.