Ask most store owners about their margin and you get a number built from two figures: "I buy it for 20 euros, sell it for 50, so I make 60%." That number is comforting and almost always wrong. The selling price is the only one of those two numbers that arrives in your bank account intact — everything else gets nibbled on the way there. By the time a 50 euro order has cleared, paid its processing fee, covered its share of a free-shipping promise, set aside a provision against the chance it comes back, and carried its slice of the marketing spend that won the customer in the first place, the 30 euros of "profit" is frequently closer to 12-16. This post is about that gap: the specific costs that sit inside a single order beyond the product itself, why each one is easy to overlook, and — the part most articles skip — where in your PrestaShop back office you can actually see and tighten them.

A quick boundary first, because this cluster covers margin from several angles and we don't want to send you in circles. If you want the formal definitions — gross vs contribution vs net margin, and how margins differ by product category — that's profit margins: understanding your real numbers. If you want the wider catalogue of store-level running costs (legal texts, photography, accountancy, software subscriptions), that's e-commerce costs nobody talks about. This piece stays narrow on purpose: the cost stack on one order, and how to instrument it in PrestaShop.

The cost stack on a single order

Think of every order as a stack. Product cost is the bottom layer — the one everybody tracks. Above it sit six layers that quietly compress your margin, and unlike product cost, several of them don't shrink when you discount. Here is the full stack on a 50 euro order, with the back-office or accounting reality behind each line:

Cost layerTypical sizeWhy it hidesWhere it lives in PrestaShop
Product cost (COGS)The wholesale priceIt doesn't — this is the one everyone seesThe Cost price field on the product's Pricing tab (still the wholesale_price column underneath). Most stores leave it at 0, which means every margin figure PrestaShop could give you reads as artificially inflated or meaningless — often treating the whole sale price as margin.
Payment processing1.5-3.5% + a fixed fee (often 0.20-0.30 EUR)Deducted by Stripe/PayPal before the money reaches you, so it never appears as an "order cost"Not stored against the order by core. It surfaces only in your processor's statements — or in a financial module that reconciles fees per transaction.
Shipping you absorbWhatever the carrier charges minus what the customer paidFree-shipping thresholds turn the carrier bill into your cost silentlyCarrier prices under Shipping → Carriers; free-shipping rules under Shipping → Preferences and in cart rules. The gap between charged and actual is never reconciled by core.
Packaging & handling0.50-2.00 EUR per orderBought in bulk, expensed monthly, never tied back to the orderNowhere in core — it's a fixed cost you must allocate per order yourself.
Returns provisionReturn rate × cost-to-process, spread across all ordersIt's a statistical cost, not a line item, so it feels like "someone else's order"Return rate is visible if you use Customer Service → Merchandise Returns (the RMA flow); the per-order provision is a number you calculate.
Customer acquisition (CAC)Total marketing spend ÷ orders wonPaid from a separate "marketing budget" mental account, never charged to the order it producedNot in core. PrestaShop's Stats → Best vouchers and referrer stats hint at channel performance, but true CAC needs your ad-platform spend joined to orders.
Platform overheadHosting + modules + tools ÷ ordersFixed and small per order, so it rounds to zero in people's headsYour invoices; allocate the monthly total across the month's order count.

The pattern worth internalising: only the first layer is genuinely visible to you, and only two layers (product cost and the percentage slice of processing) actually shrink when an order is smaller or discounted. The rest are largely fixed per order — which is exactly why discounts are so much more expensive than they look.

Working the stack: what 60% becomes

Take the 50 euro order and fill in the stack with conservative, mid-range figures:

  • Selling price: 50.00 EUR
  • Product cost: -20.00 EUR
  • Payment processing (3% + 0.25): -1.75 EUR
  • Shipping absorbed: -3.00 EUR
  • Packaging & handling: -1.00 EUR
  • Returns provision (10% rate × 8 EUR to process): -0.80 EUR
  • Marketing / CAC: -5.00 EUR
  • Platform overhead allocation: -1.50 EUR

True cost: 33.05 EUR. True profit: 16.95 EUR. True margin: roughly 34%. Not the 60% on the price tag, and that figure still doesn't pay you for the time spent packing and supporting the order. The point isn't the exact percentage — your numbers will differ — it's the shape: more than half of the "profit" the naive calculation promised has already been spent before you count a cent.

Why discounts cost far more than the discount

This is the single most useful thing to take from the stack, because it governs every promotion you'll ever run. Most of those cost layers are fixed per order — shipping, packaging, returns provision, marketing, overhead don't care that you knocked 20% off. So a discount comes entirely out of the thin profit layer at the top.

