Hello Apple Developer Community,
We are developing an iOS application using StoreKit 2 with four consumable in-app purchase products.
All four products have been successfully purchased using real Apple Sandbox transactions on a physical iPhone. The transactions were verified using the App Store Server API, and our backend credited the corresponding virtual points exactly once.
However, we are encountering an issue when attempting to request a refund using StoreKit 2.
Environment
- Xcode 27.0
- Physical iPhone
- Apple Sandbox tester account
- StoreKit 2
- Consumable in-app purchases
- App Store Server Notifications V2
Steps to reproduce
- Complete a consumable in-app purchase using an Apple Sandbox tester.
- Confirm that the transaction is verified and not revoked.
- Invoke the StoreKit 2 refund request sheet using
beginRefundRequest. - The Apple-provided interface displays a connection-related error.
- The API returns
cancelled.
Expected result
The Sandbox tester should be able to submit a refund request through the supported Apple refund flow.
Actual result
The refund sheet displays a connection-related error and returns cancelled. No refund is confirmed, and the transaction remains non-revoked.
We have successfully received a TEST notification through App Store Server Notifications V2, but this does not validate an actual REFUND notification.
Questions
- Is
beginRefundRequestsupported for consumable in-app purchases in Apple Sandbox? - Is this connection-related error a known Sandbox limitation?
- Is there an alternative supported way to generate a real Sandbox refund event?
- What is the recommended approach to validating the complete refund lifecycle, including App Store Server Notifications V2, for consumable products?
Any guidance from Apple engineers would be greatly appreciated.
Thank you!