Same here, and it reproduces every time.
Environment
iPhone 17 Pro, iOS 27.0 (24A437) and again after updating to iOS 27.2 (24B5099f)
Xcode 27 SDK, development-signed build, App Store Sandbox (no StoreKit configuration file active)
Both an auto-renewable subscription and a consumable
What happens
refundRequestSheet(for:isPresented:onDismiss:) presents the sheet, but it shows "Cannot Connect" with Retry. Retry never loads the reason form.
Calling Transaction.beginRefundRequest(for:in:) directly gives the same result, so it is not the SwiftUI modifier.
Closing the error sheet returns .success(RefundRequestStatus.success), even though no reason was chosen and nothing was submitted. Apps that trust .success will show "refund requested" when no request exists.
With local StoreKit Testing on the iOS 27 simulator, the same code loads the real reason form.
Console
The sandbox /inApps/v1/refund/info/{transactionId} request fails with code 306, "exhausted retries (3 / 3)", while the error metadata reports HTTP status 200. The web view bootstrap then fails. One correlation key: VM75WSOPKSGGRCD7BEJJZNV3RA (2026-10-08 23:19 EDT).
Sandbox App Store Server Notifications V2 TEST delivery works for us too, so the server side is reachable.
Could an Apple engineer confirm whether this is a known Sandbox refund-info issue? Happy to send a sysdiagnose and transaction IDs.
Topic:
App & System Services
SubTopic:
StoreKit
Tags: