20 October 2026 · 5 min read · FCAnalytics team
How to calculate net profit per order (with a worked example)
Revenue per order is easy. WooCommerce shows it on every report. Net profit per order is the number that tells you whether each sale is worth making, and most stores have never calculated it properly.
This article gives the formula, works through an example with made-up round numbers, and lists the mistakes that cause stores to think they are earning more than they are.
The formula
Net profit per order is what remains from an order’s revenue after every cost caused by that order is removed:
Net profit per order = Net revenue minus product cost minus payment fees minus shipping cost minus attributable marketing cost
Each term needs a precise definition, because the vagueness is where the errors hide.
Net revenue
The amount the customer paid for goods, after discounts and coupons, excluding sales tax you collect on behalf of a government, and excluding the shipping charge you passed on (which is handled separately below). If the order was partly refunded, subtract the refund.
Product cost
What you paid for the items sold, including inbound freight and duties if you can allocate them. Also called cost of goods sold (COGS). This is usually the largest single deduction.
Payment fees
What your processor charges. Most charge a percentage plus a fixed amount per transaction. Apply it to the full amount charged to the card, which includes shipping and tax, not just the product subtotal.
Shipping cost
What you paid the carrier plus packaging. Net this against what the customer paid for shipping. If you offer free shipping, the full carrier cost lands here.
Attributable marketing cost
Ad spend divided across the orders it produced. The simplest fair method is to take the month’s spend per channel and divide it by that channel’s orders, giving a cost per order for each channel. Orders from organic or direct sources get zero here, which is one reason those channels look so good in a profit report.
Worked example
This is a made-up example with round numbers chosen to keep the arithmetic simple. It is not drawn from any real store.
Imagine an order for two items with a list price of $40 each, a 10 percent coupon, a flat $5 shipping charge to the customer, and 8 percent sales tax on the goods. The order came from a paid search campaign.
| Line | Amount | Note |
|---|---|---|
| Items at list price | $80.00 | 2 x $40 |
| Coupon (10%) | -$8.00 | |
| Net revenue | $72.00 | Goods after discount |
| Shipping charged to customer | $5.00 | Handled in shipping line below |
| Sales tax collected | $5.76 | 8% of $72, passed to the tax authority |
| Total charged to card | $82.76 | Basis for payment fees |
| Product cost | -$30.00 | 2 x $15 landed cost |
| Payment fee | -$2.70 | 2.9% of $82.76 plus $0.30 |
| Shipping cost net | -$3.50 | $8.50 carrier and packaging, less $5.00 charged |
| Attributable ad cost | -$12.00 | $1,200 monthly paid search spend / 100 orders |
| Net profit per order | $23.80 | 33% of net revenue |
So an order that looks like $82.76 on the WooCommerce orders screen, and $72.00 in net sales, actually produced $23.80 in profit. If the same order had come from organic search with no ad cost, profit would have been $35.80. If it had used a 25 percent coupon instead of 10 percent, net revenue drops to $60, fees drop slightly, and profit falls to roughly $12. That is the kind of comparison this number makes possible.
Doing it for the whole store
One order is an illustration. The useful version is the average across a period, broken down by the things you can change:
- By channel. Paid social, paid search, email, organic, direct. This is where you find channels that drive revenue at a loss.
- By product or category. Finds the best-seller with no margin.
- By customer type. Returning customers usually carry little or no ad cost, so their profit per order is higher even at the same AOV.
- By coupon. Shows which promotions pay for themselves.
Five mistakes that overstate profit
1. Using gross sales instead of net revenue
Gross sales still contain refunded and cancelled orders. A store with a 6 percent refund rate overstates revenue by 6 percent before it even starts.
2. Forgetting that payment fees apply to the full charge
The processor takes its percentage of everything on the card, including the shipping and tax you are passing through. On a $72 order with $10.76 of shipping and tax, calculating fees on the subtotal alone understates them by about 30 cents. Small per order, real across thousands.
3. Leaving shipping out because the customer “paid for it”
A $5 shipping charge rarely covers an $8.50 shipment. Free-shipping thresholds make this worse: the store absorbs the whole cost on exactly the orders where the customer was motivated enough to add one more item.
4. Ignoring ad spend, or spreading it over all orders
Ad spend belongs on the orders it produced. Spreading $1,200 of paid search over all 400 orders in a month (including the 300 that came from email and organic) makes the paid channel look three times cheaper than it is.
5. Treating product cost as a single average
If your costs range from 20 to 60 percent of price, an average cost applied to every product hides which ones make money. Enter costs per product, even if some are estimates to start with.
What to leave out
Net profit per order is a contribution number. It deliberately excludes fixed costs such as rent, salaries, software subscriptions, and the time you spend packing. Those are real, but they do not change with each extra order, so they belong in a monthly profit and loss statement rather than in a per-order figure. Mixing them in makes the number swing with volume and hides the per-order economics.
Keeping it current
The calculation is simple; keeping the inputs current is the work. Product costs change when suppliers reprice. Fee rates change when you switch processors. Ad spend changes every month. A spreadsheet works for a store with a few dozen products and one channel. Beyond that, it is easier to have the orders pulled in automatically and to enter costs, fee rates, and monthly ad spend in one place. That is what the profit screen in FCAnalytics does for WooCommerce stores: orders sync every 15 minutes, you enter product costs, payment fee percentage and fixed amount, shipping, and ad spend per channel per month, and the report shows net profit by period, channel, and product, with a printable version for your accountant.
Whichever tool you use, run the worked example above on three of your own recent orders this week. Most owners find the result surprising, and that surprise is the point.