I have simple non-consumable IAPs set up for an app on macOS.
Testing in development with a local .storekit configuration file, everything works as expected.
Testing in development with a remote Sandbox, everything also seems to work fine. Product names and prices fetch correctly, I am able to make purchases with a Sandbox account (both US and UK).
Once I upload a build into TestFlight, IAPs no longer work. The tester would download the Beta app from TestFlight. They open a license manager and can see all the product names, descriptions and prices are pulled from Apple servers correctly (with the correct local currency as well!). So far so good. When trying to purchase any of the IAP, the following error appears:
This is TestFlight so testers are using their real Apple ID. My understanding is that they should continue using their production credentials and a TestFlight Sandbox would be configured behind the scenes automatically.
This error always says the users cannot purchase from a US store and must switch to [whatever user’s actual store location is] store. For example, my account is based in the UK, has got a UK billing address and a UK payment method, and the error tells me to switch to the UK store. People in Canada get a similar error - you must switch from the US store to Canadian. The error makes no sense, the account is already in the desired country.
Clicking on the “Change Store” button opens the App Store app and displays another error: “Cannot Connect to App Store”. Clicking Retry just results in this errors showing again and again.
Clicking OK takes us back to the failed IAP purchase and the final error message appears: “Purchase Error - Unable to Complete Request”.
Things I’ve done / checked:
IAPs are configured in App Store Connect and available for all regions
prices are set for all regions in App Store Connect
IAP name and description localisation in English (UK)
IAP status is Ready to Submit, I don’t think I can go past that unless I make a production release (which I can’t until we fix the problem)
IAP capabilities added in xcode
the problem is not account, machine, or location dependent - every beta tester testing my app on TestFlight has the same issue, they each use a different account and have accounts in different countries
double checked the App Store account location in the App Store settings - it is definitely matching the store this error is asking to switch to
application exits at startup with error 173 if app receipt cannot be found - this one was suggested by the review team, I could not really find any documentation for it
review team also suggested I should add com.apple.security.network.client to enable IAP connectivity. I did add that to one of the builds and it did not help. I am not really convinced this is necessary
Any suggestions on what to check and what to try? I have run out of ideas.