Known Limitations
Updated: Oct 16, 2025
Meta Horizon Billing Compatibility SDK is generally compatible with the Google Play Billing Library version 7.0. In the latest release, there are known limitations regarding full compatibility with Google Play.
- Meta Horizon Billing Compatibility SDK is implemented in Kotlin and integration with this library will require Java Android apps to include kotlin-stdlib in the list of dependencies.
- Since version 1.0.0, querying purchases for subscriptions via
queryPurchasesAsync or queryPurchaseHistoryAsync does not yield purchases for subscriptions with one single term or period. As a workaround, you can make an extra call to queryPurchasesAsync with BillingClient.ProductType.INAPP to get purchases for subscriptions with one single term or period. - Only active subscriptions are returned and they are assumed to be “infinitely” recurring - that is, they are expected to recur until canceled.
- Re-purchasing a subscription that has only one billing period option (for example, monthly or annual) will not result in an
ITEM_ALREADY_OWNED error. The response will contain a success message but the user will not be charged again. - Replacement Mode for upgrading or downgrading a subscription is not supported. The ReplacementMode is defaulted to
WITH_TIME_PRORATION for all upgrades, and to DEFERRED for all downgrades.
- Only single-item checkout flows are supported. Any attempt to pass in multiple SKUs will return a BillingResult with
BillingResponseCode.FEATURE_NOT_SUPPORTED.
- There is no client-side acknowledgement of durables and subscriptions.
BillingClient.acknowledgePurchase() is a no-op
Purchase.orderId is not supported.Purchase.signature is not supported.
BillingClient.queryPurchaseHistoryAsync() provides only a partial view of the history. It will include the latest purchase per-SKU, but does not provide canceled subscriptions, or consumed consumables.
- Billing Configuration is not currently supported.
- Alternative Billing Only is not supported.
- External Offers are not supported.
- In App Messaging is not currently supported.
Other Known Gaps in Previous Releases
- 1.0.0
- Subscriptions with a single term, or period, are missing the necessary details about the billing cycle period.
- Subscriptions with Trial periods or introductory offers do not provide that information in the Pricing Phases. Only the “base” subscription period and price are returned.
- 1.1.0 and 1.1.0
- The
enableOneTimeProducts() method in the PendingPurchasesParams.Builder class had an unused parameter called config. This parameter was removed in version 1.1.1.