You can have a busy shop and still struggle to answer a fairly ordinary question: which part of it is worth growing?
The direct store looks healthy. The marketplace is shifting more orders. But one report is missing product costs, another deducts fulfilment before paying you, and the bank balance has just absorbed a stock delivery.
Start with two checks. First, establish whether the reports cover the sales and costs you think they cover. Then calculate what each channel leaves towards running the business, keeping stock purchases and cash movements alongside that result.
This approach is for a UK limited-company retailer holding stock and selling through a direct store and marketplaces. The example uses an accrual-based management view: sales and their related costs belong together, even when the money moves at different times.
Start with sales you can account for
Choose a reporting month and use the underlying sales, returns, discounts and charges for that period. A bank payout can combine several kinds of activity and cover different dates.
If those records still do not agree, reconcile the marketplace payouts first. If the remaining question is money held across month-end, our guide to settlement timing and reserves covers that check.
Once the records are explainable, you can ask a different question: what did those sales leave after the costs of making them?
Check what your profit report includes
Shopify's Gross profit by product report only includes variants with a product cost recorded at the time of sale. Missing cost information can therefore mean missing sales in the profit report, rather than a visible line saying that the cost is unknown. Shopify also describes its cost-per-item field as static. Do not assume today's product cost reconstructs every historical margin. Shopify's profit-report documentation.
The report name matters. Shopify's market and order profit reports include additional components, including shipping-related amounts. Check the specific report before deciding which costs to add; there is no safe blanket rule that every Shopify profit report excludes shipping. Shopify's report definitions.
For your own monthly check:
- Compare the sales covered by the profit report with the equivalent sales report, using the same dates, filters and sales definition.
- Investigate missing products or variants, and check that recorded costs are supported by purchasing records.
- Note whether fees, shipping, fulfilment and promotion are already included, partly included or held elsewhere.
A missing cost is an unresolved input. Treating it as zero makes the product look better without making it any cheaper.
There is another trap in the labels. Shopify's sales reversals include cancellations, order edits and refunds where no goods come back. Reversed quantity is not a warehouse count of returned stock. Check the order event and what physically happened before restoring stock or reversing its cost. A goodwill refund leaves the goods with the customer; a damaged return may come back without recovering its original value. Shopify's sales-report definitions.
Shopify's sales reports do not include chargebacks. Check the payment-provider records for dispute deductions, fees and any later reversals. Keep unsettled disputes distinct from final losses, and check that the same loss or fee has not already been counted elsewhere. Shopify's sales-versus-payments guidance.
Give “what the channel leaves” a clear definition
For this review, channel contribution means net product sales plus any customer delivery income, less product costs, channel charges, fulfilment and directly attributable promotion. Net product sales are after discounts and relevant sales reversals, including returns and refunds, and exclude VAT.
If you charge customers for delivery, include that income too, after delivery discounts and refunds and excluding VAT. Shopify reports shipping separately from net sales, so check whether your starting sales figure already includes it. Count the income once and show the cost of sending the order separately. Shopify's net-sales and shipping definitions.
This contribution measure tells you what is left towards running the business. It differs from the platform's gross-profit figure and the company's final profit.
Use the same definition across channels. If you include outbound postage for the direct store, include the equivalent delivery cost for marketplace orders. Keep shared warehouse, software and management costs visible separately unless you have a sensible, documented way to allocate them.
The following figures are fictional. They show one completed month's channel activity, with complete product-cost records, consistent returns treatment and no duplicate charges. All amounts exclude VAT; the example assumes any input VAT is recoverable. Customers are not charged separately for delivery in this example. Fulfilment here is outbound fulfilment, separate from the recorded product costs.
Scroll across the table to read every column.
| Monthly measure | Direct store | Marketplace | Combined |
|---|---|---|---|
| Net product sales | £8,000 | £8,000 | £16,000 |
| Cost of goods sold | £3,000 | £3,000 | £6,000 |
| Channel and payment charges | £800 | £1,200 | £2,000 |
| Outbound fulfilment | £400 | £600 | £1,000 |
| Attributable promotion | £300 | £300 | £600 |
| Contribution before shared costs and tax | £3,500 | £2,900 | £6,400 |
For the direct store, the calculation is £8,000 − £3,000 − £800 − £400 − £300 = £3,500.
The marketplace brings in the same net product sales but leaves £600 less under this definition. That gives you something specific to investigate: its channel charges and fulfilment cost. It does not, by itself, tell you to close the channel. You also need to consider capacity, customer demand and which costs would actually disappear if those sales stopped.
The £6,400 combined contribution still has to cover the shared costs excluded from this table. It is not money available to take out of the company.
Check the unit behind the cost, too. If one channel sells singles and another sells three-packs, one listing sold does not mean one stock unit used. Keep a mapping from the selling code to the physical item and quantity. In a hypothetical three-pack of items costing £4 each, the product cost starts at £12, before any additional pack-specific costs. Shopify likewise calculates bundle availability from component quantities, so bundle listings and their components are not separate piles of stock to add together. Shopify's bundle inventory guidance.
Count each cost once
A marketplace fulfilment charge might appear in both a settlement report and a supplier invoice. Those are two records of a charge, not automatically two different costs.
Choose which record supplies the cost to your channel report, then use the other to check it. Likewise, if a stock cost already includes inbound freight, do not add the same freight again as a separate channel expense. For businesses using FRS 102, inventory cost includes relevant costs of bringing goods to their present location and condition. FRS 102, paragraphs 13.5–13.6.
Shared advertising needs judgement too. A campaign promoting the whole brand may not belong neatly to one sales channel. Show it as shared or unallocated until you have a defensible method. A report with an honest unresolved line is more useful than a very precise guess.
The stock payment needs its own explanation
Now take the direct-store figures on their own. Assume it has a separate pool of stock with an opening recorded value of £4,000. During the month, it receives and pays for another £6,000 of stock. The goods sold have a recorded cost of £3,000, with no returns to stock, losses, write-downs or other inventory movements.
Scroll across the table to read every column.
| Stock movement at recorded cost | Amount |
|---|---|
| Opening stock | £4,000 |
| Stock received during the month | £6,000 |
| Cost of goods sold | −£3,000 |
| Closing stock | £7,000 |
| Increase in stock held | £3,000 |
Under this assumed inventory model, the £3,000 cost of the goods sold belongs in the month's trading result. The additional £3,000 is still held in stock. FRS 102 similarly links the expense for inventory sold to the period of the related revenue; damaged or unsaleable stock can require a separate valuation adjustment. FRS 102, paragraphs 13.19–13.20.
Do not deduct the £6,000 purchase payment from the £3,500 contribution as though none of its cost has been counted. The contribution already includes £3,000 of cost of goods sold.
To isolate the stock effect, assume all the direct store's sales are collected and its other listed costs are paid in the month, with no changes in other amounts owed or held. Ignoring VAT cash movements, shared costs, tax and financing, the movement from these activities is:
£3,500 contribution − £3,000 stock increase = £500.
The direct calculation agrees: £8,000 receipts − £6,000 stock purchases − £800 charges − £400 fulfilment − £300 promotion = £500.
Your actual bank movement needs those excluded items and timing differences added back into the picture. The useful lesson is narrower: buying ahead can absorb cash while the goods sold still make a positive contribution.
Finish with a decision you can make
Keep the review to the questions that change what you do next. Which costs are missing? Which charge appeared twice? Which channel needs a price or fulfilment review? Which stock order can wait until slower lines sell?
Give each unresolved item a person and a date. Next month, use the same definitions and check whether the action changed the result.
In Good Order can help maintain the underlying ecommerce records and reconciliations and agree management reporting around the questions you need answered. Stock reconstruction, forecasting and specialist tax work need their own agreed scope.
Our published ecommerce reconstruction case study gives a separate example of the records work behind reliable reporting.
If you are still assembling this picture yourself every month, let's talk about the work you would like to hand over. The initial conversation is free; any investigation or ongoing support is agreed separately.