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.

A
Written by Amar Sujith

Shopshot follows one principle everywhere: every number must trace to a real order, reconcile to Shopify exactly, and never show fabricated confidence. We chose the boring path. Shopify's numbers are the source of truth, and the profit math is built on top of that foundation. Click any number and you can drill to the orders behind it.

Net Sales

Net Sales is Total Sales minus taxes minus shipping charged. This matches Shopify's own definition (gross minus discounts minus returns, excluding shipping and tax), 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

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 Orders, 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.

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 the Shipping Costs article 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."

Did this answer your question?