What does Play Billing USER_CANCELED (1) mean?

Play Billing USER_CANCELED (1) means the user closed the billing flow before finishing the purchase.

Quick facts#

Error BillingClient.BillingResponseCode.USER_CANCELED (1)
Where Google Play Billing Library (BillingResult.responseCode)
What the vendor says The transaction was canceled by the user.

Cause#

  • Google lists it as a response that does not indicate an error: for actions that show a Play Store screen, it means the user left that screen without finishing.
  • Nothing was bought and nothing is broken; the person made a choice.
  • Google calls it informational and says the app can fail gracefully.

Fix#

  1. Do not show an error dialog.
  2. Leave the paywall open with its products loaded so the person can choose again.
  3. Count cancels apart from failures in analytics.
  4. Do not retry for the person and do not unlock anything.

Example#

Kotlin
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingResult

// A cancel is the person's choice: no dialog, no retry. Log it at info level so real failures stay visible.
fun onPurchasesUpdated(result: BillingResult) {
    when (result.responseCode) {
        BillingClient.BillingResponseCode.USER_CANCELED -> println("Purchase cancelled by the user")
        BillingClient.BillingResponseCode.OK -> println("Purchase flow finished")
        else -> println("Billing result ${result.responseCode}: ${result.debugMessage}")
    }
}

Not compiled: this Kotlin snippet was not built here because the docs repo has no Kotlin or Android toolchain. Check it against your Play Billing Library or SDK version before you ship it.

How the RevenueDot SDK reports it#

The RevenueDot purchases-android fork maps USER_CANCELED to PurchasesErrorCode.PurchaseCancelledError (code 1) and sets the userCancelled flag in the purchase callback. See what purchaseCancelledError means.

Source#

Checked: 2026-10-03

Edit this page on GitHub ↗ View as Markdown Last updated