Get Shopify Reconciliation Ledger
GET/api/shopify/:integrationInstance/reconciliation
Compare, entity by entity, how many records the Shopify store holds against how many reached SKU.io.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Each entry carries three counts, because the pipeline has three stages and data can stall at either hop:
inChannel— what the Shopify store itself reports.nullwhen Shopify could not be counted.downloaded— records pulled into SKU.io's staging tables.inSku— records that became real SKU.io records (sales orders, catalog products).
gap is inChannel - inSku, floored at 0, and is null whenever inChannel is null — an unmeasured gap is never reported as zero.
Status values (status on each entry and on the ledger as a whole): in_sync, gap, unknown, not_applicable. The overall status is the weakest entry, never an average, so a single entity short of records prevents an all-clear.
When an entry has a gap it also carries blocker (why, in plain terms), actionLabel and actionRoute (the single step that closes it).
Query parameters:
fresh(optional, boolean) — bypass the 5-minute cache and re-count both sides immediately.
coveragePercentage on the ledger is null whenever any entity could not be counted, so a partial measurement is never presented as overall coverage.
When the store is disconnected (the app was uninstalled or its access token revoked), Shopify is not called at all and remoteCountsError names the store and, when known, when the app was uninstalled. A downloaded-but-not-imported shortfall still carries its blocker and action while Shopify's count is unknown.
Request
Responses
- 200
- 401
- 403
- 404
- 429
- 500
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.
Internal Server Error