diff --git a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
index 8e342a6..1a03ba2 100644
--- a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.4+6
+
+* Ensure that purchases correctly indicate whether they are acknowledged or not. The `PurchaseDetails.pendingCompletePurchase` field now correctly indicates if the purchase still needs to be completed.
+
 ## 0.1.4+5
 
 * Add `implements` to pubspec.
@@ -9,7 +13,7 @@
 
 ## 0.1.4+3
 
-- Updated installation instructions in README.
+* Updated installation instructions in README.
 
 ## 0.1.4+2
 
diff --git a/packages/in_app_purchase/in_app_purchase_android/lib/src/types/google_play_purchase_details.dart b/packages/in_app_purchase/in_app_purchase_android/lib/src/types/google_play_purchase_details.dart
index 66e3a8f..53b58bd 100644
--- a/packages/in_app_purchase/in_app_purchase_android/lib/src/types/google_play_purchase_details.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/lib/src/types/google_play_purchase_details.dart
@@ -20,30 +20,19 @@
     required this.billingClientPurchase,
     required PurchaseStatus status,
   }) : super(
-            productID: productID,
-            purchaseID: purchaseID,
-            transactionDate: transactionDate,
-            verificationData: verificationData,
-            status: status) {
-    this.status = status;
+          productID: productID,
+          purchaseID: purchaseID,
+          transactionDate: transactionDate,
+          verificationData: verificationData,
+          status: status,
+        ) {
+    this.pendingCompletePurchase = !billingClientPurchase.isAcknowledged;
   }
 
   /// Points back to the [PurchaseWrapper] which was used to generate this
   /// [GooglePlayPurchaseDetails] object.
   final PurchaseWrapper billingClientPurchase;
 
-  late PurchaseStatus _status;
-
-  /// The status that this [PurchaseDetails] is currently on.
-  PurchaseStatus get status => _status;
-  set status(PurchaseStatus status) {
-    _pendingCompletePurchase = status == PurchaseStatus.purchased;
-    _status = status;
-  }
-
-  bool _pendingCompletePurchase = false;
-  bool get pendingCompletePurchase => _pendingCompletePurchase;
-
   /// Generate a [PurchaseDetails] object based on an Android [Purchase] object.
   factory GooglePlayPurchaseDetails.fromPurchase(PurchaseWrapper purchase) {
     final GooglePlayPurchaseDetails purchaseDetails = GooglePlayPurchaseDetails(
diff --git a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
index 745b651..d9b0982 100644
--- a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
@@ -2,7 +2,7 @@
 description: An implementation for the Android platform of the Flutter `in_app_purchase` plugin. This uses the Android BillingClient APIs.
 repository: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase/in_app_purchase_android
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 0.1.4+5
+version: 0.1.4+6
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/purchase_wrapper_test.dart b/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/purchase_wrapper_test.dart
index bb7ff85..70b9fca 100644
--- a/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/purchase_wrapper_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/purchase_wrapper_test.dart
@@ -71,9 +71,10 @@
       expect(parsed, equals(expected));
     });
 
-    test('toPurchaseDetails() should return correct PurchaseDetail object', () {
+    test('fromPurchase() should return correct PurchaseDetail object', () {
       final GooglePlayPurchaseDetails details =
           GooglePlayPurchaseDetails.fromPurchase(dummyPurchase);
+
       expect(details.purchaseID, dummyPurchase.orderId);
       expect(details.productID, dummyPurchase.sku);
       expect(details.transactionDate, dummyPurchase.purchaseTime.toString());
@@ -84,6 +85,25 @@
       expect(details.verificationData.serverVerificationData,
           dummyPurchase.purchaseToken);
       expect(details.billingClientPurchase, dummyPurchase);
+      expect(details.pendingCompletePurchase, false);
+    });
+
+    test(
+        'fromPurchase() should return set pendingCompletePurchase to true for unacknowledged purchase',
+        () {
+      final GooglePlayPurchaseDetails details =
+          GooglePlayPurchaseDetails.fromPurchase(dummyUnacknowledgedPurchase);
+
+      expect(details.purchaseID, dummyPurchase.orderId);
+      expect(details.productID, dummyPurchase.sku);
+      expect(details.transactionDate, dummyPurchase.purchaseTime.toString());
+      expect(details.verificationData, isNotNull);
+      expect(details.verificationData.source, kIAPSource);
+      expect(details.verificationData.localVerificationData,
+          dummyPurchase.originalJson);
+      expect(details.verificationData.serverVerificationData,
+          dummyPurchase.purchaseToken);
+      expect(details.billingClientPurchase, dummyUnacknowledgedPurchase);
       expect(details.pendingCompletePurchase, true);
     });
   });
