TestFlight: StoreKit 2 returns no consumables despite active agreements; HTTP 200 and empty product response

Hello,

We are troubleshooting product discovery for three consumable In-App Purchases in our first iOS game, ION RUSH. All three remain unavailable in TestFlight.

Environment and result:

  • Physical iPhone 13, iOS 27.0.1 (24A446).
  • App version 1.0 (80), installed through TestFlight.
  • Direct native StoreKit 2; no RevenueCat or other purchase SDK.
  • Product.products(for:) returns zero products before application filtering, without throwing an error.
  • Earlier independent development-build diagnostics also returned zero products for batch and individual StoreKit 2 requests; SKProductsRequest reported all three identifiers as invalid.

Checks completed:

  • Product IDs exactly match App Store Connect: nova_pack_5, nova_pack_15, nova_pack_40.
  • The explicit bundle identifier matches the app record and code; In-App Purchase is enabled for the App ID.
  • All three consumables show Ready for Review, have prices and localizations, and are available in all 175 configured territories, including the US.
  • Developer membership, Paid Apps Agreement, bank account and tax forms are active. The Account Holder checked the Developer account for outstanding agreement signatures; none were visible.
  • The Developer Program agreement was accepted September 29. Tax forms were submitted October 3 and now show Active. The financial setup was only recently completed, so delayed activation remains a possibility.
  • The release scheme has no local StoreKit Configuration override.
  • TestFlight reinstallation, device restart and repeated product refreshes did not restore the products.
  • A re-export of the exact build 80 archive with the original App Store Connect signing settings selected an explicit App Store profile with beta-reports-active=true and get-task-allow=false. This checks the signing configuration; the original uploaded IPA was not available for direct inspection.

Selected storekitd messages from October 4, 2026 (UTC+3):

09:59:22.963356 Requesting Media API product batch ["nova_pack_15", "nova_pack_40", "nova_pack_5"]
09:59:22.990339 summary for task success {transaction_duration_ms=1, response_status=200, cache_hit=true}
09:59:22.991595 Ignoring empty product response

The request targets amp-api.sandbox.apple.com/v1/catalog/us/in-app-purchasables with the correct bundle and product IDs. Its account mediaType is com.apple.AppleMediaServices.accountmediatype.appstore.beta. A second request one second later produced the same HTTP status, cache flag and empty-product message. We did not capture the raw HTTP response body.

Local StoreKit configuration tests work, but we understand this does not validate the live Sandbox catalog. We also understand that prior IAP review approval is not required for Sandbox testing.

Questions:

  1. What additional developer-side check would distinguish incomplete account activation, product configuration or cached catalog state in this situation?
  2. Has anyone resolved this after completing agreements/banking/tax, especially when the products were created before financial activation? What exact action or elapsed time resolved it?
  3. If all TN3186 checks pass, what evidence and official escalation route should we use to request investigation of the app-to-product catalog association?

Related reports: https://developer.apple.com/forums/thread/849165 (same storekitd messages, but after membership lapse/renewal; our situation differs) https://developer.apple.com/forums/thread/844545 (zero StoreKit 2 products and invalid StoreKit 1 identifiers after TN3186 checks)

We can provide further redacted diagnostics and account details privately to Apple. Thank you.

TestFlight: StoreKit 2 returns no consumables despite active agreements; HTTP 200 and empty product response
 
 
Q