Overview of one-time products

Some features described below are currently available only in an Early Access Program (EAP). These features are available "as is" and might have limited support. To access the EAP feature submit a request using the One-time products EAP Interest Form .

Play is introducing changes in the way that one-time products (earlier referred to as in-app products ) are defined and managed in Play. One-time products can include items like virtual goods (such as game levels, gems, coins or potions) and premium services within your app on Google Play. As before, when using Google Play's billing system , you can continue to offer one-time products that charge users on a one-time basis.

We are now aligning the taxonomy of our in-app product catalogs, bringing the same structure we previously introduced in subscriptions to one-time products, providing greater flexibility in how you sell products, and reducing the complexity of managing them. After migrating your products to the one-time product object model , you can set up different ways of selling the same one-time product by attaching offers.

The object model separates what is being sold from how it’s being sold, allowing for the same entitlement to have multiple price points, and different ways to be marketed to users. This change also introduces a three level hierarchy, similar to how subscriptions already work:

  • One-time product: A product object defines what the user is buying.
  • Purchase option: A purchase option defines how the entitlement is granted to the user, its price, and where (region) the product will be available. A single product can have multiple purchase options, which can represent different prices in different regions.
  • Offer: Offers can affect the price of the purchase option they are linked to, and can be used to model discounts or a pre-order. A single purchase option can have multiple offers.

The image below shows how products object type is structured:

With this change, we are also introducing new ways and promotions for selling your one-time products:

Buy User acquires the entitlement of the product.
Rent User can access the product for a fixed period of time.
Pre-order offer User can pre-order an item in advance of the item release. Pre-order offers are supported only for the buy purchase option.
Discount offer User can acquire the entitlement for a reduced price.

Note:A product should have at least one purchase option. In other words, you can’t create a product without a purchase option.

Workflow changes

Play is introducing the following changes:

  • Regional availability: You can choose the regions where your product is available, including regions where your app is yet to be published. Each purchase option and offer can be purchased by users in the countries where you have configured the product as available.
  • Regional pricing: You can specify prices for each region where the purchase option is available. You can also select multiple (or all) regions, provide a single price in a currency of your choosing and Play will do a one-off currency conversion to all the selected regions. You can update prices when desired. Currency conversion rules follow the same logic as today and you can see more details on that here . Find more details on price charming and its implications on your prices here .
  • Price changes: You can apply price changes at the purchase options level. If there are any offers associated with the purchase option, then the offer price will automatically change based on the new price. The default price (available for in-app products) is no longer supported.

In the event of new regions being made available on Play, only purchase options will reflect in those new regions. However, pre-orders and discounted offers will not be enabled in those regions by default.

Supported countries and regions

The one-time product model will be available in all countries and regions where users can make purchases through Play .

Create a one-time product

To create a one-time product:

  1. Open Play Console .
  2. Go to the One-time products page ( Monetize with Play> Products> One-time products)
  3. Click Create one-time product.
  4. In the Create one-time productpage, enter the following one-time product details:
    • Product ID
    • (Optional) Tags
    • Name
    • Description
    • (Optional) Add an Icon image
  5. In the Tax, compliance, and programs, configure the tax and compliance settings.
  6. Click Next.
  7. In the Purchase optionsection, enter the following details:
    • Enter Purchase Option ID.
    • Select a Purchase type (Buy or Rent). If you select Rent, you must also set the Rental periodand optionally set the Expiration period.
    • (Optional) Enter Tags
    • (Optional) Click Advanced optionsto view and set the advanced configuration options:
      1. Select Quantities and limits. If selected, users can buy more than one item of this product in a single transaction.
      2. Specify if the one-time product is a digital content or a service. Select Digital contentor Service.
  8. Configure the regional availability and pricing. By default, the one-time product will be available in all the regions. In the Availability and pricingsection :
    • To specify the regions in which the product will not be available:
      1. Click Edit availability and access, and then select Set to unavailable.
      2. Select the regions in which the product should be unavailable, and then click Set to unavailable.
    • To allow a pre-order offer for selected regions (you can configure a pre-order offer only for the Buypurchase option):
      1. Click Edit availability and access, and then select Set to available and allow users to pre-order.
      2. Select the regions in which the pre-order offer should be available, and then click Set to available for pre-order only.

The following image shows the section for configuring a pre-order offer.

