Back to the RevenueCat homepage
RevenueCat SDKGoogle Play Billing

Chapter 18: Alternative Billing Programs

Supporting Google's alternative billing programs from scratch, including User Choice Billing, Alternative Billing Only, External Offers, and External Payment Links, means implementing specific Play Billing Library APIs, handling regional eligibility requirements, and building specialized server-side flows for each program.

RevenueCat has limited support for alternative billing programs as of SDK 9.x. This chapter describes the current state.

Web Billing (RevenueCat Web)

RevenueCat's own web billing product allows you to sell subscriptions outside the Play Store via a web checkout flow. This is separate from Google's alternative billing programs. The RevenueCat SDK supports web purchases through Offering.webCheckoutURL and Package.webCheckoutURL:

kotlin
val pkg = offerings.current?.monthly
pkg?.webCheckoutURL?.let { url ->
    // Open RevenueCat's web checkout for this package
    startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url.toString())))
}

After a web purchase completes, the user can redeem it in-app through deep link handling. This is RevenueCat's proprietary alternative to Play Store billing, not Google's alternative billing programs.

Google's Alternative Billing Programs

For Google's alternative billing programs (User Choice Billing, Alternative Billing Only, External Offers, External Payment Links), RevenueCat does not currently expose dedicated SDK APIs. If your app participates in these programs, you would need to implement the Google Play Billing Library APIs for those flows directly alongside RevenueCat.

Using raw BillingClient APIs alongside the RevenueCat SDK requires care, the SDK owns the BillingClient instance. RevenueCat recommends setting purchasesAreCompletedBy(PurchasesAreCompletedBy.MY_APP) if you are managing some purchase flows yourself, so the SDK does not interfere with acknowledgement.

Check with RevenueCat Documentation

Alternative billing support evolves with each SDK version. Before implementing an alternative billing flow, check the current RevenueCat documentation and changelog for the most up-to-date guidance. What is unsupported in SDK 9.x may be supported in a later release.

Prefer building from scratch?

The Google Play Billing Handbook covers the same topics with raw BillingClient, Developer API, and RTDNs.

Related chapters

  • Chapter 6: The Purchase Flow

    awaitPurchase() handles the complete billing flow, verification, and acknowledgement internally.

    Learn more
  • Chapter 1: Understanding RevenueCat

    One SDK replaces three separate systems: BillingClient, Google Play Developer API, and RTDNs.

    Learn more
  • Chapter 5: Configuring the SDK

    A single configure() call replaces the entire connection lifecycle, reconnection, and sync logic.

    Learn more
Alternative Billing Programs | RevenueCat