Back to Blog

Sales and Profit Reports Don't Match? Start With the Missing Costs

One report says sales are healthy. Another shows a smaller sales total and a reassuring margin. Before deciding which to trust, check which orders and costs each report actually includes.

Adegoke Abisola2026-10-068 min read
GuidesOperationsInventoryAnalytics
Quick read

When sales and profit reports disagree, first compare their definitions, included orders, item-cost coverage, dates and filters. Missing cost is unknown, not zero. A margin calculated from only part of your sales cannot safely describe the whole business. Start with ten sales lines, label the gaps, and separate a product gross-margin view from contribution margin and net profit before acting.

Key takeaways

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:

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:

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.

FAQ

Why are net sales different in my sales and profit reports?

Check which orders each report includes. Some product-profit reports omit sales without recorded item costs. Filters, reporting dates and returns can also change the totals. Match the underlying sales lines before assuming the calculation is wrong.

Should a missing product cost be entered as zero?

No. Zero is a claim that the applicable cost really was zero. Keep unknown costs marked as missing until you can verify them, and label any report that excludes those lines as partial.

Will adding a cost today fix an old profit report?

Not necessarily. Check whether your software stores the cost at sale, uses today's product cost or supports dated corrections. Verify one historical order before assuming older reports have been repaired.

Is gross profit the same as money available to take out of the business?

No. A product gross-profit view does not by itself account for all operating expenses, tax, stock purchases or cash timing. Define the report and reconcile it with your accounting records before drawing that conclusion.

What should I ask an AI reporting assistant?

Ask which orders and cost fields were included, what was missing, which date basis was used, and whether the result covers all sales. Ask to see the underlying rows rather than relying on the summary alone.