API Reference

Documentation Unreal Engine API Reference

Complete reference for every function, delegate, async action, struct, and enum in RevenueCat Bridge.


Everything lives on URevenueCatSubsystem, a GameInstanceSubsystem. One instance per game session, accessible from anywhere.
In C++:
URevenueCatSubsystem* RC = GetGameInstance()->GetSubsystem<URevenueCatSubsystem>();
In Blueprints: search for "RevenueCat" in the action palette. All functions are in the RevenueCat category.

Project Settings

Location: Project Settings > Plugins > RevenueCat
These are stored in URevenueCatSettings (a DeveloperSettings subclass) and saved to DefaultGame.ini.
SettingTypeDescription
AndroidApiKeyFStringRevenueCat public API key for Android
IosApiKeyFStringRevenueCat public API key for iOS
bEnableDebugLogsboolVerbose SDK logging. Turn on during development, turn off before shipping.

Functions

SDK Lifecycle

FunctionReturnsDescription
ConfigureSDK(ApiKey)voidInitialize the SDK with an API key. Called automatically on startup using the key from Project Settings. You only need to call this manually if you want to override the key at runtime.
IsConfigured()boolWhether the SDK has been configured.

Offerings

FunctionReturnsDescription
FetchOfferings()voidFetch available offerings from RevenueCat. Results come back through OnOfferingsFetched.
GetCachedOfferings()TArray<FRevenueCatOffering>Returns offerings from the last FetchOfferings call. Empty if you haven't fetched yet.
GetCurrentOffering(OutOffering)boolGets the offering marked "current" in the dashboard. Returns false if nothing is cached.
FindPackageByID(PackageID, OutPackage)boolFind a package by its RevenueCat PackageID (e.g. "$rc_monthly"). Searches all cached offerings.
FindPackageByProductID(ProductID, OutPackage)boolFind a package by the store product ID (e.g. "com.yourapp.monthly_sub"). Searches all cached offerings.

Purchases

FunctionReturnsDescription
PurchasePackage(Package)voidTrigger the native purchase flow for a package. Results come back through OnPurchaseCompleted.
RestorePurchases()voidRestore previous purchases (e.g. after reinstall). Results through OnPurchasesRestored.
SyncPurchases()voidForce-sync pending receipts with RevenueCat servers. Results through OnCustomerInfoUpdated.

Customer Info

FunctionReturnsDescription
FetchCustomerInfo()voidFetch the latest customer info from RevenueCat. Results through OnCustomerInfoUpdated.
GetCachedCustomerInfo()FRevenueCatCustomerInfoReturns cached customer info from the last fetch.
IsEntitlementActive(EntitlementID)boolCheck if a specific entitlement is active. Uses cached data - call FetchCustomerInfo() first if you need fresh data.

User Identity

FunctionReturnsDescription
LogIn(AppUserID)voidIdentify a user with a custom ID. Links purchases to this ID across devices. Results through OnCustomerInfoUpdated.
LogOut()voidRevert to an anonymous RevenueCat ID. Results through OnCustomerInfoUpdated.
GetAppUserID()FStringGet the current RevenueCat App User ID (anonymous IDs start with $RCAnonymousID:).
IsAnonymous()boolWhether the current user is anonymous.

Subscriber Attributes

FunctionDescription
SetFirebaseAppInstanceId(AppInstanceId)Set Firebase App Instance ID for RevenueCat's Firebase integration. This plugin does not depend on Firebase - get the ID from your own Firebase setup.
SetAttributes(Attributes)Set arbitrary key-value pairs as subscriber attributes. Takes a TMap<FString, FString>.
SetEmail(Email)Set subscriber's email (reserved attribute).
SetDisplayName(DisplayName)Set subscriber's display name (reserved attribute).
SetPhoneNumber(PhoneNumber)Set subscriber's phone number (reserved attribute).

Attribution

FunctionDescription
SetMediaSource(MediaSource)Set media source (e.g. "facebook_ads").
SetCampaign(Campaign)Set campaign name.
SetAdGroup(AdGroup)Set ad group.
SetCreative(Creative)Set creative name.
SetKeyword(Keyword)Set keyword.
CollectDeviceIdentifiers()Auto-collect GAID (Android) / IDFA (iOS) and send to RevenueCat. Called automatically on SDK initialization — you only need to call this manually if you want to refresh identifiers later.
All attribution functions are fire-and-forget. No callback. Verify the values in the RevenueCat dashboard under the customer's attributes.

