You open the sales report on Monday morning. Trading looks healthy.
Then you open the profit report. Its sales total is smaller, but the margin looks encouraging. You change the dates, download both files and start checking products one by one. Before long, the report that was supposed to help you decide what to buy has become another job.
If your sales and profit reports don't match, start with a simple question: are they describing the same sales?
A report can do the arithmetic correctly and still leave out the rows that matter to your decision. Missing item costs, different refund dates and inconsistent filters can each change what you are looking at. Buying another dashboard before checking those foundations may just give you a third number to reconcile.
The spreadsheet work behind a tidy dashboard
In a merchant discussion about reporting workflows, a store operator described spending Monday mornings "pulling raw CSVs, matching ad spend, and updating pivot tables" to get figures they trusted. Their questions went beyond what sold: they wanted to understand costs, returns and the money left from an order.
That is one operator's account, not a measure of how every retailer works. It does capture a recognisable problem. A sales screen answers one question. A decision about margin may need information held somewhere else.
A separate Shopify Community question about missing cost of goods sold describes another version: costs visible on product records, but missing for some sales in reporting. The discussion alone cannot establish the cause. It is a reason to inspect the affected orders, not to declare the whole platform unreliable.
Here are five checks I would make before changing prices, cancelling a reorder or moving to a new reporting tool.
1. Name the profit you want to measure
Write the question above the report before choosing its columns.
"Which products leave the most after their product cost?" is different from "Which orders leave the most after delivery and payment fees?" Both are different from "Did the business make a profit this month?"
For a straightforward product gross-profit view, start with net product sales less the corresponding cost of goods sold. State how you treat discounts and returns. Do not quietly include shipping income in one view and exclude it from another.
For contribution margin, list the additional variable costs you intend to deduct, such as payment fees, fulfilment and attributable advertising. Keep the same definition from one period to the next. A product gross-margin report is not a complete business profit-and-loss account, and neither is simply the amount paid into the bank.
That distinction prevents an expensive misunderstanding: a product can look attractive before delivery costs and much less attractive after them.
If the specific mismatch is between card takings and the bank deposit, use the separate retail payment-reconciliation guide. That is a settlement question, not the same problem as incomplete product costs.
2. Check which sales have a usable cost
Make an exception list for sales lines with no verified cost. Keep a genuinely zero-cost item separate from an item whose cost is unknown.
Shopify's profit-report documentation explains that its product and variant gross-profit reports depend on costs recorded when items are sold. Missing costs can therefore change which sales appear in those reports. This is a report-specific definition, not a claim that every Shopify profitability report works identically.
For your own report, find out what happens to an incomplete line. Is it excluded, left blank, flagged or treated as zero? Those behaviours can produce very different answers.
Worked example: the missing GBP300
This is an illustrative calculation, not an EzyCarto customer result or a software screenshot. Assume ten sales lines with GBP1,000 of net product sales. Tax, shipping and other operating expenses are outside this example.
Seven lines have verified product costs. Together they contain GBP700 of sales and GBP420 of costs. Their gross profit is GBP280 and their gross margin is 40%.
The other three lines contain GBP300 of sales, but their costs are missing.
At this point, 40% describes the seven cost-covered lines. It does not establish the margin on all ten. Your report covers 70% of net sales by value, but that coverage percentage is not a confidence rating for the whole business.
Now suppose you verify that the three missing lines cost GBP240. The complete product calculation becomes:
- Net product sales: GBP1,000.
- Product costs: GBP420 + GBP240 = GBP660.
- Gross profit: GBP1,000 - GBP660 = GBP340.
- Gross margin: GBP340 / GBP1,000 = 34%.
If you had silently treated the missing costs as zero, the same sales would appear to produce GBP580 of gross profit and a 58% margin. No extra money was earned. The missing costs changed the apparent result.
Before using an attractive margin to justify a large reorder, make the excluded sales visible.
3. Match the dates and the orders
Two reports can both say "last week" without answering the same question.
Did the report select orders by sale date, fulfilment date, payment date or refund date? A return processed this week might relate to an order sold last month. One view can reasonably show this week's activity while another groups the return with the original order. Trouble starts when the team compares them as if their definitions were identical.
Shopify's sales-discrepancy guidance describes differences involving dates, returns, filters and exports. Check the relevant definition instead of assuming that two screens with similar labels must reconcile directly.
Choose one date basis for the question you are answering, then match order and line identifiers. Record the timezone too. A late-evening transaction can fall on a different reporting day if two tools use different timezones.
Keep this simple at first: trace ten sales lines and one return through both reports. You will learn more from an explained mismatch than from repeatedly exporting the whole month.
4. Compare the filters and cost history
Check that both views include the same shops, channels, products, currencies and order statuses. Look for cancelled or test orders, partial refunds, duplicate exports and rows excluded by a product filter.
Then check what "product cost" means over time. Does the report use a cost captured at sale, today's product record or a dated cost history? If a supplier's price changed, those approaches may produce different historic margins.
Do not overwrite old costs merely to make a dashboard agree with a current product page. Verify the reporting behaviour and preserve the evidence behind any correction. If you need an accounting adjustment, reconcile it with whoever maintains your accounts.
Good supplier and receiving records help you trace where a cost came from. They do not remove the need to decide which cost belongs to a particular sale.
5. Turn the check into a repeatable routine
You do not need a new data warehouse to begin. A short worksheet is enough to expose the first gaps.
For each of your ten selected sales lines, record:
- Order and line identifier, product and location.
- Sale date and the date basis used by the report.
- Net product sales, including the treatment of discounts and returns.
- Product cost, its source and whether it is verified, estimated or missing.
- Any further costs required by your chosen margin definition.
- Whether the line appears in both reports and, if not, why.
Resolve the missing records before adding more charts. Give one person responsibility for the exception list and set a review point that fits how quickly your costs arrive.
If you must act before all costs are available, label the result as partial or estimated. Show what is excluded. Do not let the cleanest-looking number become the default simply because it is available first.
Once the report is usable, the next question is what to do with the stock. Our reorder, hold or discount guide helps connect that evidence to a buying decision.
What this means for AI-assisted reporting
An AI assistant can make it easier to ask a question. It still needs enough information to answer it.
Instead of only asking, "What was our margin last week?", add: "Which sales and cost fields did you include, what is missing, and can I inspect those rows?"
If the answer leaves out delivery costs, it should say so. If some item costs are estimates, those should remain visible. A fluent explanation cannot establish a supplier cost that has never been recorded.
That is a useful standard for any reporting system: the person making the decision should be able to see both the calculation and its limits.
Where EzyCarto fits
EzyCarto connects retail operations across checkout, inventory, supplier workflows and customer relationships. Its Analytics offering includes custom reports, datasets, exports and natural-language analysis.
For a retailer evaluating it, the useful demonstration is a specific question using representative records: which sales are covered, where did their costs come from, and what still needs checking?
Do not assume that a connected dashboard automatically supplies historical costs or every external expense. Verify the fields, reporting behaviour and integrations your decision requires.
Bring ten representative sales lines and your current report definitions to an EzyCarto demo enquiry. Ask which parts of the reporting check can run in the platform and which still need an external record. That is a more useful starting point than another dashboard tour.
