Create a managed product

Using Google Play Billing, you can offer in-app products that charge users on a one-time basis, known as managed products. Managed products can include items like virtual goods (example: game levels or potions) and premium services within your app on Google Play.

Important: Google Play Developer Program Policies and transaction fees apply to all in-app products, including both managed products and subscriptions.


If you're in a supported location for merchant registration, you can use Google Play Billing.

If you’re in a supported location and want to start using Google Play Billing features in your apps, set up a payments profile and review the Google Play Billing API documentation.

After you create a managed product, it’s available for users running the latest version of the Google Play Store.

Required permissions

To offer a managed product, you need to declare the permission in your app’s APK manifest file. If you distribute your app globally, you can still publish apps that use permission in all countries.

Create managed products

Create a single managed product

Before creating a managed product, make sure to plan your product IDs carefully. Product IDs need to be unique for your app, and they can’t be changed or reused after they’ve been created.
  • Product IDs need to start with a lowercase letter or a number and must be composed of only lowercase letters (a-z), numbers (0-9), underscores (_), and periods (.)
  • Note: The product ID android.test is unavailable for use, along with all product IDs that start with android.test.

To create a managed product:

  1. Sign in to your Play Console.
  2. Select an app.
  3. On the left menu, click Store presence > In-app productsManaged products.
  4. Click Create Managed Product.
  5. Enter your product details.
    • Title: A short name of the item (up to 55 characters, but we recommend limiting titles to 25 characters to display properly in all contexts), like "Sleeping potion."
    • Description: A long description of the item (up to 80 characters), like “Instantly puts creatures to sleep."
    • Price: Enter a price in your local currency or select a pricing template.
  6. Next to “Status,” choose Active or Inactive.
    • To be available for purchase, a product needs to be active, and its app needs to be published.
    • If you’re using a test account, active items are available in unpublished apps. To learn more, go to our Android Developers site.
  7. Click Save.

Languages & translations

Managed products use the same default language as their app. To add translations in specific languages, select a managed product, and then click Add translationsLearn more about translating your app.

Create a batch of multiple managed products

To create multiple managed products at the same time, you can upload a CSV file that includes details about each of your products.
CSV files use commas (,) and semicolons (;) to separate data values. Commas separate primary data values, and semicolons separate subvalues.
When you’re creating a CSV file with managed products, specify the CSV syntax on the first row, followed by the product details on the next rows.
Important: Each item must appear entirely on a single line within the CSV file.

Upload a CSV file of managed products

  1. Sign in to your Play Console.
  2. Select an app.
  3. On the left menu, click Store presence > In-app products Managed products.
  4. Click Import/Export > Import managed products from CSV file.
    • To overwrite existing managed products in your product list, select the Overwrite existing products checkbox. This will overwrite existing products only if the value of a Product ID in the CSV file matches the Product ID of an existing managed product in the product list. Overwriting a product doesn't delete managed products that aren't included in the CSV.
  5. Click Browse files, and then select your CSV file.

Export a CSV file of existing managed products

If you’ve created managed products one at a time in the Play Console, exporting a CSV file can be a good way to start creating them using a CSV file instead.

  1. Sign in to your Play Console.
  2. Select an app.
  3. On the left menu, click Store presence > In-app productsManaged products.
  4. Click Import/Export > Export in-app products to CSV file.

View a CSV file example

Here’s an example of the CSV syntax to use and three examples of managed products:
  • The first example defines a title and description in two different languages (en_US and es_ES). A pricing template defines the item's price.
  • The second example doesn't use a pricing template. Instead, it specifies a price for the default country (US). The Play Console uses current exchange rates and locally relevant pricing patterns to automatically set the prices in all other countries where the app is distributed.
  • The third example also doesn't use a pricing template. The item's price is specified manually for each country where the app is distributed.

CSV syntax example

Product ID,Published State,Purchase Type,Auto Translate,Locale; Title; Description,Auto Fill Prices,Price,Pricing Template ID

Managed product examples

Example 1

basic_sleeping_potion,published,managed_by_android,false,en_US; Basic Sleeping Potion; Puts small creatures to sleep.; es_ES; Poción básica de dormir; Causa las criaturas pequeñas ir a dormir.,false,,4637138456024710495

Example 2

standard_sleeping_potion, published,managed_by_android,false,en_US; Standard Sleeping Potion; Puts all creatures to sleep for 2 minutes.,true, 1990000,

Example 3

