In iOS 26 beta3 version, the finishTransaction method is unable to remove transactions from the SKPaymentQueue, causing transactions to remain in the queue even after being processed.

We have some users who have upgraded to iOS 26 beta3. Currently, we observe that when these users make in-app purchases, our code calls [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; method, and we clearly receive the successful removal callback in the delegate method - (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray<SKPaymentTransaction *> *)transactions. However, when users click on products with the same productId again, the method - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions still returns information about previously removed transactions, preventing users from making further in-app purchases.

I'm encountering the same issue in production with a StoreKit1-based project. After some investigation, it appears that finishTransaction(_:) removes the transaction only temporarily. The same transaction later reappears with the same product identifier, which then prevents the user from purchasing the consumable product again.

Has anyone found a reliable workaround to avoid or mitigate this behavior?

Does the same issue occur when using Xcode 26 beta 4 and iOS 26 beta 4?

Additionally, did you follow the instructions in Setting up the transaction observer for the payment queue?

In iOS 26 beta3 version, the finishTransaction method is unable to remove transactions from the SKPaymentQueue, causing transactions to remain in the queue even after being processed.
 
 
Q