WooCommerce profit report: what the built-in reports show, and how to get net profit.
WooCommerce tells you what you sold. It does not tell you what you earned. This guide explains exactly which lines the built-in Analytics reports contain, what the Cost of Goods Sold field adds, which costs are still missing, and three ways to get to a real net profit figure.
What the built-in WooCommerce reports show
The Analytics menu in WooCommerce has reports for Revenue, Orders, Products, Categories, Coupons, Taxes, Downloads, Stock, Customers and Variations. The Revenue report is built from these definitions:
- Gross sales: sale price of the products multiplied by quantity ordered.
- Returns: the value of products and services refunded, shown as a negative number on the date the return occurred.
- Coupons: the net discount amount.
- Net sales: gross sales minus returns and coupons.
- Taxes and shipping charged to the customer.
- Total sales: net sales plus taxes and shipping.
By default pending, cancelled and failed orders are excluded from these totals; processing, on hold and completed are included; the refunded status cannot be excluded. Every line here is money the customer paid or was given back. None of them is a cost you paid, which is why there is no profit column: the analytics documentation does not mention profit, cost or margin at all.
The Cost of Goods Sold field
Since WooCommerce 10.3 (released 21 October 2025), Cost of Goods Sold is part of WooCommerce core. Store owners enable it in settings, enter a cost per product, and the value is stored on each order line so that margins can be calculated at product and order level through WooCommerce's APIs. Two things to know before you rely on it:
- It is a field, not a report. Core WooCommerce stores the cost; it does not add a profit report to the Analytics menu.
- Enter costs before you need the report. Whether a cost entered today is applied to orders placed last year depends on the tool reading the field, so check that before trusting a historical margin.
The separate Cost of Goods extension goes further: a Cost of Good field per product and variation, bulk editing, editable line-item costs on orders, and Analytics reports showing Cost of Goods, Profit and Average Profit per Order, profit by date, product and category, and stock valuation, exportable to CSV. Its documentation advises entering only the cost of producing the item and, by default, excludes checkout fees, shipping and taxes from profit.
What is still missing: the costs between gross margin and net profit
Product cost gets you to gross margin. Three more costs stand between gross margin and what you can actually spend:
- Payment fees. The processor takes a percentage of the amount charged, including tax and shipping, plus a fixed amount per transaction. On a small order the fixed part alone can be several percent of margin.
- Shipping cost. What the carrier and packaging cost you, net of what you charged the customer. Free-shipping thresholds turn this into a real cost line.
- Ad spend. The month's paid search and social budget, spread over the orders it produced. A product can have a healthy gross margin and lose money once the ads that sold it are counted.
And one adjustment: refunds must come off revenue for the order they belong to, not just appear as a negative line on the day they were issued, or last month's profit stays overstated for ever.
From list price to net profit.
Illustrative round numbers, not from a real store. The same example, with the mistakes to avoid, is worked through in the net profit per order article.
| 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 | Offsets the shipping cost 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 |
The built-in Revenue report would show this order as $72.00 net sales and $82.76 total sales. The Cost of Goods extension would show $42.00 profit. Net profit is $23.80. The gap between $42.00 and $23.80 is fees, shipping and ads, and it is the gap most stores never see.
Spreadsheet, plugin, or service.
1. Spreadsheet
Export orders from WooCommerce, add columns for product cost, fee, shipping and a per-order ad cost, and sum by month. Free, accurate if you keep it up, and the first thing to stop being updated when the store gets busy. Right for a few hundred orders a month with stable costs.
2. Cost plugin inside WordPress
Enable the core Cost of Goods Sold field or install the Cost of Goods extension for profit-by-product and stock reports. Gets you gross margin in the Analytics menu. You still add fees, shipping and ad spend yourself, and reports run on your own server. Right for stores without much ad spend.
3. FCAnalytics
Reads orders and refunds through read-only keys, takes product costs from a table or CSV, applies a fee percent plus fixed amount, shipping from order lines or flat, and monthly ad spend per channel prorated to the period. Shows net profit, margin and a waterfall by day, product and channel, and emails a monthly profit report. Right for stores that advertise and want the number without the spreadsheet.
Whichever you choose
Write the definitions down. Which statuses count as paid, when a refund is dated, what the fee base is. Our rules are on the methodology page; WooCommerce's are in its analytics documentation. The other tools are compared in the plugin guide.
How FCAnalytics builds the profit report
- Paid orders are those in processing, completed or refunded status; refunds are subtracted from the order they belong to.
- Product cost is unit cost times quantity per line, from the costs you entered per product or uploaded by CSV. Products with no cost are listed so you can fill them in.
- Payment fees are order total times your fee percent plus your fixed fee, per paid order.
- Shipping cost comes from the shipping lines on each order or a flat amount per order, your choice.
- Ad spend is the monthly amount you enter per channel, prorated to the days in the period.
- Net profit = paid revenue minus the four costs; margin = net profit divided by paid revenue. Both are shown for the store, per product, per category and per channel, with a daily profit line and a waterfall from revenue to profit.
Costs are entered once in Settings, Costs (how it works) and applied to the whole imported history, so the report is complete from the first day rather than from the day you entered costs. The monthly profit report is emailed on the Growth and Scale plans, and a printable version can be saved as PDF for an accountant or client. The net profit per order article covers the five mistakes that make stores overstate what each sale earns.
Short answers.
Does WooCommerce have a profit report?
Not in core. WooCommerce 10.3 added a Cost of Goods Sold field, which stores cost per order line; a profit report needs the Cost of Goods extension, a spreadsheet or a service such as FCAnalytics.
Can I get profit for orders placed before I entered costs?
In FCAnalytics, yes: costs are entered per product and applied to every imported order. With the core field or the extension, check their documentation for how historical orders are handled before trusting earlier months.
What is the difference between gross margin and net profit?
Gross margin is revenue minus product cost. Net profit also subtracts payment fees, shipping cost and ad spend. In the example above they are $42.00 and $23.80 for the same order.
Which plan includes the profit report?
Growth and Scale include the Profit dashboard, the monthly profit email and the printable report. Starter has the Overview, funnel, customers and products.
See your net profit, not just your sales.
Connect a WooCommerce store, enter your costs once, and the profit report covers your whole history. 14-day trial, no card required.