Sales discrepancies in Shopify Analytics

Shopify Analytics sales reports can sometimes display numbers that don't match across different reports, exports, or dashboards because of timing or reporting logic. This page outlines common reasons for these discrepancies, such as how refunds and returns are recorded, how sales by staff are counted in retail environments, and the differences between sales reports and order exports. Understanding these distinctions helps you interpret your reports more accurately and troubleshoot unexpected differences in your sales data.

Refunds and returns in Sales reports discrepancies

Returns and refunds are two separate items in your reports. Sales reports include your returns and the Payments finance report includes refunds. To get a report of the refunded figures, you can add a Payment status column to the Sales over time report, filter transactions for Refunded or Partially refunded, and then organize the report by the Payment status column.

Common discrepancies for returns and refunds in Sales reports can occur in the following scenarios:

  • If the refund is still pending, then you might have a positive amount displayed in your Sales by channel report. When the refund is complete, the amount displays as a negative amount.
  • If you refund products in an order and then restock the products on separate dates, then the same amount displays twice with the restock displaying N/A in the Product field.
  • If you restocked products and didn't refund the order, then the tax might display as a return amount in the Sales report and Finance Sales report. This is expected behavior as the tax is returned because the product that the taxes were collected on is returned. The taxes aren't refunded to your customer in this case, but not added to any Sales reports. The returned taxes don't display in the Payments report because that report considers only the money exchanged between you and the customer.
  • If you have grouping happening or your date range doesn't include both the order creation and the return, then you might have only one part of the order. This can result in negative numbers when you might be expecting zeros. If you remove the grouping or update the date range to include both the order creation and the return, then it groups them together. You might also want to add the column for Sale kind, as it displays which part of an order is in the row.

The Return reports display only products that were sold to a customer. If you created the order as a $0.00 USD order with no funds exchanged between your store and customer and the products were returned, then the Returns report won't display those products.

Retail sales by staff and Overview dashboard discrepancies

Within the Retail sales by staff report, the sales are by POS location for each POS staff member. In the Overview dashboard, the Retails sales by staff card has the totals combined for all locations for each staff member.

Order export from Total Sales discrepancies

The Sales report displays the total sales of the goods exchanged between your store and the customer, whereas the orders export refers to the current total of each of those orders. For example, if you refund a custom amount of $5 USD, but no products were refunded and restocked, then the refund doesn't display in your Sales report, but is included in your orders export. Test orders aren't included in Sales reports but they're included in your orders export.

Net Quantity and Gross Sales discrepancies

You might notice that the gross sales doesn't line up with the net quantity sold for a product. These values have the following different equations:

  • Gross sales - product price multiplied by the quantity. Canceled, pending, and unpaid orders are included.
  • Net quantity - number of sold items minus the number of returned items.

Ordered quantity and Gross sales discrepancies

Ordered quantity only includes products that were specifically ordered by the customer and doesn't include anything that was added to their order by editing the order. Gross sales includes the total recorded for the products added to the order.

Dimension-based discrepancies in custom reports

When you create a custom report with filters, you might notice different results when switching between dimensions such as Day and Hour for the same time period.

This occurs because filters apply to the dimension being used. For example, if you add a filter such as Line Item Discounts is $0, then the filter removes any time period that doesn't meet this condition:

  • When using the Day dimension, any day that contains orders with line item discounts is removed from the report.
  • When using the Hour dimension, any hour that contains orders with line item discounts is removed from the report.

Because days and hours contain different sets of orders, switching dimensions can result in different totals even for the same date range.

Options to resolve dimension-based discrepancies

  • Add an Order ID or Order name dimension to your report, which displays all individual orders and provides consistent results regardless of other dimensions.
  • Review whether your filter is necessary for your reporting goals, or if a different filter might better suit your needs.
  • If you're using ShopifyQL, then consider adjusting your query to use a WHERE condition instead of a HAVING condition, which applies the filter before grouping rather than after.