The Shopify sixty-day order window
Here is a constraint that reliably surprises people at exactly the wrong moment. A newly installed Shopify app can read your recent orders — a window of roughly the last sixty days — and not your older ones.
Older orders are not deleted, hidden or unavailable to you. They are simply outside what an app may read without a specific additional approval from Shopify, requested by the app's developer and justified by what the app does.
Why the restriction exists
It is a data minimisation measure. Most apps have no legitimate need for a store's full trading history, so the default grants recent activity and requires anyone wanting more to explain themselves.
That is sensible for the general case. It is inconvenient for the specific case of accounting, where the whole point is a complete and continuous record.
Where the limit actually hurts
Three situations where it bites, in ascending order of pain.
A new integration on an existing store. You have three years of trading and your new integration can see two months of it. Everything before the window has to come from somewhere else — an export, a manual import, or your existing accounting records — and that gap is a real piece of project work.
A comparative report. Anything asking how this month compares to the same month last year needs last year, and it is not there unless the historical access was arranged.
A late-arriving event on an old order. A refund or a chargeback on an order from four months ago. The event is recent and the order it belongs to is not, and depending on how the integration is built it may be unable to fetch the parent order to attach the refund to — see chargebacks on your own store.
That third case is the subtle one, because it does not appear at go-live. It appears months later as an orphaned refund with no order behind it.
How the approval works
The app's developer requests extended historical order access from Shopify, stating the purpose. An accounting or reconciliation use case is a legitimate and well-understood reason to ask, so this is a normal path rather than an exotic one.
Two things follow for a merchant.
It is the vendor's approval, not yours. You cannot arrange it yourself. Either the app has it or it does not, and that is a question to ask before choosing rather than after installing.
It takes time. Not something to be requested during your go-live week.
So the question to put to any Shopify integration vendor is direct: does your app have approval to read orders beyond the default window? A vendor with a serious accounting product will answer immediately. A vendor who has not encountered the question has not migrated a store with history.
What to do if the access is not available
You still have options, and they are all fine — they just need planning.
Export from Shopify and import once. Shopify's own admin can export orders, and a one-off import of history from a file is a perfectly reasonable approach. It is manual, it happens once, and it needs checking rather than trusting.
Bring across balances rather than transactions. For many businesses the historical detail belongs in the old system and only opening balances need to move. This is the standard approach to any accounting migration and it is usually the right one.
Pick a clean cutover date. Run the new integration from a period start, keep the old records accessible for prior periods, and accept that comparative reporting spans two systems for the first year. Slightly annoying, entirely workable.
What does not work is assuming the integration will backfill and discovering at go-live that it cannot — see what it takes to build a Shopify connector.
The related limit worth knowing
Historical access is about how far back you can read. It is separate from how much you can read at once, which is governed by the request budget, and separate again from bulk operations, which is how volume is moved.
All three interact at go-live. You need permission to read the history, a bulk operation to move it efficiently, and enough time for the operation to complete — see Shopify bulk operations and when to use them and Shopify API rate limits and query cost.
Getting one of the three wrong stalls the import. Planning all three turns it into an overnight job.
Common questions
Why can a Shopify app only see recent orders?
Because extended historical order access requires a specific approval from Shopify rather than being granted by default. The default gives an app roughly the last sixty days as a data minimisation measure, since most apps have no legitimate need for a store's full trading history, and anyone wanting more has to justify the purpose.
Can a merchant grant historical order access themselves?
No. The approval is requested by the app's developer from Shopify and justified by what the app does, so it is a property of the app rather than something a merchant can enable. That makes it a question to ask a vendor before choosing them, since either their app has it or it does not.
What happens to a refund on an order older than the window?
The refund event is recent while the order it belongs to is not, so an integration without extended historical access may be unable to fetch the parent order to attach it to. This does not appear at go-live; it surfaces months later as a refund with no order behind it, which is why the access question matters even for a store starting fresh.
How do you bring Shopify history into a new system without extended access?
Either export the orders from Shopify's own admin and import them once from a file, or migrate opening balances only and leave historical detail in the previous system. Both are standard practice. The one approach that fails is assuming the integration will backfill automatically and finding out at go-live that it cannot.
Related: Shopify access scopes and protected customer data · Shopify bulk operations and when to use them · what the Shopify Admin API actually returns
Read next
See what you could build
Start a free trial and describe what your business needs in plain language — SmartB Studio builds the module for you.
Start free trial