Sign in

Blog · Board and management reporting

Ecommerce reporting: sales, returns and margin

Build an ecommerce reporting package from order, return and product-cost exports. Follow the spreadsheet formulas, compare product and channel results, and reconcile the totals before using them.

The short answerEcommerce reporting combines order, return and product-cost exports to explain sales and gross profit by product and channel. Keep order counts separate from line items, subtract discounts and merchandise refunds from gross sales, and match the remaining revenue with its product cost. Reconcile the product and channel summaries to the same company totals before sharing the report.

Ecommerce reporting turns order, return and cost exports into a reconciled view of net sales and gross profit by product and channel. Start with the sales bridge, then add costs; a count of orders cannot tell you how much revenue survived discounts and returns.

The useful package answers what sold, what was reversed and what margin remained. The ecommerce dashboard example covers the shorter operating view once these report totals are ready.

Define the reporting basis before combining files

Choose the reporting period, currency and included order statuses. Keep sales tax and customer shipping charges outside the merchandise example below. The company uses processed-date merchandise activity for September 2026, including refunds against older orders when processed during that month.

Distinguish physical returns from financial reversals. A customer can receive a goodwill refund without sending goods back; a canceled item can reverse revenue without ever being shipped. Shopify's sales-report documentation explicitly distinguishes physical returns from the broader sales-reversal category and explains that sales reports differ from payment reports.

Write your own report definitions beside the export labels. In this example, the refunds column contains only merchandise revenue reversals after the original discount. No other reversals occurred. A refund including tax must be split before entering that column.

Gather the rows and preserve their identifiers

Use the order-line export for order ID, line ID, product, channel, activity date, quantity, gross merchandise amount and allocated discounts. Use a refund export for the adjustment ID, original line ID, processing date and merchandise reversal. Obtain product costs and approved inventory cost recoveries from finance.

Match refund lines to original order lines before summarizing. Keep unmatched adjustments visible as exceptions. Allocate order-wide discounts across lines using a documented method, and ensure their allocated sum equals the original order discount.

The following illustrative US retailer has a deliberately small file with a different order on every row. Refunds and cost recoveries have already been matched to those lines. In a production export, several lines can share an order ID, so count distinct orders separately from product lines.

Order ID Channel Product Gross sales (USD) Discounts (USD) Merchandise refunds (USD) Sold cost (USD) Recovered cost (USD)
O101 Direct Mugs 1,000 100 180 500 100
O102 Direct Bags 2,000 100 190 1,000 100
O103 Marketplace Mugs 1,500 0 300 750 150
O104 Marketplace Bags 1,000 0 0 500 0
Total 5,500 200 670 2,750 350

Recovered cost means finance approved reversing that cost from expense. Do not assume every refunded item returned to saleable inventory. For the underlying accounting measure, see cost of goods sold.

Calculate the sales and margin columns

Paste the table into columns A:H, with headers in row 1. Add net sales in I, net product cost in J, gross profit in K and gross margin in L. Enter these formulas in row 2 and fill through row 5:

I2 = D2-E2-F2
J2 = G2-H2
K2 = I2-J2
L2 = IF(I2=0,"",K2/I2)

Format column L as a percentage. Display percentages to one decimal place; keep the underlying values unrounded.

Order ID Net sales (USD) Net product cost (USD) Gross profit (USD) Gross margin
O101 720 400 320 44.4%
O102 1,710 900 810 47.4%
O103 1,200 600 600 50.0%
O104 1,000 500 500 50.0%
Total 4,630 2,400 2,230 48.2%

The total margin is =SUM(K2:K5)/SUM(I2:I5). It is not the average of line percentages. Gross profit margin explains that denominator and the distinction between margin and markup.

Build product and channel views from the same detail

Put the channel label in N2. These Excel formulas return its net sales, net cost and gross profit:

=SUMIFS($I$2:$I$5,$B$2:$B$5,N2)
=SUMIFS($J$2:$J$5,$B$2:$B$5,N2)
=SUMIFS($K$2:$K$5,$B$2:$B$5,N2)

For a product summary, replace the criteria range $B$2:$B$5 with $C$2:$C$5 and use a product label. Microsoft documents SUMIFS for adding values that satisfy the specified conditions. Covirage is not affiliated with Microsoft or Shopify.

View Group Net sales (USD) Net cost (USD) Gross profit (USD)
Channel Direct 2,430 1,300 1,130
Channel Marketplace 2,200 1,100 1,100
Product Mugs 1,920 1,000 920
Product Bags 2,710 1,400 1,310

Each view independently totals $4,630 of sales, $2,400 of cost and $2,230 of gross profit. Never add the product view to the channel view: they describe the same transactions.

Prove the report before circulating it

The sales bridge must close: $5,500 less $200 less $670 equals $4,630. The cost bridge must also close: $2,750 less $350 equals $2,400. Finally, $4,630 less $2,400 equals $2,230 of gross profit.

Tie each input column back to its source export, then reconcile the approved sales and cost totals to finance's ledger. Explain timing or scope differences explicitly. A report can add correctly while still omitting an entire refund file.

Where it goes wrong

  • Duplicated joins. Several refunds matched to a single order total can repeat its revenue. Match at line level and check totals before and after combining.
  • Discounted refunds deducted twice. Reverse the actual net merchandise amount; do not subtract the original discount again.
  • Missing cost treated as zero. Flag affected sales and withhold their margin until costs are supplied.
  • Gross profit called contribution. Marketplace commissions, fulfillment and advertising may still sit outside this gross-profit view.

Run ecommerce reporting on your own file in Covirage

Bring a sample of your own order, refund and product-cost exports; Covirage maps the columns, and its tools compute and check the product and channel figures. The external AI model explains the result with every figure traced to its rows. Create a free Covirage account and set up your business.

See revenue driver analysis for the supporting business questions.

Questions people ask

What should an ecommerce report include?

Include distinct orders, gross merchandise sales, discounts, merchandise refunds, net sales, net product cost and gross profit. Show product and channel views, the reporting dates, the return treatment and any missing costs so readers can interpret the totals.

Are ecommerce sales the same as bank deposits?

No. An order report records sales activity, while a deposit reflects payment timing and settlement deductions. Fees, reserves, taxes and refunds can affect deposits. Reconcile settlement activity separately rather than treating a bank receipt as net merchandise sales.

Should returns appear in the original sale month?

Use the approved reporting policy. A period activity report records adjustments when processed; a cohort analysis follows returns back to the original orders. Label the basis clearly and preserve both dates rather than silently moving transactions between periods.