We offer an in-app way for customers to request an Apple refund for an auto-renewable subscription using StoreKit2. Everything worked during testing and verification in the Sandbox and TestFlight phases, but now consistently fails in Production. We present the refund sheet on a button press:
.refundRequestSheet(for: transactionID, isPresented: $isPresenting) { result in
switch result {
case .success(let status): // .success / .userCancelled handled here
case .failure(let error): // -> .failed for every user
}
}
We log the outcome of all the requests, success and cancel behaves as expected. Since RefundRequestError only has .duplicateRequest .failed and the localizedDescription is generic, we don't know why it is failing.
We have already checked that the transaction are for verified, not revoked, non-upgraded and active subscriptions. The issue only happens in Production.
Is there any way to get more information about why a refund request fails or what other configuration needs to verified for this to work? Is there an eligibility window or other non-specified limit that might result in these errors?