The Shoffi Partner Token Leak
Shopify affiliate program provider Shoffi has reported a data leak of Shopify Partner Access tokens it held.
- Vendor
- Shoffi
- Exposed
- Shopify Partner API tokens
- Surfaced
- Aug 8, 2026
-
Anonymous developer reports a leaked token #
An anonymous Shopify app developer posts in the Shopify App Founders Facebook group, claiming their Shoffi Partner API token was leaked. No further context or evidence is provided.
-
Founder's first response downplays the report #
Within 24 hours of being tagged on an X thread, Shoffi's founder responds — pointing to five clean years and arguing a token isn't Shoffi's alone to leak.
→ X — @haritanitayI don't know who this person is, but in the 5 years we've been running Shoffi, we haven't had any complaints about an access token or data leak. We take data protection very seriously and check our systems frequently.
It's also important to note that even if this anonymous person's key was compromised, it could have been through any other service or through the partner account.
The fact that you created an access token for Shoffi doesn't mean it's only ours to use. If it was stored or sent to someone on the team unsafely, anyone could use it to retrieve data from your partner account.
-
Founder posts a public correction #
Roughly two hours after the first reply, Shoffi's founder returns to the same X thread and corrects the record. The review is complete; an issue was found and fixed; all customers are asked to rotate.
→ X — @haritanitayQuick update here because we want to be transparent and correct my earlier reply based on the additional information we have now.
As part of a broader security review, we identified and fixed an issue that, in certain cases, could have allowed Shopify Partner API tokens associated with certain apps to be retrieved.
We have not received any evidence showing that a Partner API token was actually accessed or used without authorization, and we have no evidence connecting the issue we identified to the original anonymous post.
As a precaution, we've asked all Shoffi customers to rotate their Partner API tokens. We've also strengthened the relevant security controls and notified Shopify's security team.
-
Shoffi emails select customers directly #
A "Security update" email goes out to select customers, mirroring the public correction and walking through token rotation step by step. The line that stands out is the honest one about detection:
We have not received any evidence showing that a Partner API token was accessed or used without authorization. However, due to the nature of the issue and the way Partner API tokens can be used directly with Shopify, we are not able to independently determine whether this may have occurred in the past.
-
Shoffi sends us an official statement #
Shoffi contacted us directly with a statement for the record — confirming the fix, an independent penetration test, and plans to reduce how much Shopify Partner API access it needs. Published verbatim:
The Shopify Partner API token vulnerability identified in August has been remediated.
After becoming aware of the vulnerability, we patched it, reported it directly to Shopify Security and followed up with them, contacted the relevant partners, and asked them to rotate their Shopify Partner API credentials as a precaution.
Because we cannot conclusively determine whether unauthorized historical access occurred, we treated the relevant credentials as potentially exposed and recommended rotation regardless.
We have since completed an independent penetration test covering the Shoffi application, APIs, authentication and authorization, token handling, tenant isolation, and relevant external infrastructure. The area related to the original vulnerability was included in that assessment.
The testing is complete, the vulnerability has been remediated, and we have made additional security and development-process improvements based on the assessment.
We're also reviewing the architecture of our Shopify Partner API integration. Our goal is to reduce, and where possible eliminate, the need for Shoffi to receive broadly scoped Shopify Partner API credentials.
We're looking into whether Shopify can provide a more limited permission model for the specific data Shoffi requires. If that isn't possible, we're planning to introduce a server-to-server REST API that would allow partners to send Shoffi only the required data without providing their Shopify Partner API token to Shoffi.
We're also evaluating a partner-hosted package or connector as another possible approach, which could keep the Shopify credential entirely within the partner's own infrastructure.
🦝 Shoffi has remediated the vulnerability and confirmed it with an independent penetration test. Two honest caveats keep this from being a clean all-clear: past unauthorized access can’t be ruled out (by Shoffi’s own account it isn’t determinable), and their architecture changes to stop holding broadly-scoped Partner tokens are still in progress.
What we know
Shoffi — a Shopify affiliate-program provider — has confirmed a security issue that exposed Shopify Partner API tokens it held on behalf of some of its customers. This is a confirmed leak, disclosed by Shoffi itself:
- Shoffi says a security review identified and fixed an issue that, in certain cases, could have allowed Shopify Partner API tokens associated with certain apps to be retrieved. Some partners’ keys were exposed.
- As a precaution, Shoffi has asked all customers to rotate their Partner API tokens, strengthened internal controls, rotated its own internal credentials, and notified Shopify’s security team.
- By its own account, Shoffi has no evidence any token was actually accessed or misused — but the nature of Partner API tokens means it cannot independently determine whether that happened.
The timeline above is the running record. We’ll update it as more surfaces.
🦝 A leaked Partner API token isn’t hypothetical loot. It’s a standing key to your Partner org’s app and financial data. Even “we can’t be sure” is reason enough to turn the lock.
What we don’t know — including how
The leak is confirmed; the mechanism is not. Shoffi hasn’t disclosed a root cause, and we won’t invent one — though its own wording does point to a likely shape, which we flag (clearly caveated) in the next section. None of this is an accusation.
- How the tokens were exposed is not public. Shoffi hasn’t disclosed how bad actors could have accessed the tokens it held — no root cause, attack vector, storage detail, or exposure window. We won’t invent one.
- Whether any token was actually accessed is unknown — by Shoffi’s own account, the nature of Partner API tokens means it cannot independently determine whether misuse ever happened.
- The original anonymous report is unverified, and Shoffi says it has no evidence connecting that post to the issue it found. The two may or may not be related.
This section stays until those blanks are filled by a first-party source. If you have verifiable detail, we’ll update the record — not the rumor mill.
Our read: this has the shape of broken authorization
Shoffi hasn’t named a root cause, so what follows is inference — but it’s inference from their own words, not the rumor mill. Read the key line again:
“we identified and fixed an issue that, in certain cases, could have allowed Shopify Partner API tokens associated with certain apps to be retrieved”
In a multi-tenant service holding many customers’ tokens, “tokens associated with certain apps could have been retrieved” is the signature of a broken authorization flaw: a request that’s properly authenticated — a real, logged-in user — but not properly authorized, able to read token records that belong to someone else. Change or guess an identifier, get back a credential that isn’t yours. It’s the same class as IDOR / broken object-level authorization.
To be clear: this is our assessment, not a cause Shoffi confirmed. Based on the information we’ve seen it’s the most likely shape of the bug — but Shoffi has not disclosed the mechanism, and nothing here is an accusation. They found the issue and fixed it.
🦝 If your app stores data or credentials for more than one merchant, ask the uncomfortable question: could one authenticated customer retrieve another’s records just by changing an ID? See our Authorization field guide for how to prevent this from happening to you.
The update: remediated, tested, and rethinking the token model
On August 18, Shoffi sent us an official statement for the timeline (above). The short version: the vulnerability is remediated, and they’ve completed an independent penetration test covering the app, APIs, authentication and authorization, token handling, and tenant isolation — with the originally-vulnerable area in scope.
Two things stand out.
Still no named root cause. The statement confirms a fix and a pen-test but doesn’t describe the vulnerability itself — so our read (above) stands: the shape of it, one tenant able to retrieve another’s tokens, points to a broken-authorization / privilege flaw. Speculation, clearly labelled — and the exact class we break down in the Authorization field guide.
They want to stop holding your token at all. The forward-looking part is the most interesting. Shoffi says it’s reworking its Partner API integration to reduce or eliminate the need to hold broadly-scoped Partner API credentials, through one of:
- a narrower permission model, if Shopify can scope Partner API access down to just the data Shoffi needs;
- a server-to-server REST API, where partners push only the required data to Shoffi and never hand over their Partner API token;
- a partner-hosted package or connector, keeping the Shopify credential entirely inside the partner’s own infrastructure.
This is the right direction, and the lesson generalizes well past Shoffi: the root risk is handing a broadly-scoped credential to a third party at all. Each option shrinks the blast radius by keeping the token on your side of the fence. If you build integrations that ask partners for Partner API tokens — or you’re the partner being asked — treat don’t hold the credential as the goal and least privilege as the floor.
Partner API vs Admin API — what’s actually at risk
The single most important thing to get right: this involves the Shopify Partner API, which is a completely separate interface from the Shopify Admin API.
- Partner API — reads and manages your Partner organization: your apps, their installs/uninstalls and charges, and your payout/financial data. Scopes like
manage_appsandview_financialsgate that access, and Shopify has been steadily expanding what Partner-side scopes can do. - Admin API — the interface to merchant data: orders, customers, products, collections. This is not affected. A Partner API token cannot read a store’s orders or customers.
So the blast radius is your app catalog and your financials — plus what those leak about the merchants who install you — not merchant PII directly.
flowchart TD
T([If a Partner API token<br/>is exposed]) --> P[Shopify Partner API]:::bad
P --> S1["manage_apps —<br/>installs, uninstalls, charges"]:::bad
P --> S2["view_financials —<br/>payouts, transactions, earnings"]:::bad
T -. no path .-> A[Shopify Admin API]:::good
A --> C["Merchant data —<br/>orders, customers, products"]:::good
classDef bad fill:#1a0f0f,stroke:#FF5F56,color:#FF5F56;
classDef good fill:#0d1a12,stroke:#7CF9A0,color:#7CF9A0;
That separation is the good news. The bad news is that a Partner API token is a bearer credential used directly against Shopify — which is exactly why Shoffi says it can’t independently tell whether one was ever misused. There’s no per-app audit trail handed back to you.
If you use (or ever used) Shoffi
Treat the token as potentially exposed and rotate it. Deleting it outright is even better if you no longer need the integration.
Find your tokens: Dev Dashboard → Partner Dashboard → Settings (☰) → Partner API clients. Review every token, generate a fresh one where you still need access, update it in Shoffi, then revoke the old one.
The precise steps Shoffi is recommending:
- In your Shopify Partner Dashboard, generate a new Partner API token.
- In Shoffi, go to My Apps → Edit App → Edit Token and save the new token.
- Once the new token is confirmed working, revoke the previous token from your Partner account.
- While you’re in there, audit every Partner API client — delete any you don’t recognize or no longer use.
Then reduce the next blast radius:
- Grant Partner API clients the minimum scopes they need. If a service only reads financials, it doesn’t need
manage_apps. - Keep an inventory of which third parties hold which tokens, so the next “rotate everything” takes minutes, not archaeology.
- The Admin API is unaffected here — but the same discipline (rotate on exposure, least privilege) is what keeps that surface clean too.
Straight from Shopify
- Partner API reference — what the Partner API exposes and the access scopes (
manage_apps,view_financials, and more) that gate it; note it’s org-scoped and separate from the Admin API. - Shopify API access scopes — the scope model in general; grant the minimum a client needs.
- About client credentials — why credentials must stay secret, and the principle of rotating them on any suspected exposure.
- Rotate or revoke client credentials — the mechanics of rolling a credential without downtime.