Fix guide
How to export Shopify orders to CSV for reconciliation
Whether you're reconciling by hand, handing files to a bookkeeper, or feeding a tool, the starting point is the same: a clean CSV of what Shopify actually recorded. Shopify's export is good, but a reconciliation-grade export has a few requirements the default clicks don't cover - the right status filters, the full date range plus buffer, and awareness of how multi-line orders come out.
This guide is the complete export procedure. It works with nothing but your Shopify admin - no apps, no purchases. At the end, you'll have the Shopify side of a reconciliation ready to diff against QuickBooks (we have a matching guide for the QBO export, and a guide to running the comparison itself).
The symptoms
- You need to verify QuickBooks against Shopify and don't trust the sync's own reporting
- Your bookkeeper asked for 'the Shopify side' and you're not sure which export they mean
- A reconciliation keeps failing and you want ground truth in a spreadsheet you control
- You're preparing for a tax filing and want an independent check before numbers harden
Why it happens
Why the default export isn't quite enough
Shopify's order export produces one row per line item, not per order - an order with three products spans three rows, and naive totals double-count. Financial status, refunds, and test orders all need deliberate handling. Knowing these quirks up front saves the hour most people lose to them.
Why you want refunds and payouts too
Orders alone can't explain your bank deposits. Refunds reduce what you were paid, and payouts batch orders minus fees minus refunds. A reconciliation-grade picture is three exports - orders, refunds (inside the order export or via reports), and payouts - not one.
How to check and fix it by hand
- 01
Export orders with the right filters
Shopify admin → Orders. Set the date range to your reconciliation period plus about five business days on each side (orders settle late; refunds reference older orders). Filter to paid/partially-refunded/refunded - leave out unpaid and cancelled-before-payment. Click Export, choose 'Orders by date range' and CSV. For reconciliation you generally want all orders, including any placed through draft orders or POS if those flow to your books.
- 02
Understand the row structure before summing
In the exported file, one order spans one row per line item: order-level fields (Total, Taxes, Financial Status) are populated on the first row of each order and blank on continuation rows. To get order-level data, filter to rows where Total is non-empty, or de-duplicate on the Name column (the #1001-style order number). Sum Total only across those rows.
- 03
Export the payout and refund side
Shopify admin → Finance (or Analytics) → Payouts: export the payout list for the period, and open individual payouts for their transaction-level export (order-by-order gross, fee, and net). For refunds, either use the refunded amounts in the order export or pull the finance summary/reports for the period - you want refund date and amount tied to the original order number, since refunds often land in a later period than their order.
- 04
Sanity-check the file before using it
Three checks: the de-duplicated order count matches what the admin shows for the same filters; the summed totals match Shopify's sales report for the period; and the earliest/latest dates cover your buffer. A CSV that passes these is ground truth you can reconcile against - by hand with our manual reconciliation guide, or by uploading it to LedgerClear's free scan, which diffs it against your QuickBooks export in about a minute, read-only.
Common questions
- Which Shopify export do I use for reconciliation?
- The Orders CSV export (by date range, paid and refunded statuses) for the order side, plus the payout exports under Finance for fees and deposits. One row per line item is the main trap - de-duplicate on the order Name column before counting or summing.
- Why do my CSV totals not match Shopify's sales report?
- Usually double-counted line-item rows, a status filter mismatch (e.g. including unpaid orders), or timezone edges - the export uses your store timezone, so orders near midnight can land on either side of a date boundary. Fix the row de-duplication first; it's the cause in most cases.
- Can I skip the export and connect directly?
- LedgerClear's scan accepts CSV uploads precisely so you can run a full line-by-line diff without connecting anything. If you'd rather not export by hand, a read-only connection does the same job - but the CSV path means you can verify us against files you control.
LedgerClear doesn’t replace your sync. It audits per-order syncs today - the official connector and Synder. Summary-posting tools like A2X and Link My Books: auditing support is coming later, and LedgerClear runs alongside them without touching their entries. If the right answer for you is switching tools, the scan report is the damage report to migrate with.