Note: By setting pre-order availability for selected regions, you are only specifying that the regions can have a pre-order offer. However, you must also add a pre-order offer for it to be available in the regions.

  • To set different prices for different regions, click on the edit icon in the Pricecolumn for a region, and then set the price for the region. To do a bulk setting of the price for multiple regions:
    1. Click Set prices> Bulk edit pricing.
    2. Select the regions for which you need to set the price, and then click Continue.This opens the price setting dialog.
    3. Set a price and then select a currency.
    4. Click Apply.
    5. Click Continue.

9. Click Activate.

This creates the one-time product, and the product will be listed in the One-time productspage.

Edit a one-time product

To edit a one-time product:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products).
  3. Click the right arrow for the one-time product that you want to edit. This opens the Edit one-time productpage.
  4. Click Edit one-time product detailsand then update the details as required.
  5. Click Save changes.

Product purchase options

The object model lets you define how a user can acquire the one-time product through a product purchase option. Your existing one-time products will be automatically migrated to the one-time products object model. For more information, see migration in app product . The object model also offers enhanced features such as regional pricing and availability , that provide greater flexibility for selling your one-time products.

Note:A one-time product requires at least one purchase option to be set and it can have up to 100 purchase options and offers associated with it.

Purchase option states, availability, and pricing

In the Google Play Console, you can set the state, regional availability, and prices of a purchase option.

Purchase option states

State Description How to set the State?
Draft

The purchase option is saved in Play and you can delete it if you don’t need it.

Purchase options in this state aren’t returned by the Play Billing Library (PBL).

When you create and save a purchase option, but haven’t activated it, the purchase option will be the Draftstate. For more information, see Create a purchase option .
Active

The purchase option is available for your one-time product.

Purchase options in this state are returned by the PBL.

When you create, save, and activate a purchase option, the purchase option will be in the Activestate. For more information, see Create a purchase option .
Inactive

The purchase option is disabled for your one-time product.

Purchase options in this state aren’t returned by the PBL.

When you deactivate a purchase option, it will be in the Inactivestate. For more information, see Deactivate a purchase option .

To view the purchase option states:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that you want to view the details. This opens the Edit one-time productpage. The Purchase options and offers section lists all the purchase options along with their status.

The following image shows the various states of purchase options.

Purchase option availability

The availability of a purchase option specifies its regional availability and its availability for a pre-order offer.

Availability

Description

How to set the availability?

Available

The purchase option is available in the specified regions.

By default, a purchase option is available in all the regions.

Unavailable

The purchase option isn’t available in the specified regions.

For more information, see Create a purchase option .

Available and allow users to pre-order

The purchase option is available for pre-order in the specified regions.

For more information, see Create a purchase option .

Note:If you do not specify any new countries or regions, by default your product won’t be available in those countries or regions, and you’ll need to manually specify the availability in those regions.

Purchase option pricing

The one-time product object model provides flexibility in setting prices, allowing you to set different prices for various regions. For instance, a single purchase option can be priced at $2 in Canada and $3 in the United States.

For instructions on how to set prices for a purchase option, see step 7 in Create a one-time product .

The following are some of the pricing behaviors:

  • You can configure the price that needs to be applied for any new country or region where the buyer support is introduced.

To configure the price for the new country or region, do the following:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that you want to edit. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. In the Purchase options and offerssection, click the right arrow for the purchase option for which you want to configure the new country or region price. This opens the Edit purchase optionpage.
  5. In the page, scroll to the bottom of the page, and click the New countries/regionsmenu as shown in the following image:

  1. Edit the price for USD and EUR regions, and save the changes.
  2. Click Save.
  • For a region where you haven't specified the price, Play performed a one-time currency conversion and has set the price. The final price for the region was calculated based on the default price, applicable taxes, and the local pricing patterns. For more information on the currency conversion rules, see Supported locations for distribution to Google Play users .

Buy purchase option

A buypurchase option represents a standard purchase of the one-time product. If you are using Play Billing Library version 7 or older for your purchase flows, you must mark at least one "buy" purchase option as backwards compatible. The first buy purchase option that you create is automatically marked as backwards compatible.

Note: Only the buy purchase options can be marked as backwards compatible.

Rent purchase option

A purchase option with the renttype grants the user access to the item for a set duration of time.

When setting up a rental product, you need to define the rental period and can set the expiration period. The rental period is the amount of time the user will have access to the product and the expiration period represents the duration the user will have access to the product from the time the user starts consuming it. If specified, you can have the following possible values:

