Subscriptions unavailable during App Review, but loading and sandbox purchases work in our tests (RevenueCat / StoreKit)

Hello,

Our first release was rejected under Guideline 2.1(b) because subscriptions were unavailable during App Review. We have been unable to reproduce the issue and would appreciate guidance on further
diagnostics.

Review environment

  • App version: 1.0.0 (9)
  • Device: iPad Air 11-inch (M3)
  • OS: iPadOS 27.0.1
  • Internet connection: Active, according to the review message

The app integrates StoreKit through RevenueCat and offers three auto-renewable subscriptions.

We verified that :

  • The Paid Apps Agreement, banking information, and tax forms are active.
  • All three subscriptions and their subscription group are included in the submission.
  • The subscriptions are available in all countries and regions.
  • The submitted build uses the RevenueCat App Store SDK key, rather than a Test Store key.

We tested subscription loading 15 times across two networks, including on iPad. Prices loaded successfully, and we completed a sandbox purchase that unlocked Premium.

Additional diagnostics on an iPad Air 11-inch (M3) simulator running iPadOS 26.5 returned all three products both through a direct StoreKit Product.products(for:) request and through RevenueCat. No
local StoreKit configuration file was attached.

We have not reproduced the exact iPadOS 27.0.1 review environment. The simulator runtime is unavailable through our installed Xcode.

The rejection message states that subscriptions were unavailable, but does not identify whether product retrieval failed, the subscription options were missing, or a purchase attempt failed. We are
asking App Review for those details and a retry.

We were wondering:

  1. What additional diagnostics would help investigate product availability failures that occur only during App Review?
  2. Are there sandbox account or storefront conditions we should test beyond successful product loading and sandbox purchases?
  3. Is there a recommended way to collect useful StoreKit error information from a review session when the failure cannot be reproduced locally?

Thanks !

You've already ruled out the usual setup causes, so I'd focus on your question 3, since the rejection doesn't say which step failed.

  • Make the paywall show what went wrong instead of a plain "unavailable" message. Show the RevenueCat error code (and the StoreKit error underneath it, if there is one) in small text on that screen, with a retry button. If it fails again, ask App Review for a screenshot of that screen in your reply. That tells you whether it was offerings_fetch_failed, STORE_PROBLEM, or something else.

  • Log the same errors along with the build number and a timestamp, so you can match them to the review time.

  • STORE_PROBLEM is RevenueCat's error for a problem on the App Store's side. You can't fix that in code, but a clear message and a retry button means the reviewer can try again instead of hitting a dead end.

  • In your reply to App Review, list the exact steps to reach the paywall and mention the retry button.

Since they reviewed on iPadOS 27.0.1 and you can only test 26.5, it's worth testing on a real iPad on 27.0.1 with a fresh sandbox account if you can get hold of one.