Magento Profit Tracking: Why Revenue Reports Aren't Enough

Revenue reports tell you how much money came in, not how much you kept. A Magento store can post record revenue and still lose money if those orders were discounted, heavy or refund-prone. Magento profit tracking fixes this by subtracting every real cost - product cost, shipping, payment fees, discounts, refunds - from each order, so you rank products by what they actually contribute, not by headline sales.
Why revenue-only reporting misleads merchants
Magento's default dashboard and the Reports menu lead with revenue: lifetime sales, average order value, bestsellers by quantity or by total. None of that accounts for what an order cost you to fulfil. Two orders with identical totals can have completely different outcomes once the costs land.
Here's a worked example. Two orders, both £120:
| Order A | Order B | |
|---|---|---|
| Order total | £120.00 | £120.00 |
| Product cost | £48.00 | £90.00 |
| Shipping paid to carrier | £6.00 | £14.00 |
| Discount applied | £0.00 | £24.00 |
| Payment fee (2.5% + 30p) | £3.30 | £3.30 |
| Refund | £0.00 | £0.00 |
| Profit | £62.70 | −£11.30 |
Same revenue line. One order made you £63, the other lost you £11 before a single support ticket. A revenue report shows two identical £120 rows and a revenue dashboard shows £240 in sales. Sell a hundred of Order B during a promotion and the revenue chart looks like your best week ever while the bank balance quietly drops.
What costs does revenue hide?
Revenue hides every cost that sits between the order total and your bank balance. The ones that matter for a Magento store, roughly in order of how often they get missed:
- Product cost (COGS). What you paid the supplier. This is the big one, and it varies per product, so a cart of high-margin items and a cart of loss-leaders can carry the same total.
- Shipping cost. Not what the customer paid - what you paid the carrier. Free shipping means you absorbed the whole thing.
- Payment fees. A percentage plus a fixed fee on every transaction. Small per order, relentless across thousands.
- Discounts. A 20% code doesn't cut 20% off profit, it cuts it off revenue, so it can wipe out a thin margin entirely.
- Refunds and returns. A refunded order can end up net negative once you've paid outbound shipping, the payment fee and the restocking time.
- Packaging. Boxes, filler, labels, tape. A pound or two per order that never appears on any Magento report.
- Advertising. Sat above the order in most stores' accounting, but if a customer only bought because of a paid click, that click is a cost of the sale.
What is the profit formula for an ecommerce order?
Profit per order is the order total minus everything it cost you to earn and fulfil it. In plain terms:
Order profit = order total − product cost − shipping cost − payment fees − discounts already deducted − packaging − allocated advertising − refunds
Two notes that trip people up. Discounts are usually already inside the order total (the customer paid the discounted price), so you don't subtract them twice - you subtract the supplier cost and fees from what was actually paid. And tax normally passes straight through to the tax authority, so it's neither revenue nor profit; strip it out before you calculate, or you'll flatter every margin.
Do this at the order level, not the store level. A single blended margin across the whole catalogue hides the loss-makers inside the winners. The point of profit tracking is to see which orders, products and customers make money, and a store-wide average can't tell you that.

Revenue dashboard versus profit dashboard
The difference is what each one lets you decide. A revenue dashboard answers "how much sold?". A profit dashboard answers "what should I do next?" - which is the question that actually runs a store.
| Question | Revenue dashboard | Profit dashboard |
|---|---|---|
| Best product? | Highest units or sales | Highest total profit contribution |
| Best customer? | Highest lifetime spend | Highest lifetime profit after refunds |
| Best campaign? | Most revenue attributed | Most profit after ad spend and margins |
| Worst product? | Invisible | Negative-margin lines, flagged |
| Effect of a sale? | Revenue up, looks great | Margin compression, visible |
Your best-selling product by units is often not your best product by profit. A cheap, popular item with a thin margin and heavy return rate can rank top of a revenue report and near the bottom of a profit one. You only ever see that if profit sits next to sales in the same view.

How this applies to Magento 2
Magento 2 has one piece of the puzzle built in and hides it well. Every product has a Cost attribute (Stores > Attributes, or the Advanced Pricing panel on the product), and it's what all profit tracking should key off. But Magento doesn't put it anywhere useful: it isn't a column on the product grid, it isn't in the order view, and no native report multiplies it out against sales. As of Magento 2.4.9 there's no profit column anywhere in the admin.
So the practical first step is unglamorous: get real cost values onto your products. If the Cost attribute is empty, every profit figure downstream is guesswork. Adobe's own advanced pricing documentation covers where the Cost field lives. Bulk-populate it from supplier data, keep it current when costs change, and you've got the one input everything else depends on. Then you need something to do the arithmetic per order and surface it, because Magento won't.

Where Moogento helps
ProfitEasy does the per-order arithmetic and puts the answer where you'll see it. It reads Magento's native Cost attribute for product cost, takes the real shipping amount (or a configurable default when shipping was free), subtracts refunds, and applies your own payment-fee rules per method - it ships with sensible defaults like a card fee of roughly 2.5% plus a fixed amount and a higher rate for PayPal, which you edit to match your actual processor. It then adds a Profit column to the sales order grid, plus profit-per-product percentages, so a loss-making order shows up in the list you already scan every morning. Costs recalculate on a background cron every ten minutes, so the numbers stay current without you exporting anything.
A couple of scope notes. ProfitEasy models packaging and other fixed per-order costs as configurable cost rules, so you enter those once rather than per order. And it doesn't pull live advertising spend - ad cost belongs to campaign-level reporting, which is where Pulse comes in, tying Google Ads spend to order profit for a true return figure. If your margins are being squeezed by stock sitting too long or selling out of your best lines, StockEasy covers the inventory side of the same problem.
Profit tracking audit checklist
- Open ten recent orders. Can you state the profit on each? If not, you're flying on revenue.
- Check the Cost attribute on your top 20 products by sales. Any blanks? Those margins are unknown.
- List your real per-order costs: carrier shipping, payment fee, packaging. Are they anywhere in Magento?
- Pull your last promotion. Compare revenue to estimated profit for the period. Did the discount pay for itself?
- Find your highest-refund product. Work out its net margin after return shipping and fees.
- Rank products by profit contribution, not units. Does the order surprise you?
- Check whether your best-selling item is also a profit leader or a thin-margin volume line.
FAQ
Does Magento 2 track profit by default?
No. Magento 2 stores a Cost attribute per product but never uses it in a report. There's no profit column on the order grid, no profit-per-product report, and no margin figure in the default dashboard as of version 2.4.9. Profit tracking needs either a custom report built on the Cost attribute or an extension that does the calculation.
What's the difference between margin and profit?
Profit is the money left after costs, in currency (this order made £62). Margin is that profit as a percentage of the sale price (£62 on a £120 order is a 52% margin). Track both: profit tells you which orders contribute most in absolute terms, margin tells you how efficient each sale is.
Should I subtract advertising from profit per order?
Advertising is a real cost of sale, but it's hard to attribute to a single order cleanly, so most merchants track it at the campaign level rather than per order. Calculate order profit before ad spend to judge product and fulfilment efficiency, then subtract ad cost at the campaign level to judge marketing. Both views matter and they answer different questions.
Where does product cost come from in Magento?
The native Cost attribute, set per product under Advanced Pricing or in bulk via Stores > Attributes. It's separate from price and never shown to customers. If you leave it blank, any profit calculation treats the product as pure margin, which massively overstates profit, so populating it accurately is the first job.
Start with the Cost attribute on your top sellers. Once real product costs are in, a single profit column on the order grid changes how the whole store looks - and usually not in the direction the revenue chart suggested.