Run a 20% discount on the order above. Selling price drops to 40.00 EUR. Product cost is unchanged at 20.00. Processing falls a little (to about 1.45). Everything else holds. New profit: roughly 8.30 EUR — down from 16.95. A 20% price cut cut profit by more than half. Flip it around and the same lever works in your favour: a modest price increase drops almost entirely into profit because the cost stack beneath it barely moves. That asymmetry — discounts hammer profit, small increases lift it disproportionately — is the practical reason to know your stack before you reach for a cart rule.

Making PrestaShop show you the stack

Generic advice stops at "track your costs." On PrestaShop you can do better, because some of these layers can be captured at source. Three concrete moves:

1. Fill in Wholesale price — on every product

Open any product and go to the Pricing tab. The Cost price field (stored in PrestaShop's wholesale_price product/combinations fields, depending on product setup and version) is what every margin calculation in PrestaShop reads. Fill it in and the Pricing tab's price summary shows you the live margin and margin rate on that product; leave it at 0 and that figure — along with the profit columns in profit-aware reporting modules — reads as artificially inflated or meaningless rather than real. Filling it in is the unglamorous prerequisite for the bottom layer of the stack being real instead of assumed. If you carry stock, keeping that purchase cost accurate as supplier prices move is itself a job — that's where inventory tooling like warehouse management earns its place, by keeping the cost basis behind your margins current rather than a number you typed in once.

2. Stop guessing at absorbed shipping

The shipping layer is the easiest to mismeasure because PrestaShop happily lets the customer pay one figure while the carrier bills another. Audit it deliberately: under Shipping → Carriers, compare the price ranges you charge against your real carrier invoices, and check every free-shipping rule under Shipping → Preferences and your active cart rules. The question to answer per order band is simple — at this basket size, am I charging enough that the order still clears the rest of its stack after I eat the postage? Where to set that free-shipping threshold so it protects margin is a decision the stack makes for you: it has to sit above the basket value where absorbed shipping would wipe out the profit layer.

3. Reconcile fees and costs in one place

Payment processing, expenses and the cost side of each invoice never live in PrestaShop core — they scatter across processor statements and spreadsheets, which is why CAC and processing are the two most "forgotten" layers. Pulling them together is exactly the job of financial reporting: it brings invoices, corrections, costs, expenses and VAT into the back office so the gap between gross and net stops being a once-a-year accountant surprise. So what does that buy you? You see the real per-order and per-period profit without exporting orders to a spreadsheet every month — which is the difference between knowing your numbers and hoping about them. Keep your expectations honest, though: a module can surface and total the costs you record; it can't invent the carrier or ad-spend figures you never captured. Garbage in, blank reports out.

Two costs the back office can't show you

Two layers stay stubbornly outside any module and need a manual habit:

  • Customer acquisition cost. This is usually the largest and most volatile layer, and it lives in your ad platforms, not your store. The way to keep it from quietly eating margin is to stop judging marketing on the first order and start judging it on the customer's whole relationship — because a 5 EUR CAC on an order is ruinous if the customer buys once and generous if they come back six times. That's a different number entirely: see customer lifetime value.
  • Your own time. Packing, support, product updates — real economic cost even before you pay yourself a salary. When the time layer of the stack grows faster than your margin, that's the signal it's cheaper to delegate than to keep absorbing it; we covered the decision in when to hire your first employee and the keep-vs-outsource call in outsourcing for e-commerce.

Using the stack to make decisions

Once the stack is real rather than assumed, a handful of recurring decisions get easier:

Which products to promote. Push the items whose top profit layer is thick enough to survive a discount and the extra shipping a promotion drags in. Promoting a thin-margin product on free shipping can mean shipping at a loss to win a sale that pays you nothing.

Where to draw the free-shipping line. Set it above the basket value at which absorbed shipping would erase the profit layer — not at a round number that "feels right."

Whether to raise prices. Because the stack beneath the price is mostly fixed, a small increase lands almost entirely in profit. If your true margin sits below 20%, you have no buffer for a carrier hike or a processing-fee change, and a careful increase is often less painful for demand than owners fear.

None of this requires a finance degree — it requires the wholesale price field filled in, the shipping numbers audited, and one place that totals the fees and costs core ignores. The stores that last aren't the ones with the biggest revenue line; they're the ones that know what each order actually keeps after the stack takes its cut. Where the stack fits into the bigger growth picture — pricing as you scale, when the per-order economics change — runs through scaling your PrestaShop store.

Tags: PrestaShop SEO
Share this post:
David Miller

David Miller

Over a decade of hands-on PrestaShop expertise. David builds high-performance e-commerce modules focused on SEO, checkout optimization, and store management. Passionate about clean code and measurable results.

Enjoyed this article?

Get our latest tips, guides and module updates delivered to your inbox.

Comments

No comments yet. Be the first!

Be the first to ask a question or share useful feedback.

Loading...
Back to top