I am implementing the new BillingClient library (v2.1.0) for a non-consumable in-app purchase. I am testing pending transactions with a test user. It works fine with \"Cred
I had the same issue. On launchBillingFlow you get a BillingResponseCode.ITEM_ALREADY_OWNED. the purchase returns PurchaseState.PENDING. If you consumeAsync immediately after, its response is BillingResponseCode.DEVELOPER_ERROR, but after a few minutes (or whatever delay the transaction takes to fail) you can consumeAsync again then it returns BillingResponseCode.ITEM_NOT_OWNED, now you are allowed to retry the launchBillingFlow again. like Lluis Felisart said create a dialog to ask the user to clear the pending,