Docs Sales By Country for WooCommerce How the Numbers Are Calculated

How the Numbers Are Calculated

If a figure in the Sales by Country report does not match what you see elsewhere in WooCommerce Analytics, this page explains why. It states exactly which orders are counted, how each column is calculated, and which store settings change the result.

Which orders are counted

The report does not use its own list of order statuses. It reads the Excluded statuses setting from WooCommerce → Analytics → Settings, the same setting that drives every other Analytics report. Any status ticked there is left out of the Sales by Country figures.

If you have never changed that setting, the report falls back to excluding these statuses:

  • Pending payment
  • Cancelled
  • Failed
  • Trash
  • Refunded — the status on the whole order, which is not the same thing as a partial refund. See How refunds are handled below.
Draft checkout orders are always excluded, whatever the Analytics setting says. These are abandoned block-checkout sessions, not real orders.

Because the setting is shared, changing Excluded statuses in Analytics changes the Sales by Country numbers at the same time as the core reports. That is intentional: it is what keeps the two in agreement.

How each column is calculated

ColumnWhat it isFormula
CountryThe country name, taken from the billing or shipping address depending on the toggle at the top of the report.—
OrdersThe number of orders from that country. Refunds are not counted here — a refunded order is still one order.Count of orders, excluding refund records
Items SoldTotal quantity of individual line items across those orders.Sum of item quantities
Total SalesThe full amount the customer paid, after discounts and including tax and shipping. This is the order total.Gross sales − discounts + tax + shipping
Net SalesProduct revenue only — what is left after discounts, tax and shipping are taken out.Total Sales − tax − shipping
Total TaxTax collected on those orders.Sum of order tax
Avg Order ValueThe average amount paid per order.Total Sales ÷ Orders
Orders (%)That country’s share of all orders in the report for the selected period.Country orders ÷ all orders × 100
Average Order Value is calculated differently here than in core WooCommerce Analytics. This report divides Total Sales by orders, so tax and shipping are part of the average. Core Analytics divides Net Sales by orders. On a store that charges tax or shipping the two figures will not match, and neither is wrong — they answer different questions. Use this report’s figure for "what does a customer in this country actually pay us", and the core figure for "what product revenue does an order in this country produce".

How refunds are handled

Refunds are deducted from the money columns, and they are deducted from the country the original order belonged to.

  • Total Sales, Net Sales and Total Tax — reduced by the refunded amount. This covers partial refunds as well as full ones.
  • Orders — unchanged. A refund is not a separate order and never adds to, or subtracts from, the order count.
  • Avg Order Value — falls after a refund, because the refunded amount leaves Total Sales while the order count stays the same.
  • Country — a refund inherits the billing and shipping country of the order it belongs to, so it always reduces the right country.

A refund whose parent order sits in an excluded status is not counted, because the order it belongs to is not counted either.

Billing country, shipping country, and orders with neither

The toggle at the top of the report chooses which address field the whole report groups by. It does not blend the two, and it does not fall back from one to the other.

An order with no country in the selected field is left out of the report entirely. It is not reassigned to the other address and it is not grouped under "Unknown". The most common case is a virtual or downloadable product bought with no shipping address: it appears under Billing Country but not under Shipping Country. If your two toggle views disagree on order count, this is almost always the reason.

If you sell digital products, Billing Country is usually the view you want — switch to it with the toggle at the top of the report.

Which date an order is counted on

The report uses the Date type setting from WooCommerce → Analytics → Settings — again, the same setting core Analytics uses. On a default store this is date paid, so an order placed on the 31st but paid on the 1st falls in the new month.

Changing Date type in Analytics moves orders between periods in this report too. If a month’s totals shift unexpectedly, check whether that setting was changed.

Time zone

Days are bounded by your store’s own time zone, set at Settings → General → Timezone — not UTC, and not the viewer’s local time. A day runs from 00:00:00 to 23:59:59 in store time, so an order placed at 23:30 store time belongs to that day even if it was already tomorrow in UTC.

Who can see the report

Access follows WooCommerce’s own reporting capabilities, so you do not need to manage a separate permission for this plugin.

What they seeRequired capabilityTypical role
The country table, chart, summary, Best-Selling Products and anomaly alertsview_woocommerce_reports or manage_woocommerceShop manager, Administrator
The Orders table in Single Country View, and the AI summary, recommendations and question boxmanage_woocommerceShop manager, Administrator
The settings screen — saving an API key, testing the connectionmanage_woocommerceShop manager, Administrator

A user with view_woocommerce_reports but not manage_woocommerce sees the report but not the per-order detail or the AI panels. If someone reports a "Sorry, you are not allowed to access this page" message, this is the capability to check.

Why your numbers might still differ from core Analytics

SymptomMost likely cause
Average order value is higher here than in AnalyticsExpected. This report divides Total Sales by orders; Analytics divides Net Sales. See the note above.
Shipping Country shows fewer orders than Billing CountryOrders with no shipping address are excluded from the shipping view. Normal on stores selling virtual or downloadable products.
Older orders are missing, or show no countryHistorical orders need a one-time import before they carry country data. See Past Order Import.
A country’s totals dropped without new refundsCheck whether Excluded statuses or Date type changed under Analytics → Settings.
Totals changed after a WooCommerce data rebuildA core rebuild repopulates the Analytics tables and can clear the country columns. Re-run Past Order Import afterwards.
Figures look wrong on a multi-currency storeAmounts are shown in one currency at a time. See Compatibility for how each multi-currency plugin is handled.