Gross profit is the money left after you subtract the direct cost of the products you sold from your net sales. It is the cleanest measure of whether your product makes money, before rent, ads, and salaries enter the picture. When it is low, something between the price tag and the cost of goods sold (COGS) is out of line — and the fix depends entirely on which one.
Most articles on this topic list vague causes like "operational inefficiency." That is not actionable. Below, each cause comes with the math to confirm it and a lever that actually moves the number.
First, make sure you are calculating it right
Gross profit is net sales − COGS, and gross margin is that figure divided by net sales. Two mistakes make a healthy store look sick here.
Net sales, not gross sales. Net sales already has discounts and refunds removed. If you divide gross profit by the bigger gross-sales number, your margin reads lower than it is.
COGS means direct costs only. For a POD store that is the supplier's production charge plus the shipping baked into it — the blank garment and the printing. It is not your ad spend, your Shopify subscription, or your design tools. Those belong below the gross-profit line in operating expenses. Get this boundary right before you diagnose anything, and see the full layout in our ecommerce P&L guide.
The four real reasons your gross profit is low
1. Your price is too close to your product cost
This is the most common cause and the easiest to prove. Take one product, subtract its landed COGS from its price, and divide by the price.
Say you sell a t-shirt for $28. Your Printify production charge including shipping is $14. Your gross profit per unit is 28 − 14 = $14, a 50% gross margin. Now say a competitor pushed you to drop the price to $22 while your $14 cost held: 22 − 14 = $8, which is 8 ÷ 22 = 36%. You cut price by roughly a fifth and your gross margin fell by fourteen points. Thin pricing punishes margin far faster than it feels like it should.
2. Discounts are quietly eating the gap
A 10%-off code does not cost you 10% of profit — it costs you a slice of the margin, which is a much bigger share. On that same $22 shirt with $14 of cost, a 10% discount removes $2.20 from a gross profit of only $8.00. That is more than a quarter of your product profit gone on one code. Run those codes constantly and your reported gross margin sinks even though nothing about your costs changed. If your margin dropped in a month with a big promo, this is your prime suspect.
3. Your COGS crept up and your price did not follow
Suppliers raise blank and print prices. If your production charge moved from $12 to $14 while your $28 price stayed put, your per-unit gross profit fell from $16 to $14 — a two-dollar leak on every single order, invisible unless you re-check landed cost regularly. Rising raw-material and shipping costs are a well-documented squeeze on gross margins, as Sage notes. The fix is either a price adjustment or a cheaper cost input, covered in the levers section below.
4. You buried ad spend or fees in the wrong line
This is the trap that makes a fine store panic. There are two versions.
First, ad spend in COGS. Meta and Google spend scales with revenue, so it feels like a cost of the sale — but it is paid acquisition and belongs in operating expenses. Bury it in COGS and your gross margin collapses on paper while hiding that your real risk is customer acquisition cost, as ecommerce accounting specialists at A2X explain.
Second, booking the Shopify payout as revenue. Your bank deposit from Shopify is a net figure — sales minus processing fees, minus refunds, plus or minus adjustments. Record that deposit as "sales" and you have silently mixed fees into your top line, which mangles every ratio underneath it. Book gross sales at the top and put fees on their own line.
Speaking of fees: online card processing on Shopify Payments' lower-tier plans is commonly quoted around 2.9% plus 30¢ per transaction, and a disputed charge carries a $15 chargeback fee in the US, per A2X's breakdown of Shopify fees. Whether you count processing inside COGS or in operating expenses is a judgment call — just be consistent, because flip-flopping makes your gross-margin trend meaningless.
A worked example: finding the leak
Say your store did $9,600 in gross sales across 300 orders last month, gave $480 in discount codes, and refunded $290. Your net sales are 9,600 − 480 − 290 = $8,830.
Your POD production ran 300 × $12 = $3,600. Processing at roughly 2.9% + 30¢ across 300 orders is about $346. If you count both as COGS, gross profit is 8,830 − 3,600 − 346 = $4,884, a gross margin of 4,884 ÷ 8,830 = 55%. That product is healthy.
Now watch what happens if you had wrongly stuffed $3,000 of Meta and Google spend into COGS. Gross profit would read 4,884 − 3,000 = $1,884, and gross margin would crater to about 21% — the same store, the same products, made to look broken by one filing error. This is exactly why the COGS-versus-operating-expense boundary matters, and it is the difference between panicking and pricing correctly. For how the sales-versus-payout mistake plays out in more detail, see why is my net profit margin high.
Levers that actually raise gross profit
You have exactly three ways to move this number, and stacking small wins beats swinging for one big one.
Raise price or reduce discount depth. On thin-margin products a modest price increase flows almost entirely to gross profit, because your cost does not move. Test it on your best sellers first.
Cut landed COGS. Compare supplier prices for the same blank, consolidate to fewer print providers to unlock volume rates, or drop low-margin variants that drag the blended number down. This is the lever most owners forget exists — many assume raising price is the only option, when a dollar off COGS lands in your pocket just as cleanly.
Shift your mix toward higher-margin products. If your gross margin fell without any price or cost change, your product mix probably shifted toward revenue-heavy, profit-light items. Push the winners. To go deeper on the per-unit view, read why is my contribution margin low and its counterpart, why is my contribution margin high.
Where the diagnosis usually stalls
The reason "why is my gross profit low" is so hard to answer alone is that the truth lives in five places at once: Shopify orders and refunds, your Printify or Printful production charges, Stripe or Shopify Payments fees, and your Meta and Google ad spend. Stitch those by hand and it is easy to double-count a fee or misfile acquisition cost — the exact errors above.
This is the gap PodVector closes. It connects Shopify, Meta Ads, Google Ads, Printify, and Printful, and computes your true per-order profit from live data — so COGS, fees, discounts, and ad spend each land where they belong instead of getting smeared into one number. Victor, its AI operator, reads across that data and proposes concrete moves, and with your approval executes the Shopify-side changes himself. Victor is not a dashboard, and he does not touch your ad account — he reads ad data and hands you the decision.
When you can see the leak in dollars, the fix is usually obvious. And if the underlying problem is cash timing rather than margin, our Shopify Capital review walks through the financing trade-offs.
FAQs
Is a low gross profit margin always a problem?
Not on its own. Some business models run healthy on thin gross margins and high volume. It only becomes a problem when the margin is too thin to cover your operating expenses — ads, subscriptions, and pay — and still leave an operating profit. Compare your gross margin against your OpEx as a share of sales; if OpEx eats all of it, the margin is too low for your cost structure.
Why did my gross profit drop when my sales went up?
Usually discounting or mix. Sales spikes often come from a promo code, which pulls margin down on every discounted order, or from a surge in a low-margin product that drags the blended figure. Check whether the growth coincided with a discount campaign or a shift toward cheaper items.
Should payment processing fees go in COGS or operating expenses?
Either is defensible — the golden rule is consistency. Many ecommerce accountants place processing in COGS because it is a direct per-transaction cost, while others keep it in operating expenses. Pick one and never switch, or your month-to-month gross-margin trend becomes noise.
Does ad spend lower my gross profit?
It should not — if it is filed correctly. Paid acquisition belongs in operating expenses, below the gross-profit line, so it lowers operating profit, not gross profit. If adding ad spend dropped your gross margin, you have miscategorized it as COGS, which is one of the most common causes of a scary-looking gross profit number.
How often should I recheck my landed COGS?
At least quarterly, and immediately after any supplier price-change notice. POD blank and print prices move, and a cost increase you did not catch is a permanent per-order leak until you either raise price or switch inputs. Recomputing landed cost per product is the single highest-leverage habit for protecting gross margin.