---
title: "What does Play Billing NETWORK_ERROR (12) mean?"
description: "NETWORK_ERROR (12) means the device could not reach Google Play. Retry once the connection returns, with backoff for background calls. Billing Library 6 and later."
url: https://revenuedot.app/docs/errors/play-billing-network-error
---

# What does Play Billing NETWORK_ERROR (12) mean?

Play Billing NETWORK_ERROR (12) means a network problem stopped the device from reaching Google Play.

## Quick facts

| | |
|---|---|
| Error | `BillingClient.BillingResponseCode.NETWORK_ERROR` (12) |
| Where | Google Play Billing Library (`BillingResult.responseCode`) |
| What the vendor says | A network error occurred during the operation. |

## Cause

- Google says there was a problem with the network connection between the device and Play systems, which can also mean the user has no active connection.
- The code is returned only by Billing Library 6 and later. Earlier versions returned `SERVICE_UNAVAILABLE` for network problems.
- It comes from the connection, not from your product setup or your API arguments.

## Fix

1. Retry with a simple retry when the person is waiting, or exponential backoff for background calls such as acknowledging a purchase.
2. Show "Check your connection and try again" and keep the screen usable with cached data.
3. Do not unlock content from this error; unlock from a purchase the Play Store reports as purchased.
4. Update to Billing Library 6 or later if you still see `SERVICE_UNAVAILABLE` for network problems.

## Example

```kotlin
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingResult

// A dropped connection is retryable: ask the person to try again instead of showing a failure.
fun onBillingResult(result: BillingResult, showMessage: (String) -> Unit) {
    if (result.responseCode == BillingClient.BillingResponseCode.NETWORK_ERROR) {
        showMessage("Check your connection and try again.")
    }
}
```

*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 `NETWORK_ERROR` to `PurchasesErrorCode.NetworkError` (code 10). See [what networkError means](https://revenuedot.app/docs/errors/sdk-network-error.md).

## Related

- [What does networkError (code 10) mean in the purchases SDK?](https://revenuedot.app/docs/errors/sdk-network-error.md)
- [What does StoreKitError.networkError mean?](https://revenuedot.app/docs/errors/storekit-error-network-error.md)
- [What does Play Billing SERVICE_UNAVAILABLE (2) mean?](https://revenuedot.app/docs/errors/play-billing-service-unavailable.md)

## Source

- [Google: BillingResponseCode.NETWORK_ERROR](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode)
- [Google: Handle BillingResult response codes](https://developer.android.com/google/play/billing/errors)
- [RevenueDot purchases-android: google/errors.kt (how the SDK maps response codes)](https://github.com/revenuedot/purchases-android/blob/revenuedot/main-patches/purchases/src/main/kotlin/com/revenuecat/purchases/google/errors.kt)

Checked: 2026-10-03
