restorePurchases() returns zero transactions for Apple ID with confirmed active subscription

Hi all — hoping someone has run into this. restorePurchases() (via Flutter's in_app_purchase/in_app_purchase_storekit plugin, which wraps StoreKit) consistently returns zero transactions for an Apple ID that has a confirmed, currently active auto-renewable subscription to my app.

Evidence the subscription is genuinely active:

Settings → [Apple ID] → Subscriptions shows the subscription as active for this Apple ID. Independently confirmed via the App Store Server API (GET /inApps/v1/subscriptions/{originalTransactionId}) that Apple's servers currently recognize this subscription.

Details:

originalTransactionId: 2000000099299646, original purchase mid-2022 The App Store Server API's "latest transaction" for this ID resolves to environment: Sandbox, even though this Apple ID has also made real Production purchases over time — wondering if mixed Sandbox/Production history on one Apple ID could be affecting restorePurchases()'s results Tested on a real device, iOS [version], with and without an explicit SKPaymentQueueDelegate set — no difference in behavior

Would appreciate any insight — thanks!

Answered by conroypeter in 904315022

I'm a Windows-based developer without direct Xcode/Mac access, so I'm not able to easily put together a native Xcode sample project for Apple's formal Code-Level Support process. If any Apple engineers reviewing forum posts are able to help investigate without a strict native reproduction, or can point me toward what a cross-platform (Flutter) reproduction would need to include to be useful, I'd really appreciate it. Happy to provide any additional logs, transaction IDs, or details that would help.

Accepted Answer

I'm a Windows-based developer without direct Xcode/Mac access, so I'm not able to easily put together a native Xcode sample project for Apple's formal Code-Level Support process. If any Apple engineers reviewing forum posts are able to help investigate without a strict native reproduction, or can point me toward what a cross-platform (Flutter) reproduction would need to include to be useful, I'd really appreciate it. Happy to provide any additional logs, transaction IDs, or details that would help.

restorePurchases() returns zero transactions for Apple ID with confirmed active subscription
 
 
Q