Google Play's billing system is a service that enables you to sell digital products
and content in your Android app, whether you want to monetize through one-time
purchases or offer subscriptions to your services. Google Play offers a full set
of APIs for integration with both your Android app and your server backend that
unlock the familiarity and safety of Google Play purchases for your users.
| **Note:** Google Play's billing system is only for digital items. For physical goods and services, or other non-digital content, see the [Google Pay SDK](https://developers.google.com/pay/api/android/overview).

## Integration architecture

This section introduces the different functional modules that you can build and
the APIs and libraries available to simplify the process.
![Your Android app works with your developer backend and the Google
Play backend (through Google Play Services).](https://developer.android.com/static/images/google/play/billing/overview-arch.svg) **Figure 1.** Diagram of a typical Google Play billing integration.

You can integrate Google Play's billing system with your Android app using the [Play
Billing Library](https://developer.android.com/reference/com/android/billingclient/classes). This library
enables communication with the Google Play Services layer that provides the
localized product offering available to each user in your app, as well as
methods to handle other necessary user operations, like launching the purchase
flow and handling its outcome.

You should also integrate Google Play's billing system with your server backend to
create the necessary developer flows. This is essential to guarantee that your
purchase management and cross-platform entitlements are efficient and secure.
You can create this integration with the [Subscriptions and in-app purchases
API](https://developers.google.com/android-publisher#subscriptions) provided by
the Google Play Developer API. The backend integration also leverages some
Google Cloud platform tools.
![](https://developer.android.com/static/images/google/play/billing/dev-api.png) **Figure 2.** APIs and services provided by the Google Play Developer API.

## Terminology

This section lists and describes the high-level technologies and concepts that
you might encounter when integrating Google Play's billing system into your app.
Reference this list as you proceed through the integration guidance.

### Technologies

- [**Google Play**](https://play.google.com). An online store where users can download apps and other digital products.
- [**Google Play Console**](https://play.google.com/console). A platform that provides an interface where you can publish your app to Google Play. The Google Play Console also shows details about your app, including any products or content that you sell with Google Play.
- [**Google Cloud Console**](https://console.developers.google.com/). A platform that manages backend APIs, such as the Google Play Developer API.
- [**Google Play Billing Library**](https://developer.android.com/google/play/billing/integrate). An API that you can use to integrate Google Play's billing system into your app.
- [**Google Play Developer API**](https://developers.google.com/android-publisher/). A REST API that you can use to programmatically handle publishing and app management tasks.
- [**Cloud Pub/Sub**](https://cloud.google.com/pubsub/). A fully managed real-time messaging service that enables you to send and receive messages between independent applications. Google Play uses Cloud Pub/Sub to deliver Real-time developer notifications. To use [Cloud
  Pub/Sub](https://cloud.google.com/pubsub/), you must have a project on the [Google Cloud Platform (GCP)](https://cloud.google.com/) with the Cloud Pub/Sub API enabled. If you aren't familiar with GCP and Cloud Pub/Sub, see the [Quickstart guide](https://cloud.google.com/pubsub/docs/quickstart-console).
- [**Real-time developer notifications**](https://developer.android.com/google/play/billing/getting-ready#configure-rtdn). A mechanism that lets you monitor state changes for Google Play-managed subscriptions in real time by leveraging [Cloud
  Pub/Sub](https://cloud.google.com/pubsub).
- **Secure backend server**. As part of integrating Google Play's billing system into your app, we strongly recommend that you use a secure backend server to implement billing-related tasks such as purchase verification, subscription-specific features, and handling Real-time developer notifications.
- **Google Play Store app**. An app that manages all operations related to Google Play. All requests made by your app are handled by the Google Play Store app.

### Concepts

- **Flow** . A flow shows the typical steps involved in a billing-related task. For example, a *purchase flow* outlines the steps involved when a user purchases your product. A *subscription flow* might show how a subscription transitions between states.
- **Entitlement** . When a user purchases an in-app product, they are then *entitled* to that product within your app. For one-time products, this means that the user should now have permanent access to the product. For subscriptions, this means that the user should have access while the subscription is active.
- **Product ID**. The ID of a specific product type.
- **Purchase token**. A string that represents a buyer's entitlement to a product on Google Play. It indicates that a Google user has paid for a specific product.
- **Order ID** . A string that represents a financial transaction on Google Play. An order ID is created every time a financial transaction occurs. This string is included in a receipt that is emailed to the buyer. You can use the order ID to manage refunds in the **Order Management** section of the Google Play Console. Order IDs are also used in sales and payout reports.

## Next steps

To begin integrating Google Play's billing system with your app and server backend,
see the [setup guide](https://developer.android.com/google/play/billing/getting-ready).