invisibility_potion,published, managed_by_android,false,en_US; Invisibility Potion; Invisible to all enemies for 5 minutes.,false, US; 1990000; BR; 6990000; RU; 129000000; IN; 130000000; ID; 27000000000; MX; 37000000,

Data values for CSV files 

Each row in a CSV file of managed products can contain the following values, but at least one of these values is undefined in each row:  
Product ID

Setting this value in the CSV file has the same effect as entering a Product ID when creating a new managed product.

If you specify a Product ID assigned to an managed product that already exists in a product list, and you've checked the Overwrite existing products checkbox in the "Import In-app Products" dialog, the data for the existing managed product is overwritten with the values that you specify in the CSV file.

Publish State This value must be set to published or unpublished. This is the same as setting a managed product as Active or Inactive.
Purchase Type

This value must be set to managed_by_android.

Auto Translate

This value must be set to false because auto-translation of managed product details isn't supported.

If you want to provide translations of a managed product’s title and description, specify these translations explicitly within the Locale value.

Locale, Title, and Description

If you include only one locale for an item, you must specify your app's default locale and the item's default title and description:

app_default_locale; item_default_title; item_default_description;

When setting the Locale value, you can use any of the language codes that appear when adding translations of your store listing.

Note: When specifying the Title and Description values, use backslashes to escape the semicolon (\;) and backslash (\\) characters.

If you want to include translated versions of the item's title and description, you must list the default locale, title, and description, followed by the locales, titles, and descriptions for each translation. In the following example, the managed product uses en_US (United States English) as the default locale and es_ES (Spain Spanish) as a translation:

en_US; Invisibility Cloak; Makes you invisible.; es_ES; Capote Invisible; Se vuelven invisible.

Note: An app contains a single default language, but each managed product maintains its own list of translations. Even though the first locale in each item's Locale value must be the same throughout the CSV file, the other locales can differ from one item to another.

Auto Fill Prices, Country, and Price

You can set Auto Fill Prices to true or false. If a managed product uses a pricing template, you should set Auto Fill Prices to false, and you shouldn't set a value for the Price.

Note: When you specify an item's price in a CSV file, provide a price in micro-units, where 1,000,000 micro-units is equivalent to 1 unit of real currency.

Use auto-filled prices

The following sections describe how the value of Auto Fill Prices affects the syntax and meaning of the Country and Price values.

If you set Auto Fill Prices to true, you specify only the item's default price; you don't include a Country value.

For example, under the following conditions:

  • Your app's default locale is en_US.
  • An managed product's default, tax-exclusive price is $1.99.
  • You want the prices for other countries auto-filled.

You'd set the values of Auto Fill Prices and Price at the end of a row in the CSV file as follows: true,1990000,

Set your own price per country  

If you set Auto Fill Prices to false instead, you can specify a series of Country and Price values for all countries where you distribute your app, including the country corresponding to your app's default locale. Each Country value is the two-letter uppercase ISO country code that represents a country where your app is distributed.

Note: You must provide a country code and price for each country that your app targets. To view and edit the list of countries that your app targets, open your app's Pricing & distribution page.

Each Price value represents the cost of the item in micro-units of the currency used in that country.

For example, if you're offering your app for the following prices (all taxes included) in other countries:

  • R$6.99 in Brazil 
  • 129 ₽ in Russia
  • ₹130 in India
  • Rp 27,000 in Indonesia
  • $37 in Mexico

You can set the values of Auto Fill Prices, Country, and Price at the end of a row in the CSV file as follows:

false, BR; 6990000; RU; 129000000; IN; 130000000; ID; 27000000000; MX; 37000000;

Pricing Template ID

If an item is linked to a pricing template, you should set Auto Fill Prices to false, and you shouldn't set a value for the Price column. If the item isn't linked to a pricing template, you shouldn't set a value for the Pricing Template ID. Instead, you should set Auto Fill Prices, Country, and Price based on how you want to set the managed product's prices.

If you import a CSV file, and you've checked the Overwrite existing products checkbox in the "Import In-app Products" dialog, you can update the links between managed products and pricing templates. To link the product to a specific pricing template, set the Pricing Template ID value to that pricing template's ID. To unlink a managed product from all pricing templates, don't set a value for its Pricing Template ID.

You can link up to 1000 app prices or managed product prices to a particular pricing template. Therefore, don't specify the same Pricing Template ID value in more than 1000 rows of a CSV file.

Was this helpful?
How can we improve it?

Need more help?

Sign in for additional support options to quickly solve your issue