Skip to content

Is Product Purchased

This asynchronous function checks whether a non-consumable product has already been purchased by the user and acknowledged.

If the specified product ID is found among owned purchases, the function will return true. Otherwise, it will return false — meaning the product has not been purchased or has been refunded.


Parameters

1. Product Id

The unique product ID of your non-consumable item, as defined in the Google Play Console. Must exactly match the ID configured in your product list.

2. On Status Received

Triggered once the query completes. Returns a single boolean value:

  • true — product is owned and acknowledged
  • false — product not found, not owned, or not yet acknowledged

Use this delegate to enable or disable UI elements, unlock premium content, or hide purchase buttons for users who already own the item.


Example

In this example, the Is Product Purchased node is used to verify whether the user has already bought the "no_ads" item from the Google Play Console.

If the product is owned and acknowledged, the system disables ads automatically when the game starts or the menu loads.


C++ Usage

You can also check product ownership directly from C++ using the static IsProductPurchased function.

#include "BillingCPPLibrary.h"

void UMyGameInstance::CheckNoAdsStatus()
{
    FString ProductId = TEXT("no_ads");

    FOnNonConsumableProductStatusReceivedNative OnResult;
    OnResult.BindLambda([](bool bPurchased)
    {
        if (bPurchased)
        {
            UE_LOG(LogTemp, Log, TEXT("Ads are disabled"));
        }
        else
        {
            UE_LOG(LogTemp, Log, TEXT("Product not owned"));
        }
    });

    UBillingCPPLibrary::IsProductPurchased(ProductId, OnResult);
}