Rental period Allowed expiration periods
48 hours 24 hours
72 hours 24 hours or 48 hours
30 days 24 hours or 48 hours or 1 week
60 days 1 month

Note:

  • The values you chose will be surfaced to the users.
  • Play does not control the rental access to the product. You must ensure that the user has appropriate access.
  • Even if a user starts using the item on the last day, the full expiration period still applies. For example, if the expiration period is 48 hours and the rental period is 30 days, the user will have access to the one-time product until the 32nd day.

Create a purchase option

When you create a one-time product, you must configure at least one purchase option ( Buyor Rent). Subsequently, you can add additional purchase options and offers to your one-time products.

To add additional purchase options and offers:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that you want to edit. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. In the Purchase options and offerssection, click Add purchase option. This opens the Create purchase optionpage.
  5. Create the new purchase option. For instructions, see steps 6, 7, and 8 in Create a one-time product .

Activate and deactivate a purchase option

To activate a purchase option which is in Draftstate:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that has the purchase option that you want to activate. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. In the Purchase options and offerssection, click Activatefor the purchase option that you want to activate.

The following image shows the Activateoption available for a Draftpurchase option.

To deactivate a purchase option which is in Activestate:

The following image shows the Deactivateoption available for an Activepurchase option.

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that has the purchase option that you want to deactivate. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. In the Purchase options and offerssection, click the right arrow for the purchase option that you want to deactivate. This opens the Edit purchase optionpage.
  5. Click Deactivate. The following image shows the Deactivateoption available for an Activepurchase option.
  6. This displays the Deactivate purchase option?dialog.
  7. Click Deactivate.

Offers

The one-time product object model lets you provide offers linked to a specific purchase option. The offers can have regional pricing and availability , and tags, thereby providing you greater flexibility and control over your one-time product pricing. The following offer types are supported:

  • Pre-order offers
  • Discount offers

Pre-order offers

The pre-order features described below are currently available only in an Early Access Program (EAP). These features are available "as is" and might have limited support. To access the EAP feature submit a request using the One-time products EAP Interest Form .

Pre-order offer lets you set up a one-time product such that users can buy the product before it is released. When a user buys a pre-order, they agree to pay for the item when the product is released, unless the user or developer cancels the pre-order before the release date. On the release date, a user is charged and Play sends an email notification to them about the product release.

A pre-order offer can be configured only for new products in a region. In other words, a pre-order offer cannot be configured for products that are currently or have previously been set to Available for that region.

Note:Play’s content policies for one-time products require (among other things) that product metadata (name, description, icon) should be accurate, not be misleading, and not inappropriate.

Add a pre-order offer

Before you add a pre-order offer, you must first create a one-time product followed by a purchase option, and allow users to pre-order for the purchase option by setting the availability to Set to available and allow users to pre-order. For more information on how to set the availability, see step 7 in  Create a one-time product .

To add a pre-order offer:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product to which you want to add the pre-order offer. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. Click Add offer> Pre-orderfor the purchase option to which you want to add the pre-order offer. This opens the Add pre-orderpage. The following image shows how to add a pre-order offer.
  5. In the Add pre-orderpage, enter the following details:
    • Pre-order ID
    • (Optional) Add a discount. You can select either, None, Percentage, or Absolute discount.
    • (Optional) Tags
    • Start date and time (you must set the start date at least 3 days in the future)
    • End date and time (must be at least 24 hours after the start date)
    • Availability after pre-order. You can make the pre-order available after the pre-order period or specify a date and time when the pre-order will be available.
    • (Optional) Lower price guarantee
  6. Click Save. This saves the pre-order details.
  7. Click Activate. The pre-order offer is now available for the purchase option, and will be visible to the users on the specified date and time.

The following image shows a pre-order offer added for a purchase option.

Once the configured end date has passed, new users cannot acquire the pre-order. On the release date, users will be charged and notified by email that the product is released.

Note:For the pre-order to be available in the Play Billing Library’s version 8.0, both the purchase option and the pre-order should be in the Activestate.

Cancel a pre-order offer

A pre-order offer is cancelled in the following scenarios:

  • The user cancels the pre-order before the product release date.
  • The pre-order purchase transaction fails because of any issues with the user’s form of payment
  • You have cancelled the pre-order in Play Developer Console which in turn cancels all the pending transactions associated with the pre-order.

