Refund and Order Reports Across 5+ Shopify Stores

How to pull refund and order data across five or more Shopify stores: per-store reports, Plus organization analytics, CSV exports and custom apps compared.

In this guide
  1. Why cross-store reporting is hard
  2. Option 1: Shopify’s own reports, store by store
  3. Option 2: Shopify Plus organization analytics
  4. Option 3: CSV exports into one spreadsheet
  5. Option 4: A custom app or script that reads every store
  6. Option 5: An app that brings stores into one view
  7. Comparison
  8. Pitfalls that make store totals disagree
  9. A routine before BFCM 2026
  10. Where StoreFleet fits
  11. FAQ

The short answer: Shopify reports on one store at a time unless your stores belong to a Shopify Plus organization, which gets analytics across all of its stores from Shopify itself. If you are not on Plus, your options are to combine each store’s reports or CSV exports by hand, build or buy something that reads every store through Shopify’s API, or use an app that brings several stores into one view. Each has a cost in time, upkeep or money.

Once you run five or more stores, the question “how much did we refund last month, across everything?” gets surprisingly hard to answer. This guide lays out the options, what each one is good for, and the pitfalls that make numbers from different stores disagree.

Why cross-store reporting is hard

  • Every store is a separate set of books. Orders, refunds and payouts live in each store’s admin.
  • Logins multiply. Someone needs report access in every store, and that access has to be kept up to date.
  • Currencies differ. A store selling in EUR and one in USD cannot be added together without a conversion rule.
  • Definitions drift. One person exports orders, another uses a finance report, and the totals do not match because they measure different things.
  • API access is per store. Any script that reads orders needs an app installed and authorized on each store.

Option 1: Shopify’s own reports, store by store

Every store has Analytics and reports in its admin. For refunds, two families matter, and they measure different things:

  • Sales reports track the value of orders. Refunds and other negative order adjustments show up as sales reversals, as negative amounts on the date they were processed. Shopify defines sales reversals as “all order adjustments that result in negative monetary value”, which includes cancellations and edits, not just refunds. See Shopify’s help page on sales reports.
  • Finance reports, including the payments reports, track money that actually moved. Refunds appear in a Refunds column, and net payments are total paid minus refunds. See Shopify’s help page on finance reports.

Shopify renamed “returns” to “sales reversals” in its reports. If you have older spreadsheets built on the returns columns, check that they still line up.

Good for: accurate numbers for one store, with Shopify’s own definitions. Weak at: anything across stores. With five stores, you run the same report five times and add the results yourself.

Option 2: Shopify Plus organization analytics

If your stores are in a Shopify Plus organization, Shopify already does cross-store reporting. According to Shopify’s help page on organization analytics:

  • Organization analytics are available only for stores and organizations on the Shopify Plus plan.
  • There is an organization overview with metrics such as gross sales, sessions, orders and average order value, plus sales over time by store.
  • You can view any report at the store level or the organization level, save explorations for groups of stores, and split reports by a Store dimension.
  • If your stores use different currencies, you can choose which of those currencies to display.
  • People need a role with the organization permission to view sales and orders across all live stores.

Good for: Plus merchants. This is the native answer, and for reporting alone it is hard to justify another tool on top. Weak at: stores that are not on Plus, which do not get it.

If you are on Plus, set up roles so the right people have the organization permission, save the cross-store refund reports you need, and stop there for reporting.

Option 3: CSV exports into one spreadsheet

You can export orders from each store’s Orders page to CSV. According to Shopify’s help page on exporting orders:

  • Small exports download directly; larger exports, and exports by date, are emailed to you and the store owner.
  • The file has a Refunded Amount column, “the amount of any refund applied to the order.”
  • Orders with several line items take several rows, and many order-level fields are blank on the extra rows.
  • You can also export transaction histories, which contain only captured payments.

A routine that works for a monthly report:

  1. Pick one date range and one timezone for every store.
  2. Export orders by that date range from each store.
  3. Add a Store column to each file before combining them.
  4. Remove duplicate order rows before you sum order-level columns, because extra line items repeat the order on separate rows.
  5. Convert currencies with one written rule, for example the rate on the last day of the month.
  6. Check each store’s total against its own finance report before trusting the combined sheet.

Good for: occasional reports, low cost, full control. Weak at: freshness and reliability. It takes a person’s time every month, export emails arrive one by one, and a single wrong sum or filter goes unnoticed.

Note that the refunded amount on an order export is tied to the order, while sales and finance reports place a refund on the date it was processed. A refund in October on a September order lands in different months depending on which you use. Pick one and write it down.

Option 4: A custom app or script that reads every store

