Which of my orders are unprofitable right now?
An order-level contribution flag that recomputes profit on every order and surfaces the discount-plus-freight stack that average-order-value reporting hides.
Last updated: June 27, 2026
To find which orders are unprofitable right now, compute contribution margin on each individual order and flag every order where the number is negative. Contribution per order is net revenue after discounts, minus COGS, payment fees, shipping, and fulfillment. Sort the negative rows to the top. Those are your unprofitable orders, and your average order value hides them.
What makes an order unprofitable in the first place
An order is unprofitable when its total costs exceed its net revenue, leaving negative contribution margin on that one transaction. Order-level margin is the number that matters here, not store-wide gross margin, because a store can average 55 percent margin while a meaningful slice of individual orders lose money on every fulfillment.
Three costs do most of the damage, and they compound. Discount stacking shrinks the revenue side when a sitewide code lands on top of a loyalty credit or a referral reward. Shipping cost attacks the other side, especially on bulky or heavy items shipped under a free-shipping promise, where the customer pays nothing and the merchant eats the full carrier charge. Payment fees take their percentage regardless. Add a remote-area surcharge or an oversized-parcel handling fee on the wrong order and a sale that looked fine on the dashboard has already lost money before it ships.
Average order value reporting buries all of it. AOV is a revenue average, so it tells you the typical order is large enough to look healthy while saying nothing about cost on any single order. A $189 sale and a $189 sale read identically in an AOV report even when one cleared $60 of profit and the other lost $20, because the discount stack and the freight on the second never enter the average. The only way to see the loss is to cost each order on its own.
How do I find which orders are unprofitable right now?
Find which orders are unprofitable right now by running an order-level contribution flag: recompute contribution for each order and flag the ones below zero. The steps below produce one number per order and a sorted list of the losers.
Step 1: Pull net revenue after every discount
Start with what you actually collected on the order, not the list price. Subtract every discount that applied, including stacked codes, loyalty credits, and referral rewards. Free-shipping promotions count here too, because the shipping revenue you collected from the customer is zero.
Step 2: Subtract the real cost of goods
Subtract the landed COGS for the items on the order. Use what the units actually cost you delivered to your warehouse, not a standard cost that is months stale. For the upstream version of this, rebuild your true net margin per order so the cost basis is current before you start flagging.
Step 3: Subtract payment fees on the amount charged
Subtract the processor fee, which is charged on the discounted amount you actually billed, not the list price. A common card rate is 2.9 percent plus $0.30 per transaction, so apply your real rate to net revenue.
Step 4: Subtract the full shipping cost you paid
Subtract every line the carrier billed you for this order: base rate, dimensional-weight or oversized handling, and any remote-area surcharge for an extended delivery zone. Bulky flat-pack furniture is where this line gets ugly, because dimensional weight and oversize fees stack on a single parcel.
Step 5: Subtract fulfillment, then flag the negatives
Subtract pick, pack, and labor. What remains is contribution per order. Any order below zero is unprofitable right now. Sort ascending and the worst offenders sit at the top of the list.
| Order-level contribution | Formula |
|---|---|
| Net revenue | List price − all discounts (shipping revenue = $0 if free) |
| − COGS | Landed cost of items on the order |
| − Payment fees | Processor rate × net revenue + fixed fee |
| − Shipping | Base + dimensional/oversize + remote-area surcharge |
| − Fulfillment | Pick, pack, labor |
| = Contribution | Flag every order where this is negative |
A $189 bookshelf order that the dashboard says is fine
A flat-pack bookshelf that sells for $189 is the kind of high-ticket order AOV reporting treats as a safe, profitable sale. Run the order-level contribution flag on one real order and it turns negative, driven entirely by a discount stack plus oversized freight plus a remote-area surcharge.
The order as the customer placed it
The customer used a 20 percent sitewide code and stacked a $25 loyalty credit on top, then checked out under the store's free-shipping promise to a rural ZIP code.
| Line | Amount |
|---|---|
| List price | $189.00 |
| 20% sitewide code | -$37.80 |
| Stacked $25 loyalty credit | -$25.00 |
| Net revenue (shipping collected: $0) | $126.20 |
Net revenue lands at $126.20, computed as $189.00 minus $37.80 minus $25.00. The customer paid nothing for shipping, so there is no freight revenue to offset the carrier bill coming next.
The costs the dashboard does not surface
Now subtract every cost the order actually incurred.
| Line | Amount |
|---|---|
| Net revenue | $126.20 |
| COGS (landed) | -$74.00 |
| Payment fee (2.9% × $126.20 + $0.30) | -$3.96 |
| Base shipping | -$31.00 |
| Oversized/dimensional handling | -$14.00 |
| Remote-area surcharge | -$18.50 |
| Fulfillment (pick, pack, labor) | -$4.50 |
| Order contribution | -$19.76 |
The shipping line alone totals $63.50, computed as $31.00 base plus $14.00 oversized handling plus $18.50 remote-area surcharge. Stack that against $126.20 of net revenue and the order cannot carry its own COGS. Total costs come to $145.96, so contribution is $126.20 minus $145.96, which is negative $19.76.
This $189 order lost $19.76. The order-level contribution flag of negative $19.76 is the single computed figure that names it unprofitable, derived as net revenue $126.20 minus the sum of costs $145.96. To see how loud the loss is, the same bookshelf at full price, no stacked discount, shipped to a normal zone with no remote surcharge, returns positive $59.72 in contribution. The product is healthy. The order is not, and only an order-level recompute shows the $79 swing between them.
Why AOV reporting calls this a good order
In an average-order-value report, this order is a $189 line item that pulls AOV up. It looks like one of your best sales. The discount stack, the free-shipping carrier bill, and the remote surcharge never enter an AOV calculation, so the $19.76 loss is invisible until someone costs the order on its own. That is the gap the order-level flag closes, and it is the part most dashboards skip.
What it costs to skip the order-level flag
Skipping the order-level contribution flag means you keep funding loss orders and reading the blended average as proof you are fine. Picture 250 bookshelf-style orders a month going out under the same stack-plus-freight pattern. At negative $19.76 each, that is $4,940 a month draining straight out of the P&L, roughly $59,000 a year, with nothing in your AOV or revenue reports pointing at it. You discover it at month-end as a vague one-point dip in gross margin and no idea which orders caused it. Running the flag converts that fog into a named list of orders you can fix this week by capping discount stacks, adding a surcharge on remote or oversized shipments, or excluding bulky SKUs from free shipping. The detection side of this is covered further in catching margin erosion early, and the discount mechanics specifically in stopping unprofitable discount stacks.
How do I find my own break-even on a discounted order?
Find your own break-even on a discounted order by solving for the maximum total of discount and shipping the order can absorb before contribution hits zero. Set contribution to zero and work backward to the discount-plus-freight headroom.
For the bookshelf, fixed costs other than discount and shipping are COGS $74.00, fulfillment $4.50, and the fixed payment fee $0.30. Holding the carrier bill at $63.50, the order breaks even when net revenue covers those costs plus the percentage fee. Solving 0.971 times net revenue minus $142.30 equals zero gives a break-even net revenue of $146.55, so the order tolerates at most $42.45 in total discount, computed as $189.00 minus $146.55. The actual stack was $62.80 in discounts on top of a $63.50 freight bill, so it blew through the headroom and the order went negative.
Run the same back-solve across your catalog and you get a per-order watchlist. Pull four inputs for any order and the test runs in one pass.
| Input | Where it comes from |
|---|---|
| List price and discounts applied | Order record, including stacked codes and credits |
| Landed COGS | Cost ledger, current not stale |
| Shipping billed | Carrier invoice for that order, all surcharges |
| Payment fee | Processor statement or your published rate |
Segmenting by SKU, channel, and customer is the next pass, because the same bookshelf stays profitable at full price and loses money under a stacked code shipped free to a remote zone. Cutting margin along those lines is covered in margin by SKU, channel, and customer.
Where Agentis fits
Running this flag once in a spreadsheet finds today's loss orders. Keeping it live as discounts stack, carriers add surcharges, and free-shipping promotions run is the part a spreadsheet loses by the next batch of orders, and that is where real-time profit governance earns its place.
Profit governance is the practice of monitoring and enforcing margin rules in real time across every order, SKU, and channel, so unprofitable activity gets caught and corrected as it happens instead of discovered in a month-end report.
Agentis is a real-time profit governance platform for high-volume Shopify Plus and ShopLine merchants. It monitors margin at the order and SKU level and flags or blocks unprofitable activity before it reaches the P&L. For an order like the negative $19.76 bookshelf, that means the flag fires at checkout when the discount stack meets the remote-area freight, not at month-end after 250 of them have shipped.
Frequently asked questions
Which of my orders are unprofitable right now?
The orders that are unprofitable right now are the ones where contribution margin is negative, meaning net revenue after discounts is less than the sum of COGS, payment fees, shipping, and fulfillment. Compute that one number per order, sort ascending, and every negative row is a loss order your average order value is hiding.
Why does a high-value order still lose money?
A high-value order loses money when its costs outrun its discounted revenue, most often from discount stacking plus heavy or oversized shipping plus a remote-area surcharge. A $189 bookshelf order can fall to negative $19.76 of contribution while its list price keeps average order value looking healthy, because AOV measures revenue and never sees the cost side.
How is order-level contribution margin different from gross margin?
Order-level contribution margin is profit on a single transaction after that order's own discounts, COGS, fees, shipping, and fulfillment, while gross margin is a store-wide average. Gross margin can read 55 percent while individual orders lose money, so contribution per order is the figure that exposes which specific orders are unprofitable.
Does free shipping cause unprofitable orders?
Free shipping causes unprofitable orders when the carrier bill on a bulky or remote shipment exceeds the margin left after discounts. The customer pays zero for shipping, so the merchant absorbs the full base rate, oversized handling, and any remote-area surcharge, and on the bookshelf order those three lines totaled $63.50 against $126.20 of net revenue.
How do I stop orders from going negative?
Stop orders from going negative by capping how many discounts can stack, adding a surcharge or shipping fee on oversized and remote shipments, and excluding bulky SKUs from free-shipping promotions. Run the order-level contribution flag first so you know which combinations break even and which ones, like a 20 percent code stacked on a loyalty credit shipped free, do not.
Your next step
Export your last 30 days of orders with discounts, shipping cost, and COGS, then compute net revenue minus COGS minus payment fees minus shipping minus fulfillment for each one. Sort ascending and read the negative rows. Those are the orders losing you money right now, and you just found them before month-end did.