StoreKit 2 returns USA/USD in TestFlight but DEU/EUR in local Release build on the same device

Hi everyone,

We are currently preparing the release of our Flutter-based iOS application and are experiencing an unusual StoreKit 2 storefront issue that only occurs when the app is installed through TestFlight.

The problem

When our application is installed through TestFlight, StoreKit 2 consistently returns the United States storefront (USA), and all six auto-renewable subscription products are displayed with USD prices.

However, both the regular Apple Account and the Sandbox Apple Account are configured for Germany.

We have verified the following:

  • All six subscription products are correctly configured in App Store Connect with EUR prices for Germany.
  • The subscriptions are available in Germany, Austria, and Switzerland.
  • We created a completely new Sandbox tester with Germany selected during account creation, using an email address that had never previously been used for sandbox testing.
  • The issue occurs on two different physical devices (iPhone and iPad).
  • No local StoreKit configuration file is used.
  • Our application does not override the storefront, modify localized prices, or contain any hardcoded USD fallback.

Controlled comparison

We performed additional tests using the same application code on the same iPhone.

The results were:

Installation method Storefront Currency
Local Debug build via Xcode/Flutter DEU EUR
Local development-signed Release build via Flutter DEU EUR
TestFlight Release build USA USD

The locally installed Release build successfully retrieves all six subscription products with their correct German prices.

For example, StoreKit returns the following values for one of our subscriptions:

Local Release build:

Storefront.current.countryCode = DEU

Product currencyCode = EUR

Product.displayPrice = 6,99 €

TestFlight build:

Storefront.current.countryCode = USA

Product currencyCode = USD

Both builds use the same StoreKit 2 integration and product identifiers.

Technical environment

  • Framework: Flutter
  • StoreKit integration: StoreKit 2
  • Flutter plugin: in_app_purchase_storekit 0.4.11+2
  • Devices: Physical iPhone and iPad
  • iOS/iPadOS: 26.6.2
  • Subscription products: Six auto-renewable subscriptions
  • Expected storefront: Germany (DEU)
  • Actual TestFlight storefront: United States (USA)

We have traced the storefront country code directly to StoreKit 2’s Storefront.current.countryCode and the localized prices to the product information returned by Product.products(for:).

There is no application-level storefront override or price conversion.

Questions

  1. Why would StoreKit 2 return a different storefront in TestFlight compared with a locally installed development-signed Release build on the same physical device?
  2. Could TestFlight use a different sandbox storefront or Apple Account context than a locally installed build?
  3. Is there a recommended way to diagnose or reset the storefront association used by TestFlight?
  4. Has anyone experienced similar behavior where TestFlight consistently returns USA despite using a German Apple Account and newly created German sandbox testers?

We have already contacted Apple Developer Support and followed their recommendation to create a completely new German sandbox tester, but the issue persists.

Any guidance from Apple engineers or developers who have encountered similar behavior would be greatly appreciated.

Thank you!