StoreKit 2: Product.purchase() returns StoreKitError (2) when canceling "Pending Downgrade" in Production ONLY

Environment

  • OS: iOS 26.2 ~ 26.3
  • SDK: Xcode 16.4 (Target: iOS 17.6)
  • Framework: StoreKit 2
  • Environment: Production (Cannot reproduce in Sandbox or Xcode Configuration)

Issue Description

We are encountering a critical purchase failure that occurs exclusively in the Production environment.

When a user who has a "Pending Downgrade" (scheduled for the next renewal date) attempts to re-purchase their current higher-tier product to cancel the downgrade, StoreKit 2 returns an error.

Steps to Reproduce

  1. User is currently on "Product A" (Higher Tier).
  2. User schedules a downgrade to "Product B" (Lower Tier). The status changes to "Pending Downgrade".
  3. User attempts to purchase "Product A" again via Product.purchase().
  4. The system purchase sheet appears, and the user confirms the purchase.
  5. Immediately after authentication, a system alert from StoreKit appears saying: "Cannot process request at this time. Please try again later." (現在リクエストを一時的に処理できません。しばらくしてからもう一度お試しください。)
  6. After dismissing the alert, the app receives StoreKitError code 2 (unknown) with the localized message: "Request could not be completed" (リクエストを完了できません).

Technical Observations

  • Transaction.currentEntitlements: Does not change.
  • App Store Server Notifications (V2): No notifications are sent to our server.
  • Sandbox Behavior: Works perfectly. Re-purchasing Product A successfully cancels the downgrade and the subscription remains at the Higher Tier.
  • AppStore.sync(): Running a manual sync does not resolve the pending state after the error.

Question

Since we cannot debug production-level logs, we are stuck. Is this a known regression in the StoreKit 2 commerce engine regarding state synchronization for downgrades? Has anyone found a workaround for this specific scenario?

Any insights would be greatly appreciated.

Additional info:

I have confirmed that users can successfully revert from the downgrade to the original product via the iOS Settings app (Settings > Apple ID > Subscriptions).

The issue seems to be specific to performing this action within the app using the StoreKit 2 API.

StoreKit 2: Product.purchase() returns StoreKitError (2) when canceling "Pending Downgrade" in Production ONLY
 
 
Q