Mathproven

Sales by product

Open an orders export that has one row per item sold and choose the columns for item total, item name, SKU, quantity, order id, and order date. The tool groups the rows by product, adds up each product's rows, orders, units, sales, reversals, and net, works out its share of total net, and proves every figure from the rows. Rows that name no product are listed, never dropped. It groups, adds, and checks. It does not say what any figure means for a business.

The file is read in your browser and stays on this device. Nothing is uploaded, and the tool never signs in to a store.

Total net salesBlue mugRed bowlTea towelNo product namedProducts add back up to every row used
An orders export, grouped by product and added back up.
1. Orders export

Or paste the rows, with the header row first:

The rows are read in this browser and are not uploaded. In a workbook that has a sheet named Orders, that sheet is opened; otherwise the first sheet that holds anything.

This report groups the rows of the export, adds them up, and checks the arithmetic. It does not say what any figure means for a business.

This tool is independent. It is not affiliated with, endorsed by, or sponsored by Etsy, Shopify, Amazon, eBay, or any other marketplace. Marketplace names are used only to describe the exports people bring to it.

What gets checked

Your numbersThe mathThe checksVerifiedNot verified
A result that fails a check is marked not verified. It is never shown as correct.

How it works

  1. Open the export. Drop the .csv or .xlsx orders export, or paste its rows with the header row first. It is read in the browser. In a workbook that has a sheet named Orders, that sheet is opened.
  2. Check the columns. Item total, item name, SKU, quantity, order id, and order date are matched from the header words. Layouts differ between platforms and change over time, so every choice can be changed. The item total is needed, and at least one of item name and SKU. With no quantity column every row counts as 1 unit, and with no order id column the orders column is blank.
  3. Group and add. Each row goes to the product its SKU names, or the product its item name names when it has no SKU. Rows with a positive item total add to sales, rows with a negative item total add to reversals, and the two together are net. Share of net is a product's net against the total of all rows used.
  4. Compare, review, and download. A total from your own records can be typed to compare, and a date range can limit the rows used. Rows with no product named, rows left out, and rows that could not be read are each listed. Download Excel or CSV with the certificate, or print.

Worked example

A made-up export of ten rows: nine item rows and the file's own total line. Blue mug is written with and without capitals, Tea towel has no SKU, one row has an item total and neither an item nor a SKU, and one row is a reversal of a Blue mug sale.

OrderDateItemSKUQtyLine total
A-10012026-09-02Blue mugBM-01248.00
A-10012026-09-02Red bowlRB-02132.50
A-10022026-09-05Tea towel327.00
A-10032026-09-09blue mugbm-01124.00
A-10042026-09-12TEA TOWEL19.00
A-10052026-09-1514.00
A-10032026-09-18Blue mugBM-01-1-24.00
A-10062026-09-21Red bowlRB-02265.00
A-10072026-09-27Blue mugBM-01496.00
Total14281.50

Nine rows are used and the total line is listed as left out. Blue mug (BM-01): 4 rows, 3 orders, 6 units, sales $168.00, reversals -$24.00, net $144.00, which is 51.15% of net. Red bowl (RB-02): 2 rows, 2 orders, 3 units, sales $97.50, reversals $0.00, net $97.50, 34.64%. Tea towel: 2 rows, 2 orders, 4 units, sales $36.00, reversals $0.00, net $36.00, 12.79%. No product named: 1 row, 1 order, 1 unit, sales $4.00, net $4.00, 1.42%. Total: 9 rows, 7 orders, 14 units, sales $305.50, reversals -$24.00, net $281.50, the same as the file's own total line. Order A-1001 holds a Blue mug and a Red bowl, so it is counted under both products and once in the total.

The example uses made-up names and numbers.

Questions

What happens to a row with no item name and no SKU?

It is never dropped. A row with an item total and neither a SKU nor an item name is listed under No product named with its row number, and it is counted in the total. The certificate carries a warning with the count and the amount.

How does it decide which rows are the same product?

By the SKU when the row has one, otherwise by the item name. Both are compared with capitals and extra spaces ignored, so Blue mug and BLUE MUG are one product, and the first spelling in the file is the one shown. Two different SKUs are two products even when the item name is the same, and a row with a SKU is never grouped with a row that has only an item name.

How are returned and cancelled sales counted?

A row with a negative item total is a reversal. Reversals are added up on their own for each product, and net is sales plus reversals. A product whose net is below zero gets a warning on the certificate. The tool does not say what that means.

Why does the orders column not add up to the total?

An order with items from two products is counted once under each product and once in the total. The orders figure for a product is the number of different order ids on its rows. With no order id column chosen, the orders column is left blank.

Do the percentages add up to exactly 100?

Not always. Each product's percent of total net is rounded to two decimals on its own, half away from zero, so the column can add up to a hundredth or two more or less than 100.00. The percent is left blank when total net is zero or less, because there is no total to measure against.

What does the date range do?

With a from date, a to date, or both, only rows dated inside the range are used, both ends included. Rows dated outside it are listed as left out, with the count. A row whose order date is blank or cannot be read is listed as a row that could not be read and the result is marked not verified, because the tool cannot tell which side of the range the row is on.

Which rows are taken as the file's own total line?

A row with no SKU is taken as the file's own total line when its order id starts with the word Total, when its item name is only a total word (Total, Totals, Subtotal, Grand total), or when it has no order id and its item name, or any cell if it has no item name, starts with the word Total. A row with a SKU is never taken as one. These rows are listed as left out with their row numbers and counted by a warning, so an item that was taken for a total line can be seen.

Which rows are listed as rows that could not be read?

A row whose item total is not an amount. When a quantity column is chosen, a row whose quantity is blank or not a whole number. When a date range is typed, a row whose order date is blank or cannot be read. Each is listed with its row number and the reason, it is kept out of every figure, and the result is marked not verified.

Does it tell me which products to keep, drop, or reprice?

No. It groups the rows, adds them up, and checks the arithmetic. It makes no statement about what a figure means for a business or what to do about it.

Which exports can it group by product?

Any .csv or .xlsx with a header row, a column for the item total, and a column for the item name or the SKU. No platform's layout is assumed: header words are matched, the choices are shown, and each one can be changed. An export with one row per order and no item columns cannot be grouped by product.

Is the sales by product report connected to a store or marketplace?

No. It is independent and is not affiliated with, endorsed by, or sponsored by Shopify, Etsy, Amazon, eBay, or any other platform. It never signs in to a store; it only reads the file you open, in your browser.

This tool calculates and checks numbers. It is not legal, tax, or medical advice.