# PENDING purchases are refunded once transitioning to PURCHASED

**URL:** <https://forum.juce.com/t/pending-purchases-are-refunded-once-transitioning-to-purchased/69213>\
**Category:** Android\
**Created:** [July 30, 2026, 1:23pm UTC](https://forum.juce.com/t/pending-purchases-are-refunded-once-transitioning-to-purchased/69213 "2026-07-30T13:23:37Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tjl](https://avatars.discourse-cdn.com/v4/letter/t/ce73a5/32.png) [@tjl](https://forum.juce.com/u/tjl)\
**Post date:** [July 30, 2026, 1:23pm UTC](https://forum.juce.com/t/pending-purchases-are-refunded-once-transitioning-to-purchased/69213/1 "2026-07-30T13:23:37Z")

</div>

The only code path that acknowledges a purchase is in `JuceBillingClient.onPurchasesUpdated()`, which requires the purchase state to be `PURCHASED`. For asynchronous payment processors (UPI Autopay, PIX, etc.), the purchase state may be `PENDING`.

According to [the docs](https://developer.android.com/google/play/billing/integrate#process), if purchases complete (go from `PENDING` to `PURCHASED`) while your app is closed (or not connected), `PurchasesUpdatedListener.onPurchasesUpdated()` will not be called. In this scenario, the acknowledgement must be made in the response to calling`BillingClient.queryPurchasesAsync()`, “which is recommended when your app is launched or comes to the foreground.”

I have evidence of purchases that were refunded at an identical-to-the-second 72h 10m 01s after the charge across different months, countries, and SKUs. The window for Google Play’s automatic revocation of unacknowledged purchases is 72 hours. Has anyone else seen this?

The simple solution is to acknowledge purchases in `PurchasesResponseListener.onQueryPurchasesResponse()`(the response to calling`BillingClient.queryPurchasesAsync()`) where `PURCHASED == Purchase.getPurchaseState()` and`Purchase.isAcknowledged()` returns `false`.

The code at fault is in modules/juce\_product\_unlocking/native/java/app/com/rmsl/juce/JuceBillingClient.java

---

<div class="post-metadata">

**Author:** ![attila](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/attila/32/11206_2.png) [@attila](https://forum.juce.com/u/attila)\
**Post date:** [July 30, 2026, 3:53pm UTC](https://forum.juce.com/t/pending-purchases-are-refunded-once-transitioning-to-purchased/69213/2 "2026-07-30T15:53:09Z")

</div>

Thank you for reporting. We are investigating this issue.

---

<div class="post-metadata">

**Author:** ![attila](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/attila/32/11206_2.png) [@attila](https://forum.juce.com/u/attila)\
**Post date:** [August 3, 2026, 10:27am UTC](https://forum.juce.com/t/pending-purchases-are-refunded-once-transitioning-to-purchased/69213/3 "2026-08-03T10:27:30Z")

</div>

A fix is now out on develop

> <https://github.com/juce-framework/JUCE/commit/bf11446d82ce4b795af151cc0dc7088f224250e5>
>
> Prior to this commit PENDING purchases that became PURCHASED later could
> get los…t. For these we would never call purchaseCompletedCallback() and
> we would never acknowledge them to GPB, and they would get refunded
> after the 3 day timeout period.
