Shopify reconciliation, explained

Shopify orders export: what each column proves

Short answer

Most columns in the Shopify orders export cannot prove a sales figure. Eleven of them carry the net sales lane; the rest are identity, segmentation, or money that belongs to someone else -- tax collected for an authority, shipping charged to a customer.

The single most misread structural fact: Shopify puts additional line items on separate rows and leaves many fields blank on them. A blank is not a zero. Summing a column without grouping by order first is the most common way a reconciliation goes wrong before it starts.

The structural fact that breaks most spreadsheets

Shopify states it directly: "orders with multiple line items display their additional line items on separate lines", and "many of the fields are left blank to indicate that multiple items were purchased on the same order".

What this means in practice: a three-item order is three rows. The order-level columns -- subtotal, discount, refund, status, currency, date -- appear on the first row only. Sum the subtotal column naively and you get the right answer. Sum it after filling blanks with zero, or after sorting the file, and you do not.

Shopify Help Center: Exporting orders

Section 1: the reconciliation-relevant columns

Net sales means the column feeds the reconciled sales figure. Neither means it is useful for something -- joining costs, segmenting channels -- but cannot prove a revenue number on its own.

ColumnLaneWhat it proves
NameNet salesThe order identifier. Rows are grouped by it; a blank value on a continuation row belongs to the order above.
Financial StatusNet salesDecides whether an order counts. Paid, refunded and partially refunded are in; voided and pending are excluded and named.
SubtotalNet salesThe order's post-discount total. It is the source anchor the reconciliation ties back to.
Lineitem quantityNet salesQuantity for the line. Multiplied by the line price to build gross.
Lineitem priceNet salesThe gross unit price -- always gross, never net of a line discount.
Discount AmountNet salesOrder-level discount, subtracted once. Line-level discount is already aggregated into it.
Refunded AmountNet salesSubtracted from gross to reach net sales for the order.
CurrencyNet salesThe order currency. A file mixing currencies cannot be summed, and that is a hard stop rather than a warning.
Created atNet salesThe order date -- what a period filter should be applied to.
Cancelled atNet salesMarks a cancelled order. Cancelled and fully refunded is a correct-and-final exclusion.
TagsNet salesA tag containing "test" marks a test order, which is excluded from revenue.
Lineitem skuNeitherIdentifies the product. Needed to join a cost file; proves nothing about revenue on its own.
Lineitem nameNeitherThe product title. Used with the shipping flag to identify gift-card lines.
Lineitem requires shippingNeitherFalse marks a non-physical line. Combined with a gift-card title it marks deferred revenue, which is excluded.
TaxesNeitherCollected on behalf of a tax authority. Not revenue, and not part of net sales.
ShippingNeitherCharged to the customer. Whether it is revenue is an accounting-policy question, so it is kept out of the net sales lane.
TotalNeitherWhat the customer was charged, including tax and shipping. The furthest figure from a revenue number.
EmailNeitherCustomer identity. Hashed into a customer key for cohort work; never needed for a sales figure.
SourceNeitherThe channel the order came through. Useful for segmentation, irrelevant to whether the total ties.
Discount CodeNeitherWhich code was used. Segmentation, not arithmetic -- the amount is what moves net sales.

The required five

These are structurally required -- a file missing any one of them cannot be reconciled at all, and the honest response is to stop rather than to estimate around it:

That list is imported directly from the parser this site runs on, so it cannot drift from what the product actually demands of your file.

Section 2: the full export reference

The columns below are the complete header row from a real Shopify orders export -- all 79 of them, in file order. Most are addressing, fulfilment and payment metadata that a sales reconciliation never touches; they are listed so you can tell at a glance which of your columns are simply not part of the calculation.

Name | Email | Financial Status | Paid at | Fulfillment Status | Fulfilled at | Accepts Marketing | Currency | Subtotal | Shipping | Taxes | Total | Discount Code | Discount Amount | Shipping Method | Created at | Lineitem quantity | Lineitem name | Lineitem price | Lineitem compare at price | Lineitem sku | Lineitem requires shipping | Lineitem taxable | Lineitem fulfillment status | Billing Name | Billing Street | Billing Address1 | Billing Address2 | Billing Company | Billing City | Billing Zip | Billing Province | Billing Country | Billing Phone | Shipping Name | Shipping Street | Shipping Address1 | Shipping Address2 | Shipping Company | Shipping City | Shipping Zip | Shipping Province | Shipping Country | Shipping Phone | Notes | Note Attributes | Cancelled at | Payment Method | Payment Reference | Refunded Amount | Vendor | Outstanding Balance | Employee | Location | Device ID | Id | Tags | Risk Level | Source | Lineitem discount | Tax 1 Name | Tax 1 Value | Tax 2 Name | Tax 2 Value | Tax 3 Name | Tax 3 Value | Tax 4 Name | Tax 4 Value | Tax 5 Name | Tax 5 Value | Phone | Receipt Number | Duties | Billing Province Name | Shipping Province Name | Payment ID | Payment Terms Name | Next Payment Due At | Payment References

Taken from a real Shopify orders export held in our test fixtures (fixtures/d2c/shopify-orders-real-dev.csv). Shopify adds and renames export columns over time, and the exact set varies by store configuration, installed apps and locale -- treat this as one real file, not a specification. Your export may have more columns, fewer, or differently named ones.

The arithmetic

Gross for a line is quantity times price. Gross for an order is the sum of its lines. Net sales for an order is gross minus the order-level discount minus the refunded amount -- which is the same thing as subtotal minus refunds, because Shopify's subtotal is already post-discount.

Then orders are included or excluded by status, and every exclusion is named. Which orders drop out, and why, is covered in the export-versus-dashboard guide.

Common questions

What columns does the orders export need?

To reconcile Net Sales, your Shopify Orders export must include these columns: Name, Financial Status, Subtotal, Lineitem quantity, Lineitem price. Export them from your Shopify admin under Orders > Export (as CSV), then upload the file on the Sources tab.

Why are so many cells blank in my export?

Shopify's documentation states that orders with multiple line items display their additional line items on separate lines, with many of the fields left blank to indicate that multiple items were purchased on the same order. The order-level values live on the first row of the order and must be carried forward, never treated as zero.

Is Lineitem price before or after discount?

It is gross. A line-level discount is also aggregated into the order-level discount amount, so subtracting both double-counts. Subtract the discount once, at the order level.

Do taxes and shipping belong in net sales?

Taxes are collected on behalf of a tax authority and are not revenue. Whether shipping charged to a customer is revenue is an accounting-policy question, so we keep it out of the net sales lane rather than deciding it for you.

What this does not tell you

Shopify's export format varies by store configuration, app installs and locale. Treat the column list here as the common case, not a guarantee about your file.

The lane assignments describe what a sales reconciliation can use a column for. They are not accounting advice -- whether shipping revenue is revenue in your books is your accountant's call.

Related
Your Shopify export doesn't match your dashboardYour Shopify payout doesn't match your salesHow to make a Shopify number defensibleAll 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.