Google Play > Developer Console

click CREATE APPLICATION button and fill the mandatory data fields of each section with your answer

2 screenshots are required. Minimum dimension of 320 px and a maximum dimension of 2840 px, for instance


For instance, you are going to make IAP products like this

name type product id
book01 Managed com.kwiksher.bookshelf.book01
book02 Managed com.kwiksher.bookshelf.book02

Build apk

You need a keystore file for IAP and use it for building .apk with Corona simulator

keystore file


sudo keytool -genkey -v -keystore yourapp.keystore -alias yourapp -keyalg RSA -validity 10000

for example,

sudo keytool -genkey -v -keystore kwikbookshelf.keystore -alias kwikbookshelf -keyalg RSA -validity 10000

In Windows it is in JDK

you may use Android Studio to make .jks

build.settings and config.lua

the IAP plugin and the permissions are added in build.settings

Your app’s key must be added to the license table in config.lua. copy it from Google Play Console > Your App > Monetization setup and paste it to config.lua


settings = {
    plugins  =  {
        --Google in app billing v3
        [""] = {
            -- required
            publisherId = "com.coronalabs",
            supportedPlatforms = { android = true },
    android  = {
      usesPermissions  = {


application = 
    license =
        google =
            key = "YOUR_KEY",

Google Play > Developer Console

OPT-OUT means uploading the apk built and signed with the keystore with Corona simulator. Instead you can opt in with .aab file

Roll out the APK release to Production or Testing track for google to approve it. The status will become published in minutes. This is how to active your In-App products.

Prepareing Test Account

Google Play Console

Browser Google


(Optional) Testing with Static Responses

you can build your .apk with the reserved product id of google to test IAP with the static responses before you use the commercial product IDs that you added in Google Play Console


event.transaction.state within the transaction listener function will be “refunded” and, in this case, you can disable the content that was refunded and/or delete it from the app locally if it was downloaded. This features is not currently implemented with Kwik. You need to make external code for it.


opt -in

License Key

Monetization setup

Closed testing for Opt-out


All apps > Settings

Your app > Testing