Skip to main content

How Shopshot calculates profit (the honest math)

The rules behind every number: Net Sales, tax handling, refunds vs returns, snapshotting, the shipping waterfall, and what we don't do.

Written by Amar Sujith

Every number in Shopshot follows one rule: it must trace to a real order, reconcile to Shopify exactly, and never show fabricated confidence. We chose the boring path on purpose. Shopify's figures are the source of truth, and the profit math is built on top of that foundation, so you can click any number and drill to the orders behind it.

[Screenshot placeholder] An order's Financial Breakdown showing the line from Total sales (reconciles to Shopify) down to Net profit

The order of operations

Shopshot builds profit in a fixed sequence, the same at the order level and the store level.

Step

Line

How it is built

1

Total Sales

Gross Sales minus Discounts minus Returns, plus Taxes Collected and Shipping Charged. Reconciles to Shopify.

2

Net Sales

Total Sales minus taxes minus shipping charged. Matches Shopify's Net Sales definition.

3

Gross Profit

Net Sales minus order-level costs: COGS, shipping cost, payment fees, fulfillment.

4

Contribution Margin

Gross Profit minus Marketing Costs (ad spend and acquisition cost).

5

Net Profit

Contribution Margin minus Operating Expenses.

Net Sales

Net Sales is Total Sales minus taxes minus shipping charged. Shopshot matches Shopify's own definition on purpose, so your store compares cleanly against benchmarks and against its own history.

Sales tax

Sales tax is stripped from the profit basis entirely. It is money you collect and pass on, not revenue you keep. Tax appears only where cash needs to reconcile against payouts. It never inflates or deflates profit.

Refunds vs returns

These are two different things and Shopshot keeps them separate. A refund is cash and reconciles to your Shopify payouts. A return is the sales portion of that refund only. A gross refund is shown as a parent figure with its components broken out, so cash movement and sales impact stay separate.

When returns are recognized

Returns are recognized on the processed date, when the refund clears, not on the original order date. This means a closed month never gets restated later.

Costs only reverse if the resource comes back

A cost reverses only when the underlying resource is physically recovered. Outbound shipping is sunk once a parcel is delivered, and a full refund does not zero out shipping you already paid. Acquisition cost is treated the same way: in the order waterfall it is marked as sunk, because ad spend does not return if an order is refunded.

COGS is snapshotted

Your COGS is captured when an order is ingested and stays attached to that order. Update a cost later and past orders keep the cost that was true when they happened. This prevents margin drift, where changing today's cost would silently rewrite last quarter's profit. See COGS.

One order, one resolved shipping cost

Each order gets exactly one shipping cost, chosen by a priority waterfall across your configured sources. The first available source wins. See Shipping Costs for the full order and what happens on partial coverage.

What we do not do

Shopshot does not use multi-touch attribution and does not guess at causality. Where a number cannot be known exactly, we say so rather than inventing a confident figure. No black boxes, no "trust us."

Common questions

Why is my Net Profit lower than my Shopify sales? Because sales are not profit. Shopshot subtracts the real costs Shopify's sales figure never included. See Understanding your Shopshot numbers vs Shopify.

Why didn't an old month change after I edited a cost? Because COGS is snapshotted at ingestion and returns are recognized when they clear, so closed months stay closed.

Does a refund give me back my shipping and ad spend? No. Outbound shipping is sunk once delivered, and acquisition cost is sunk once spent. A refund reverses the sale, not those costs.

Next step

Now see how this plays out against Shopify's own dashboard, so you can explain any difference with confidence. → Understanding your Shopshot numbers vs Shopify

Related

Did this answer your question?