---
title: "acknowledge purchase · RUAL Documentation"
description: "Tells Play you have granted what the user bought. Not optional: Google revokes and refunds any purchase left unacknowledged for three days, so a flow th…"
canonical: https://docs.rual.nl/block-types/android/androidconnection_acknowledge_purchase
language: en
---

# acknowledge purchase

This block is part of the [`android`](https://docs.rual.nl/block-types/android) group and was last modified in core [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

Tells Play you have granted what the user bought. **Not optional:** Google revokes and refunds any purchase left unacknowledged for three days, so a flow that verifies a purchase and stops here gives the money back : days later, quietly.

- flow `flow`

- connection required `androidconnection`

- package name required `value` Android app package

- product id required `value` The purchased product / subscription id.

- token required `value` The purchase token to acknowledge.

- is subscription `condition` On for a subscription, off for a one-time product : they are different endpoints.

- developer payload `value` Optional string stored alongside the purchase.

- flow `flow`

- success `condition` True when acknowledged : including when it already was.

- already acknowledged `condition` True when Play reported it was acknowledged before. Treated as success on purpose: retries and redelivered notifications must not look like the purchase went bad.

- response `object`

- error `value`

| `play` |
| --- |
| `google play` |
| `acknowledge` |
| `ack` |
| `iap` |
| `in app purchase` |
| `billing` |
| `subscription` |

Google refunds any purchase that is not acknowledged within three days, so this block is not optional bookkeeping: it is the step that keeps the payment. Verify first, unlock the entitlement, then call [acknowledge purchase](https://docs.rual.nl/block-types/android/androidconnection_acknowledge_purchase) on the true side of the [branch](https://docs.rual.nl/block-types/flow/branch). The already_acknowledged pin means a retry is safe, which matters because this chain will be re-run by a client that lost its connection halfway.

![Studio canvas example for the acknowledge purchase block: acknowledging a purchase, or losing the money.](https://docs.rual.nl/canvas-examples/androidconnection_acknowledge_purchase.png)

### Version history

Introduced in [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

### Service documentation

- [External API reference](https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.subscriptions/acknowledge): This block wraps a third-party service. Click here for the service's own documentation of the underlying endpoint.

- [Back to `android`](https://docs.rual.nl/block-types/android): Return to the main group to view all sub-groups

- [Back to `android`](https://docs.rual.nl/block-types/android?group=android): Return to the group to view all blocks within this group
