Sales reporting

Net sales vs gross sales vs total sales in WooCommerce

In WooCommerce Analytics, gross sales is the value of products sold before refunds and coupons. Net sales is gross sales minus refunds (returns) and coupon discounts. Total sales is net sales plus tax and shipping. Gross and net sales both exclude tax and shipping. All three are in Analytics › Revenue.

Below is a worked example, what each figure is good for, and why they rarely match the numbers you see elsewhere.

Where to find all three numbers

  1. In WordPress admin, go to Analytics › Revenue.
  2. Choose a date range at the top and click Update.
  3. The row of figures at the top shows Gross sales, Returns, Coupons, Net sales, Taxes, Shipping and Total sales for the period.
  4. The table below breaks the same columns down by day, week or month.

Click any figure to chart it. Other reports (Orders, Products, Variations, Categories) show net sales only, so when you compare a product's sales with your store total, compare it with net sales, not total sales.

How each figure is calculated

Figure Formula Includes tax? Includes shipping?
Gross sales Value of products sold, before refunds and coupons No No
Net sales Gross sales − returns − coupons No No
Total sales Net sales + taxes + shipping Yes Yes

Returns is money refunded in the period, and Coupons is the total of coupon discounts.

A worked example

Say your store had this month:

  • 80 orders with $4,000 of products at full price
  • $300 of coupon discounts on those orders
  • $200 refunded to customers during the month
  • $370 tax collected
  • $480 shipping charged

The Revenue report would show:

Figure Amount
Gross sales $4,000
Returns $200
Coupons $300
Net sales $3,500
Taxes $370
Shipping $480
Total sales $4,350

Average order value, which WooCommerce calculates from net sales, would be $3,500 ÷ 80 = $43.75. See the average order value guide for more on that figure.

Which number should you use?

Each one answers a different question.

  • Gross sales: how much demand was there? It shows what you sold at list price, before discounts and refunds. Useful for seeing whether a sale moved more product, but it flatters you when refunds or discounts are high.
  • Net sales: how much did your products earn? This is the number to track for growth, set targets against and compare between periods. It takes out refunds and discounts, and it leaves out tax (which you pass on to the government) and shipping (which mostly pays a carrier).
  • Total sales: how much did customers pay? Closest to the money that came through your checkout. Useful when reconciling with your payment provider, though fees and payout timing mean it won't match exactly.

The gap between gross and net sales is worth watching too. If it widens month after month, you're either discounting more or refunding more. Check the Coupons and Returns columns to see which, and use the refund rate guide if it's refunds.

Why these numbers don't match other places

You'll rarely see the same figure in WooCommerce Analytics, the Orders list, your payment provider and your accounting software. The usual reasons:

  • Refunds are dated when they happen. Analytics takes a refund off the period you issued it in, not the period of the original order. See returns.
  • Order statuses. Analytics leaves out orders with excluded statuses (set under Analytics › Settings). Your Orders list shows everything.
  • Date type. Analytics can date orders by creation, payment or completion date. Your accounting may use invoice or payout dates.
  • Tax and shipping. An order total on the Orders list includes them. Net sales doesn't.
  • Fees. Payment provider payouts are after fees. WooCommerce figures are before.

The full checklist is in why WooCommerce Analytics numbers don't match your orders.

For developers: the same figures in SQL

The Analytics table wp_wc_order_stats stores, for each order and each refund, total_sales (including tax and shipping), tax_total, shipping_total and net_total. Refund rows have a parent_id and negative amounts. This reproduces net and total sales for October 2026:

SELECT ROUND(SUM(net_total), 2) AS net_sales,
       ROUND(SUM(tax_total), 2) AS taxes,
       ROUND(SUM(shipping_total), 2) AS shipping,
       ROUND(SUM(total_sales), 2) AS total_sales,
       ROUND(-SUM(CASE WHEN parent_id > 0 THEN net_total ELSE 0 END), 2) AS refunded_net
FROM wp_wc_order_stats
WHERE date_created >= '2026-10-01' AND date_created < '2026-11-01'
  AND status NOT IN ('wc-pending', 'wc-failed', 'wc-cancelled');

Gross sales and coupons need the coupon lookup table as well, so the Revenue report export is the easier route for those. The query doesn't read your Excluded statuses setting, so edit the status list to match it, and change wp_ if your table prefix differs.

The quick way: ask Askshelf

Askshelf adds Analytics › Askshelf to WordPress admin. Its sales summary returns all of these figures at once, from the same Analytics data, so it matches the Revenue report:

Askshelfexample answer

Break down last month's sales: gross, net and total, with refunds and coupons.

In October, gross sales were $4,000. After $200 of refunds and $300 of coupon discounts, net sales were $3,500 from 80 orders. Adding $370 tax and $480 shipping, total sales were $4,350.Sales summary, 1–31 October
An example on a demo store. In your store, the numbers come from your own orders.

You can ask it to compare with the previous month or the same month last year. The sales summary reports sales, not profit. For gross profit, Askshelf has a separate profit lookup that starts from net sales and needs WooCommerce's Cost of Goods Sold feature turned on. See AI sales reports for WooCommerce for more.

What to do next

  • Report net sales to yourself and anyone you share numbers with, and say so. "Sales" with no label causes confusion.
  • Watch the gross-to-net gap. A widening gap means more discounting or more refunds.
  • Don't treat net sales as profit. For that, see the WooCommerce profit reporting guide.

For every other sales report WooCommerce offers, start with the WooCommerce sales reports guide.

Common questions

Is net sales the same as profit in WooCommerce?

No. Net sales is revenue after refunds and coupon discounts, excluding tax and shipping. Profit also subtracts what the products cost you, payment fees, shipping costs and other expenses, none of which net sales takes into account.

Which WooCommerce figure matches my bank deposits?

None of them exactly. Total sales is closest to what customers paid, but your payment provider deducts its fees and pays out on its own schedule, and refunds may be taken from later payouts.

Why is gross sales higher than total sales?

It can be when you give large coupon discounts or issue many refunds in the period, and charge little tax or shipping. Gross sales is before refunds and coupons, while total sales is after them but with tax and shipping added back.

See how Askshelf handles this: AI sales reports for WooCommerce