A developer can write something that reads orders and refunds from each store through Shopify’s Admin API and puts them in one database or sheet. Things to know before you start:

  • New custom apps are created in the Dev Dashboard. Since January 1, 2026, custom apps are no longer created in the Shopify admin; existing ones created before then keep working and can be managed there. See the Shopify changelog and Shopify’s help page on custom apps.
  • Order history is limited by default. An app can read the last 60 days of orders by default; older orders need the read_all_orders scope, which requires Shopify approval. See Shopify’s access scopes reference.
  • Aggregates are available through ShopifyQL. The Admin API has a shopifyqlQuery query that runs ShopifyQL and returns a table. It requires the read_reports scope and protected customer data access. See Shopify’s shopifyqlQuery reference. It still runs per store: you query each store and combine the results.

Good for: teams with a developer, specific report formats, or feeding numbers into accounting or a BI tool. Weak at: upkeep. Every store needs the app installed and authorized, credentials have to be stored safely, API versions change, and someone has to notice when one store’s sync quietly stops. Our guides on Shopify integrations that don’t break and when to build a custom Shopify app cover those trade-offs.

Option 5: An app that brings stores into one view

Some apps install on each store and show orders and refunds from several stores in one place. You still install the app on every store, but there are no tokens or scripts for you to maintain. Check, before you commit:

  • Which numbers it shows, and whether they follow Shopify’s definitions or its own
  • How far back it reads orders
  • How it handles currencies
  • Who on your team can see which stores

Comparison

Option Cross-store view Setup Ongoing effort Best fit
Per-store Shopify reports No None High at 5+ stores One or two stores
Plus organization analytics Yes, native Roles and permissions Low Stores in a Plus organization
CSV exports Manual Low High, monthly Occasional reports
Custom app or script Yes High Medium to high Teams with a developer
Multi-store app Yes Install per store Low Several non-Plus stores

Pitfalls that make store totals disagree

  • Sales reversals vs refunds. Sales reversals include cancellations and edits, so they are larger than refunds paid out.
  • Processed date vs order date. Reports and exports may put the same refund in different periods.
  • Shipping and taxes. In sales reports, refunded shipping and taxes show in their own columns, not in sales reversals.
  • Multi-line rows in exports. Summing every row double-counts order-level amounts.
  • Timezones. Each store has its own timezone, so “October” starts at different moments.
  • Test and staff orders. Exclude them the same way in every store.

A routine before BFCM 2026

Black Friday falls on November 27, 2026, and refund volume usually follows peak sales. Before then:

  1. Decide which number you report: sales reversals, refunds paid, or both.
  2. Write down the date rule, timezone and currency rule.
  3. Make sure the people who need refund numbers have report access in every store, or the organization permission on Plus.
  4. Run your cross-store report for October now and check it against each store’s finance report, so you know it works before the peak.
  5. Agree who approves large refunds during the peak. Our returns and refunds process covers that.

Where StoreFleet fits

Storefleet Store Ops gives a workspace of linked stores one order list and insights on revenue, refunds and costs across stores, filtered by store group. You install the app on each store and link it with that store’s connection key. If your stores are on Shopify Plus, Shopify’s organization analytics already cover cross-store reporting, and StoreFleet’s value for you is the rest: stock and discount changes previewed and approved for each store from one Approvals list, then read back from Shopify, and in the web dashboard refunds, cancellations and payment captures that always need an owner. For the wider setup, see how to manage multiple Shopify stores and back-office tools for Shopify teams.

If your numbers look wrong because a sync tool changed orders or stock, start with what to do when a sync app changed stock without approval.

FAQ

Can I see refunds across all my Shopify stores in one report?

Only natively if your stores are in a Shopify Plus organization, which can view reports at the organization level. Otherwise you combine each store’s reports or exports, use a custom app, or use a multi-store app.

Why does my refund total differ between the sales report and the payments report?

They measure different things. Sales reports show sales reversals, the value of negative order adjustments including cancellations and edits. Payments reports show money actually refunded. Shipping and taxes are also handled differently.

Can a custom app read all historical orders?

Not by default. Apps can read the last 60 days of orders; older orders need the read_all_orders scope, which requires Shopify approval.

Do I need separate API credentials for each store?

For a custom app, yes in practice: the app has to be installed and authorized on each store, and each store’s access has to be stored and maintained. An app from the Shopify App Store handles that per install, but you still install it on every store.

Is the order CSV export good enough for monthly reporting?

For a few stores and an occasional report, yes, if you handle multi-line rows, currencies and dates consistently. At five or more stores and a monthly routine, the manual work and error risk add up.

Sign in to your workspace

Each workspace has its own address: <workspace>.getstorefleet.com. Enter your workspace name, or paste its address, and we take you to its sign-in page.

You will go to

New to StoreFleet? Create a workspace