Shopify reconciliation, explained

How to make a Shopify number defensible

Short answer

A number is defensible when someone else can check it. That takes three things: it ties to a named source, every exclusion is listed with a reason, and anything the data cannot prove is shown as a gap rather than estimated.

We call that reconciled-or-gated. It is a method, not a product -- you can apply it in a spreadsheet this afternoon.

The three tests

1. Does it tie?

Take the source total straight from the file. Take your mapped total -- the figure you built. The difference between them is the residual, and it is either zero or it has a name. A residual you cannot explain is not a rounding difference; it is the part of the number that is not yet true.

2. Is every exclusion named?

Excluding records is normal and often correct. Excluding them silently is what makes a figure indefensible. Each excluded order should appear with a reason -- test, voided, pending, gift card, cancelled -- and the reasons should not all read as benign.

Not all exclusions are equal. A test order is correct and final. A pending order is unsettled -- its money has not finalised, so its contribution can still change. Collapsing those two into "excluded" hides the one that might come back.

An unrecognised reason should never default to benign. If you cannot classify why something dropped out, that is the item to look at first.

3. Is what you cannot prove shown as a gap?

Your Orders export can prove net sales. It cannot prove gross margin, because it contains no product costs, and it cannot prove contribution margin, because it contains no fees or logistics. The honest output names the missing source instead of estimating around it.

This is the part that takes discipline. An estimate labelled as an estimate still gets quoted as a fact three slides later; a named gap gets closed, because it tells someone exactly what file to go find.

Applying it to a Shopify export

  1. Group by order first. Additional line items are separate rows with blank order-level fields. A blank is not a zero. See what each column proves.
  2. State your inclusion rule. Which financial statuses count, and which do not.
  3. List the exclusions. Order by order, with a reason each. Count them and total their value -- if the excluded value is large, that is a finding, not a footnote.
  4. Tie the remainder. Included net sales against the source subtotal, less refunds.
  5. Name what is missing. No cost file means no gross margin. Say so.

What a defensible statement sounds like

"Net sales of 128,400 for orders created in August, from the Shopify Orders export, including paid, refunded and partially refunded orders. Nine orders excluded: six test, two pending, one gift card, together 2,140. Gross margin not stated -- no product cost file."

Every clause in that sentence is checkable by someone with the same file. That is the entire standard. The figures above are illustrative -- the point is the shape of the claim, not the amounts.

Where we apply it

The product is built on this rule rather than merely describing it: figures that tie are shown as reconciled, layers without their source are gated instead of estimated, and every exclusion is listed with its reason. Our methodology page states what each source can prove and limitations states what it cannot -- including the things we refuse to compute.

Common questions

What makes a sales number defensible?

Three properties: it ties back to a named source file with a residual of zero or an explained difference; every excluded record is listed individually with a reason; and any layer the data cannot support is shown as a gap rather than filled with an estimate.

What is reconciled-or-gated?

A rule: either a figure is tied to its source with its exclusions named, or it is not shown as a figure at all. The alternative -- showing a plausible number with an unstated margin of error -- is what makes a report impossible to defend when questioned.

Can I do this without software?

Yes. Group the export by order, apply your inclusion rule, list what you excluded and why, and check that the included total ties to the source subtotal. The method is the point; the tooling only saves time and stops you skipping the exclusion list.

What does gating look like in practice?

It means a margin layer with no cost file attached is labelled as needing a cost file, not shown as a margin percentage with an asterisk. A named gap is actionable. An estimate presented as a measurement is not.

What this does not tell you

Reconciled-or-gated makes a figure checkable. It does not make it correct for your books -- revenue recognition, shipping treatment and tax are accounting decisions your accountant owns.

A reconciliation proves a number ties to the file it came from. If the file itself is wrong or incomplete, a clean tie-out will not tell you so, and no method claims otherwise.

Related
Your Shopify export doesn't match your dashboardYour Shopify payout doesn't match your salesAll Shopify reconciliation guides
Run your own file -- no signup, no account.

Upload your Shopify Orders export and see which figures reconcile to it, which are excluded and why, and which layers your data cannot prove yet. Your first report is free.

Reconcile my Orders export

CSV uploads are parsed in your browser. Shopify orders you sync are stored on our servers.

Sources last checked 2026-08-04.