StoreKit 2 Product.displayPrice returns USD while purchase dialog shows EUR

Hi,

I'm testing my first auto-renewable subscription using StoreKit 2 and TestFlight.

When loading products via:

let products = try await Product.products(for: ids)

the product is returned successfully, but product.displayPrice shows:

$4.99

even though:

My App Store account is located in Germany. The app is only intended for the German market. The native Apple purchase sheet displays the correct price in EUR. The subscription pricing is configured correctly in App Store Connect. The subscription is still in "Ready to Submit / Prepare for Submission" state and has not yet been approved.

Example:

print(product.displayPrice)

returns:

$4.99

while the StoreKit purchase dialog shows:

5,99 €

Has anyone seen this behavior before?

Is this expected for new subscriptions in TestFlight/Sandbox before the first App Review approval, or could there be another reason why displayPrice differs from the actual purchase dialog?

Thanks!

Hello -

StoreKit is expected to return a product's configured price and currency in line with the Storefront setting in place for your testing scenario.

You can use the Storefront API to determine the current storefront at any time, in any testing scenario.

Depending on the specifics of your testing setup, you may need to make configuration adjustments to ensure you are testing in the desired storefront.

It may also be helpful to review these Technotes for more information about testing in Xcode and Sandbox.

Please let us know if you need any additional assistance.

Thank you.

StoreKit 2 Product.displayPrice returns USD while purchase dialog shows EUR
 
 
Q