Subscription Management

FunctionDescription
ShowManageSubscriptions()Open the platform's subscription management page (Play Store or App Store). No-op on unsupported platforms.

Events (Delegates)

Bind these in Blueprints via the Assign node from the subsystem's Events section, or in C++:
RC->OnPurchaseCompleted.AddDynamic(this, &UMyClass::HandlePurchase);
DelegateParametersWhen It Fires
OnConfigured(none)SDK initialization completed.
OnOfferingsFetchedTArray<FRevenueCatOffering> OfferingsOfferings fetched from RevenueCat.
OnPurchaseCompletedERevenueCatPurchaseResult Result, FRevenueCatCustomerInfo CustomerInfoA purchase flow finished (success, cancel, error, or already owned).
OnPurchasesRestoredFRevenueCatCustomerInfo CustomerInfoRestore purchases completed.
OnCustomerInfoUpdatedFRevenueCatCustomerInfo CustomerInfoCustomer info changed (login, logout, fetch, or automatic SDK update).
OnErrorFRevenueCatError ErrorAny error occurred. Check ErrorCode and ErrorMessage.

Async Blueprint Actions

These latent nodes derive from UBlueprintAsyncActionBase and provide output execution pins (OnSuccess / OnFailure / OnCancelled) directly in the Blueprint graph — no manual delegate binding needed.
Search for the node name in the Blueprint action palette (they are in the RevenueCat category).

Fetch Offerings (Async)

PinTypeDescription
OnSuccessTArray<FRevenueCatOffering>Fired with the fetched offerings
OnFailureFRevenueCatErrorFired on error

Purchase Package (Async)

PinTypeDescription
Package (input)FRevenueCatPackageThe package to purchase
OnSuccessFRevenueCatCustomerInfoFired when purchase succeeds or is already owned
OnCancelledFired when the user cancels the purchase flow
OnFailureFRevenueCatErrorFired on error or pending purchase

Restore Purchases (Async)

PinTypeDescription
OnSuccessFRevenueCatCustomerInfoFired with restored customer info
OnFailureFRevenueCatErrorFired on error

Sync Purchases (Async)

PinTypeDescription
OnSuccessFRevenueCatCustomerInfoFired with synced customer info
OnFailureFRevenueCatErrorFired on error

Fetch Customer Info (Async)

PinTypeDescription
OnSuccessFRevenueCatCustomerInfoFired with the latest customer info
OnFailureFRevenueCatErrorFired on error

Log In (Async)

PinTypeDescription
AppUserID (input)FStringThe custom user ID to log in with
OnSuccessFRevenueCatCustomerInfoFired with the identified customer info
OnFailureFRevenueCatErrorFired on error

Log Out (Async)

PinTypeDescription
OnSuccessFRevenueCatCustomerInfoFired with the anonymous customer info
OnFailureFRevenueCatErrorFired on error
Note: These async actions bind to the subsystem's existing delegates internally. Avoid running multiple instances of the same async action type simultaneously.

Data Types

Enums

ERevenueCatPurchaseResult

ValueMeaning
SuccessPurchase completed.
UserCancelledUser dismissed the purchase dialog.
ErrorPurchase failed. Check OnError for details.
AlreadyOwnedUser already owns this product.
PendingPurchasePurchase is pending (e.g. parental approval, slow payment method).

ERevenueCatProductType

ValueMeaning
SubscriptionAuto-renewing subscription.
NonConsumableOne-time purchase, permanent.
ConsumableConsumable (can be bought again).
UnknownType not determined.

ERevenueCatPeriodType

ValueMeaning
NormalStandard billing period.
IntroIntroductory offer period.
TrialFree trial period.

ERevenueCatStore

ValueMeaning
AppStoreApple App Store
PlayStoreGoogle Play Store
AmazonAmazon Appstore
StripeStripe (web)
PromotionalGranted via RevenueCat dashboard
UnknownUnknown store

Structs

