Reminder: By Aug 31, 2025, all new apps and updates to existing apps must use Billing Library version 7 or newer. If you need more time to update your app, you can request an extension until Nov 1, 2025. Learn about Play Billing Library version deprecation.
[null,null,["最后更新时间 (UTC):2025-07-27。"],[],[],null,["# Alternative billing APIs\n\n| **Note:** Manual reporting of alternative billing only and user choice billing is being sunset. Please find more details about migration deadlines [here](https://support.google.com/googleplay/android-developer/answer/13821247). To learn about what transactions need to be migrated and how to migrate see [Migrating from manual reporting](/google/play/billing/alternative/backend#migrating-manual) for more information.\n\nEligible developers are able to offer to users in certain countries an\nalternative billing system in their app and report resulting transactions to\nGoogle. Depending on where you distribute your app and eligibility, there are\ntwo versions of alternative billing that an app can build:\n\n- [**Alternative billing with user choice**](https://support.google.com/googleplay/android-developer/answer/13821247): Your app offers an alternative billing alongside Google Play's billing system.\n- [**Alternative billing only (without user choice)**](https://support.google.com/googleplay/android-developer/answer/12348241): Your app offers an alternative billing system without the presence of Google Play Billing as an option.\n\nThis guide addresses the APIs that need to be used for either offering. You\nshould review the [program pages](https://support.google.com/googleplay/android-developer/answer/13821247) and enroll in relevant programs before\nusing these APIs.\n\nGlossary of terms\n-----------------\n\nTerm conventions followed by this guide:\n\n- **Alternative billing APIs**: APIs used to display any applicable screens to users and enable developers to report transactions completed on the developer's alternative billing system.\n- **Alternative billing system**: A developer's alternative billing system which may be offered alongside Google Play's billing system or on its own (subject to eligibility requirements).\n- **External transaction**: A transaction that occurs outside of Google Play's billing system.\n- **External transaction token**: A token provided to the developer through the Play Billing Library for the developer to use when the user completes an alternative billing system. This token is used to notify Google Play of a successful purchase.\n- **External transaction ID**: A unique identifier generated by the developer to identify a transaction.\n\nOffering alternative billing with User Choice\n---------------------------------------------\n\nThis section describes how to offer your users alternative billing with the\nchoice of using Google Play's billing system. Before using these APIs, ensure\nthe following:\n\n- Review the eligibility requirements for the relevant program(s) and complete the onboarding steps outlined in [Understanding user choice billing on\n Google Play](https://support.google.com/googleplay/android-developer/answer/13821247).\n- Integrate [Play Billing Library\n 5.2](/google/play/billing/release-notes) or higher.\n\nThe rest of the Google Play Billing integration recommended modules are the same\nas developers already would have for their current [integration](/distribute/play-billing).\n\nAdditionally, we recommend having a [Google Play Developer API integration\nsetup](https://developers.google.com/android-publisher/getting_started) ready because the backend integration will leverage it.\n\n### Configuring in Play Console\n\n| **Note:** If you are not yet ready to integrate with the alternative billing APIs, please continue to make changes to your enrollment status through the [enrollment form instead](https://support.google.com/googleplay/android-developer/contact/alternative_billing_edit_package) of through Play Console.\n\nDevelopers that have completed enrollment for the corresponding [alternative\nbilling with user choice program](https://support.google.com/googleplay/android-developer/answer/13821247) and are integrated with alternative billing\nAPIs can manage their alternative billing settings through [Play Console](https://play.google.com/console/developers):\n\n- For each of your eligible apps, you can choose whether to offer an alternative billing system or not.\n- Upload payment method logos in accordance with the [guidelines](#image-asset), following all of the format specifications. Images that do not conform to these guidelines will not be displayed for your alternative billing system on the user choice screen. (Note: Including payment method logos is optional, though highly recommended.)\n- If you offer subscriptions, provide the required subscription management link.\n\nMock UI, intended for illustrative purposes, subject to change.\n\n### User experience\n\n| **Note:** If you are offering user choice billing through alternative billing APIs, the user experience requirements will be met by integrating with and using the client-side APIs. You will not need to separately follow the interim user experience guidelines ([for South Korea](/google/play/billing/billing-choice), [for other eligible markets](/google/play/billing/user-choice)).\n\nThe client-side APIs enable the following functionality:\n\n- Google Play renders and manages the applicable information and user choice screens\n- If the user chooses to use Google Play's billing system, the billing flow continues using Google Play's billing standard interface.\n\n|----------------|------------------------|\n| Developer app. | Billing choice screen. |\n\nExample for illustrative purposes only.\n\n#### User choice screen\n\nThe user choice screen presents users with the option to use either the\ndeveloper's alternative billing system or Google Play's billing system.\n\n#### Anatomy of an alternative billing option\n\nThe alternative billing option on the user choice screen includes the following\nUI elements:\n\n1. App icon.\n2. App name.\n3. Image asset that includes payment methods offered by the developer.\n4. Additional indicator (*and more* UI element is not part of the image asset).\n\n### Image asset for payment methods\n\nThe single image asset is made up of multiple payment method cards and must\nfollow the specifications defined in these guidelines.\n\n|--------------|-----------------------------|\n| Dimensions | 192dp X 20dp |\n| Card spacing | 8dp |\n| File format | PNG, transparent background |\n\n### Payment method variations\n\nDevelopers can choose the number of available payment method icons they wish to\ninclude in the image asset, up to a maximum of 5.\n\nNo other images or text should be included in the image.\n\n### Card specifications\n\nThe payment method cards included in the image asset must follow the following\nguidelines for size, spacing, and style.\n\n|-----------------|----------------------------------------------------------------|\n| Card dimensions | 32dp X 20dp |\n| Inner padding | 3dp |\n| Outline | 1dp (inner stroke included in dimensions), Radius 2dp, #E0E0E0 |\n| Card background | Solid color (preferably white) |\n\n### Next steps\n\nTo begin integrating the alternative billing APIs with user choice, follow the\nin-depth guides for both [in-app integration](/google/play/billing/alternative/alternative-billing-with-user-choice-in-app) and [backend integration](/google/play/billing/alternative/backend).\n\nOffering alternative billing only\n---------------------------------\n\nThis section describes how to offer your users alternative billing without the\nchoice of using Google Play's billing system. Before using these APIs, ensure\nthe following:\n\n- Review the requirements and enroll in the alternative billing only program by following the instructions in [Offering an alternative billing system for\n users in the European Economic Area (EEA)](https://support.google.com/googleplay/android-developer/answer/12348241) for alternative billing.\n- Integrate [Play Billing Library 6.2.1](/google/play/billing/release-notes) or higher.\n\nWe recommend having a [Google Play Developer API integration setup](https://developers.google.com/android-publisher/getting_started) ready\nbecause the backend integration will leverage it.\n\n### Configuring in Play Console\n\n| **Note:** If you are not yet ready to integrate with the alternative billing APIs, please continue to make changes to your enrollment status through the [enrollment form](https://support.google.com/googleplay/android-developer/contact/alternative_billing_edit_package) instead of the Play Console.\n\nDevelopers that have completed enrollment and are integrated with alternative\nbilling APIs can manage their alternative billing settings through [Play\nConsole](https://play.google.com/console/developers):\n\n- For each of your eligible apps, opt in or out of offering an alternative billing only (without user choice) in each available country\n\nMock UI, intended for illustrative purposes, subject to change.\n\n### Information screen for users\n\n| **Note:** If you are offering alternative billing only through alternative billing APIs, the user experience requirements will be met by integrating with the client-side APIs. You will not need to separately follow the [interim user\n| experience guidelines](/google/play/billing/alt-billing).\n\nThe information screen helps users understand that only an alternative billing\nsystem is being offered within the eligible app. The information screen will be\nshown to users at the start of their first purchase in your app after\nalternative billing has been enabled. This message will not be displayed on\nsubsequent purchases made by the same user in your app on the same device. Note\nthat there may be times when the dialog is shown again to a user in situations\nsuch as if the user clears caches on their device.\n\n### Next steps\n\nTo begin integrating the alternative billing APIs, follow the in-depth guides\nfor both [in-app integration](/google/play/billing/alternative/alternative-billing-without-user-choice-in-app) and [backend integration](/google/play/billing/alternative/backend)."]]