Canceling a pre-order will cancel all the pending orders associated with it. Users are notified with an email about this change, and it will be reflected as ‘cancelled’ on the users order history page within Play.

Note: If you notice any issue with a specific pre-order, you can cancel it by using the Order Management page.

Considerations for the pre-order offer

The following are a few considerations for a pre-order offer:

  • Lower price guarantee:

    If enabled, users who acquired a pre-order offer will be charged the lower price between the price at the time when the user placed the order and the price at the time of the release. For example, consider the following scenario:

    • A pre-order offer is valid from March 1, 2025, to May 31, 2025 and the pre-ordered item will be released on June 1, 2025. You choose to change the pre-order price every month: $10 for March, $5 for April, and $7 for May. 

    • A user has pre-ordered in March (at $10).

    In this scenario, the user will be charged $7 at the time of release on June 1, 2025. This is because the final purchase price will be the lowest of the pre-order price ($10) and the pre-order price at the time of the release ($7).

  • Release Date: Updates to this field trigger an email notification to all existing users when there's a change for the release date in the user’s local timezone. The new release date will also appear on the transaction details page found in the user’s history page. Once a release date has been set, it cannot be changed to an earlier date. It can only be pushed forward to a future date which can be at a maximum of 365 days from the pre-order start date.
  • Name and description: Play recommends to update these properties only if there are no material changes to the product (for example, non-material typos). If you need to make changes to the product, you should cancel all the pre-orders associated with it before proceeding with the changes.
  • Regional Availability:
    • You cannot make modifications to the pre-orders configured for a purchase option during the last 3 days before the pre-order release date.
    • Removing a country from an active pre-order results in all orders in that region being canceled 2 days before the release date. For example:
      • IIf a pre-order release date for region X is August 1, 2025, and you remove region X for the pre-order on July 15, 2025.
      • Subsequently, on July 20, 2025, you enable region X for the pre-order, the pre-order will be released on August 1, 2025.
      • However, if you don’t re-enable region X for the pre-order, the pre-order for region X is cancelled on July 29, 2025 (2 days before the release date).
    • If a pre-order has been released for a region, you can’t create another pre-order for the same one-time product for that region.
  • Reporting: Pre-order transactions are completed when Play charges the user. Therefore, they will appear in the Estimated Sales Report, Earning Report once the pre-order is released. On the Order Managementpage, the pre-order orders are marked with the status Payment Pending.
  • Other considerations:
    • The pre-order becomes immutable 3 days before the release date.
    • The release date can only be moved forward.
    • Once the start date has passed, you cannot modify it.
    • The end date has to be at least 1 day after the start date (the minimum duration for a pre-order is 1 day).
    • The end date cannot be after the release date, and the end date can’t be changed to an earlier date if the pre-order is live.
    • Increasing the price applies only to new pre-order purchases. In other words, a pre-order price increase cannot be applied to past pre-order purchases.
    • Decreasing the price may affect existing orders through the lower price guarantee, if applicable.
    • Once a product has been made available to buy, it cannot be sold as a pre-order
    • There can be only one active or fulfilled pre-order offer per region
    • For now, only one running pre-order offer can be associated with a product
    • All items that are ordered via pre-order in the EEA and UK will be treated as having a right of withdrawal. For purchases in these countries, refund requests will be honored from the day the pre-order is released.
    • If you have activated a purchase option without any pre-order offer(s), you can’t create a pre-order offer for that purchase option. You must create a new one-time product followed by a purchase option, and then add pre-order offer(s) to the new purchase option.

Discount offers

Discount offers allow you to sell a one-time product at a reduced price. Discounts can be configured as either a percentage off the purchase option price or a fixed monetary amount. You can set a start and end time for discount offers. In some cases, if Play has historical pricing data, discount offers may show a strikethrough price in the buy flow.

The offer is applied on the price of the purchase option in a given region. For example, if the price of the purchase option in the is $9.99, the price after a 50% discount offer in the same region will be $4.99. You can create offers for both buyand rentpurchase options.

Note:

  • For digital contentin the following countries buyers will be shown only the discounted price (no mention of the offer) in the purchase cart: Belgium, Croatia, Czech Republic, Denmark, Estonia, France, Greece, Latvia, Poland, Sweden.
  • For digital servicesin the following countries buyers will be shown only the discounted price (no mention of the offer) in the purchase cart: Belgium, Croatia, Czech Republic, Denmark, France, Greece, Hungary, Latvia, The Netherlands, Poland, Sweden.