FRevenueCatProduct

Represents a single store product (a subscription, one-time purchase, etc.).
FieldTypeDescription
ProductIDFStringStore product identifier (e.g. "com.yourapp.monthly")
TitleFStringLocalized product title
DescriptionFStringLocalized product description
PriceStringFStringFormatted price with currency symbol (e.g. "$4.99")
PriceMicrosint64Price in micros (4990000 = $4.99)
CurrencyCodeFStringISO 4217 currency code (e.g. "USD")
ProductTypeERevenueCatProductTypeSubscription, NonConsumable, Consumable, or Unknown
SubscriptionPeriodFStringISO 8601 duration (e.g. "P1M" for monthly, "P1Y" for annual). Empty for non-subscriptions.
IntroPriceStringFStringFormatted intro price (e.g. "$0.99")
IntroPriceMicrosint64Intro price in micros
IntroPricePeriodFStringISO 8601 intro period (e.g. "P1W")
IntroPriceCyclesint32Number of intro billing cycles
FreeTrialPeriodFStringISO 8601 trial period (e.g. "P7D" for 7 days). Empty if no trial.

FRevenueCatPackage

A package is a product wrapped in an offering context. This is what you pass to PurchasePackage.
FieldTypeDescription
PackageIDFStringRevenueCat package identifier (e.g. "$rc_monthly")
PackageTypeFStringMONTHLY, ANNUAL, LIFETIME, WEEKLY, CUSTOM, etc.
ProductFRevenueCatProductThe store product in this package

FRevenueCatOffering

A group of packages. You configure these in the RevenueCat dashboard.
FieldTypeDescription
OfferingIDFStringRevenueCat offering identifier
DisplayNameFStringDescription you set in the dashboard
bIsCurrentboolWhether this is the "current" offering
PackagesTArray<FRevenueCatPackage>Available packages in this offering

FRevenueCatEntitlement

Represents access to a feature or content. This is what you check to gate premium content.
FieldTypeDescription
EntitlementIDFStringThe entitlement identifier (e.g. "pro")
bIsActiveboolWhether this entitlement is currently active
ProductIDFStringProduct that unlocked this entitlement
ExpirationDateFStringISO 8601 expiration date. Empty if it's a lifetime purchase.
bWillRenewboolWhether the subscription will auto-renew
PeriodTypeERevenueCatPeriodTypeNormal, Intro, or Trial
StoreERevenueCatStoreWhich store the purchase came from
bIsSandboxboolWhether this was purchased in sandbox/test mode
PurchaseDateFStringISO 8601 original purchase date
LatestPurchaseDateFStringISO 8601 latest purchase/renewal date
UnsubscribeDetectedAtFStringISO 8601 date unsubscribe was detected. Empty if still subscribed.
BillingIssueDetectedAtFStringISO 8601 date a billing issue was detected. Empty if no issues.

FRevenueCatCustomerInfo

The full picture of a customer's purchases and subscriptions.
FieldTypeDescription
OriginalAppUserIDFStringThe original RevenueCat App User ID
ActiveEntitlementsTArray<FRevenueCatEntitlement>Currently active entitlements
AllPurchasedProductIDsTArray<FString>Every product ID ever purchased
FirstSeenFStringISO 8601 date the user was first seen
ManagementURLFStringURL to manage subscriptions. Can be empty.
ActiveSubscriptionsTArray<FString>Product IDs with active subscriptions

FRevenueCatError

FieldTypeDescription
ErrorCodeint32RevenueCat error code
ErrorMessageFStringHuman-readable error message

Editor Stubs (Win64)

On non-mobile platforms (Win64 editor), every function in the subsystem compiles and runs. Instead of calling the native SDK (which doesn't exist on desktop), it logs a message like:
[RevenueCat] FetchOfferings stub — unsupported platform.
This means you can:
  • Build and iterate on your Blueprint purchase flow in the editor
  • Compile and test C++ code without a device
  • Run PIE without crashes
ConfigureSDK is the exception - it sets IsConfigured() = true and fires OnConfigured on stubs, so your initialization flow works in the editor. Other async operations (FetchOfferings, PurchasePackage, etc.) will not fire their callbacks on unsupported platforms.