Guides · 12 October 2026
The costs most stores forget to count when working out profit
“Price minus what I paid for it” is gross profit, and it overstates what you keep. Real profit per product is what is left after every cost attached to selling it. Use this checklist.
The checklist
- Product cost. What you paid per item, landed: include inbound freight and duties if you pay them.
- Payment processing. Usually a percentage of the sale plus a fixed amount per order. Check your own rates.
- Shipping and packaging you absorb. If you offer free shipping or charge less than it costs you, the gap is a cost per sale.
- Returns and refunds. Refunded sales lose the revenue and often the fees too. Use your own return rate as a percentage of revenue.
- Discounts. Discount codes, sales and bundles reduce the price you actually received. Use the price customers paid, not the list price. See how discounts turn a profitable product into a loss.
Not in the list but worth tracking separately: advertising spend per sale, marketplace commissions, staff time and overheads.
Worked example
A $60 product that cost you $30:
| Line | Amount |
|---|---|
| Price | $60.00 |
| Product cost | −$30.00 |
| Payment fee (2.9% + $0.30) | −$2.04 |
| Shipping and packaging | −$6.00 |
| Returns allowance (4%) | −$2.40 |
| Profit | $19.56 |
The “price minus cost” figure was $30, a 50% margin. After the real costs, you keep $19.56, a net margin of about 32.6%. If an ad costs $12 to produce each sale, that drops to $7.56, or about 12.6%.
What to do with it
- Work it out for your top sellers first, then the products you discount most.
- Put the same numbers into every pricing decision: new products, sale planning and supplier negotiations.
- Revisit them when fees, shipping rates or supplier costs change.
Missing costs are the most common gap. Entering a cost per item for every product is the single most useful bit of housekeeping a retailer can do.
Check your own numbers. Thefree profit calculator runs this maths on your price and costs, or Margin Guardrails does it for every product in your Shopify store.