Add a discount offer

To add a discount offer:

  1. Open Play Console .
  2. Go to the One-time productspage ( Monetize with Play> Products> One-time products)
  3. Click the right arrow for the one-time product that you want to edit. This opens the Edit one-time productpage that lists all the purchase options and offers configured for the one-time product.
  4. In the Purchase options and offerssection, click Add offerfor the purchase option for which you want to add the discount offer.
  5. Click Discount. This opens the Add discountpage.
  6. Enter the following details:
    • Enter the Offer ID
    • Select Offer Type (Absolute discount or Percentage)
    • Specify Start date and time
    • Specify End date and time. You can specify if you want to run the offer indefinitely, or end at a specified date and time.
    • (Optional) Enter Tags
    • (Optional) Specify the Purchase limit. Select this option and enter the maximum number of offers a user can purchase.
  7. Configure the regional availability and discount. In the Offer availability and pricingsection:
    • To specify the regions in which the offer will not be available:
      • Click Edit offer availability, and then select Set to unavailable.
      • Select the regions in which the offer should be unavailable, and then click Set to unavailable.
    • Click Set discount, and select the regions for which you want to set the discount.
    • Enter the discount as a percentage or absolute value as configured in the Offer Type, and then click Apply.
  8. Click Save.
  9. Click Activate. After this, the discount offer will be displayed in the Purchase options and offerssection as shown in the following image.

Migration of in-app products

Google Play supports migration of your existing in-app products. The migration process varies depending on how you currently manage your in-app product catalog. There are three distinct migration scenarios:

  • Catalog managed onlythrough the Play Console
  • Catalog managed using boththe inappproducts service and the Play Console
  • Catalog managed onlythrough the inappproducts service

Catalog managed only through the Play Console

If you have managed your catalog only through the Play Console UI and never used the inappproducts service, all your existing in-app products are automatically migrated to the one-time product object model.

Catalog managed using both the inappproducts service and the Play Console

At any point in time, if you have used the inappproducts service to manage your catalog, your existing in-app products aren’t automatically migrated. You can choose to migrate either by using the new onetimeproducts service or using the Play Console.

If you want to use only the onetimeproducts service for migration, you can jump to the Catalog managed only through the inappproducts service section. However, if you want to use the Play Console for migration, continue reading this section.

The one-time product or purchase option migration in the Play Console works as follows:

  • When creating a new product- The product is created in the one-time product object model. So there is no need for migration.
  • When modifying an existing product- The product is not automatically migrated.
    • Simple edits to metadata like the product name don't migrate the product.
    • Edits to other metadata such as the price aren’t allowed until you migrate. You must use the Play Console to manually migrate. To migrate:

i. When you edit a one-time product or a purchase option, the Play Console displays a prompt to migrate similar to the following image:

ii. Click Review migration. A dialog to start the migration process is shown similar to the following image:

iii. Select the options to migrate, and then click Start migration.

Catalog managed only through the inappproducts service

If you use only the inappproducts service to manage your catalog, you can continue to use the service for managing your existing in-app products. While Google Play maintains backward compatibility for in-app products created with the inappproducts service, it’s recommended to migrate them to the new one-time product model. Migration is necessary to take advantage of all new features of the model.

You can migrate by sending an update request through the new onetimeproducts service. As part of the migration, you also need to convert your existing inappproducts service calls to the onetimeproducts service calls. You have the flexibility to migrate products individually or the entire catalog at once.

Note:

  • After a product is migrated to the one-time product object model, it can’t be accessed through the inappproducts service.
  • If you are using the inappproducts service to create a new one-time product, the new product isn't migrated.

Backwards compatible purchase option

After migration to one-time products, all your in-app products previously marked as inactive in the Play Console will display as "Inactive: Visible in Play Billing Library" as shown in the following image:

If you don’t want these products to be returned by the PBL, you must activate the purchase option again, and then deactivate it.

Was this helpful?

How can we improve it?
Search
Clear search
Close search
Google apps
Main menu
7818918449565270210
true
Search Help Center
true
true
true
true
true
92637
false
false
false
false
Create a Mobile Website
View Site in Mobile | Classic
Share by: