Skip to main content


Supported Platforms

  • Yandex Games
  • VK Games
  • VK Play
  • OK Games
  • Kongregate
  • SmartMarket
  • Platforms without support
  • CrazyGames
  • GamePix
  • GameDistribution
  • GameMonetize
  • WG Playground
  • PlayDeck
  • Google Play
  • To check for purchase support on a platform in the SDK, use the gp.payments.isAvailable property.

    // Checking for purchase support on a platform
    if (gp.payments.isAvailable) {
    // You can make purchases

    Payment Rules

    Stick to payments rules.

    There are two types of payments: one-time and permanent.

    Example of a one-time purchase:

    • Buy 1000 gold
    • Buy chest
    • Restore Lives

    One-time purchases must be consumed immediately.

    An example of a permanent purchase:

    • Disable ads
    • VIP status
    • Increase x5 reward per level

    Constant purchases do not need to be consumed. As soon as the purchase is paid, it will always be visible to the user, until it is used up.

    One-time purchase rules

    // 1. Make purchase
    await gp.payments.purchase({ tag: 'GOLD_1000' });

    // 2. Give a reward
    gp.player.add('gold', 1000);

    // 3. Save player progess on server
    await gp.player.sync();

    // 4. Consume purchase
    await gp.payments.consume({ tag: 'GOLD_1000' });

    Permanent purchase rules

    // 1. Make purchase
    await gp.payments.purchase({ tag: 'VIP' });

    // 2. Checking for purchase availability when needed
    if (gp.payments.has('VIP')) {
    // do something with VIP status

    Platform setup



    In the Yandex.Games console, fill in the list of products in accordance with the list of products in the GS control panel.


    In the Yandex.Games console, you must specify your username as a tester.

    VK Direct Games


    You must fill in the "Callback URL" in the Payments section. Set:


    In the Payments section, specify the tester's account.

    VK Play


    You must fill in the "Callback URL" in the Basic features section. Set:


    You can test directly from your developer account. You can also add a tester account in the Accounts section. Purchases are tested through a test card, which is listed next to the Callback URL field in the Basic features section.

    OK Games


    You must fill in the "Callback URL" in application settings. Set:


    In the "Developers" section, hover over your name, the "User Roles" hint will pop up, click and check the "Payment Tester" checkbox in the window that opens.

    Then go to "Settings" > "Personal settings" > enable the "Payments: test mode" checkbox.



    You must fill in the "API Callback URL" in the Edit your game section. Set:


    You can test directly from your developer account. Payments from a developer account cost 0 Kreds.



    You must fill in the "Smartapp Webhook" in application settings. Set:


    Absent. Payment by card. Set your purchases at 1 RUB. The price can be changed at any time in the panel.

    Local testing

    On the test domain, a test purchase form that imitates the platform order form is used. You do not need to upload the game to the platform to test it.

    Purchase product

    +1-3 Request

    To purchase product, you need to pass an ID or Tag of product.

    // Purchase by id
    gp.payments.purchase({ id: 17541 });

    // Purchase by tag
    gp.payments.purchase({ tag: 'GOLD_1000' });

    Purchase product events

    // Purchase success
    gp.payments.on('purchase', ({ product, purchase }) => {});

    * Error if purchase failed
    * @type {
    * 'player_not_found' |
    * 'empty_id_or_tag' |
    * 'product_not_found' |
    * 'purchases_not_alloved_on_platform' |
    * undefined
    * }
    gp.payments.on('error:purchase', (error) => {});

    Purchase with promises

    const result = await gp.payments.purchase({ id: 17541 });

    * Product data
    * @type {Product}

    * Purchase data
    * @type {PlayerPurchase}

    Consuming purchases

    +1 Request

    To use a purchase, you need to pass in a product ID or tag.

    // Spending by ID
    gp.payments.consume({ id: 17541 });

    // Spending by Tag
    gp.payments.consume({ tag: 'GOLD_1000' });

    Purchase spend events

    // Successfully used
    gp.payments.on('consume', ({ product, purchase }) => {});

    // Error while using
    gp.payments.on('error:consume', (error) => {});

    Spending method through promises

    const result = await gp.payments.consume({ id: 17541 });

    * Product data
    * @type {Product}

    * Purchase data
    * @type {PlayerPurchase}

    Lists of Products and Purchases


    Lists are loaded at the start of the game and are available immediately after SDK initialization.

    Get the list of products:


    Get the list of the player's purchases:


    Getting a list of products

    FREE Deprecated

    Get method via promises

    const result = await gp.payments.fetchProducts();

    // Answer result
    const {
    // Grocery list
    // Player shopping list
    } = result;

    Events when getting a shopping list

    // Successfully received
    gp.payments.on('fetchProducts', (result) => {});

    // Errors by getting
    gp.payments.on('error:fetchProducts', (error) => {});

    Purchase fields

    idnumberPurchase ID115
    tagstringOptional tag to help with selection. You can use it instead of IDVIP
    namestringName translated into the user's languageVIP Status
    descriptionstringDescription translated into the user's languageNo ads, reward x2
    iconstringLink to icon size 256x256Link example
    iconSmallstringLink to icon size 64x64Link example
    pricenumberPurchase price199
    currencystringCurrency codeYAN OK VOTE RUB GP
    currencySymbolstringCurrency symbol (translated into the user's language and formatted if needed)Voice, Voices
    isSubscriptionbooleanPurchase is a subscriptiondefault false
    periodnumberSubscription duration in days7, 30, 90
    trialPeriodnumberThe duration of the trial period in days (during this time, the user can cancel the subscription without debiting funds)0, 3, 7, 30

    Player Purchase Fields

    productIdnumberPurchase ID115
    payloadObjectData from the purchase on the platform (for example, order ID or token){"order_id": 213}
    createdAtstringDate of purchase, format ISO 8601 UTC2022-12-01T04:52:26+0000
    giftbooleanThe purchase was a gift from the game developerfalse
    subscribedbooleanIs the subscription for this purchase active?true
    expiredAtstringSubscription end date, format ISO 8601 UTC2022-12-01T04:52:26+0000

    Error codes

    ErrorError Description
    player_not_foundPlayer not found
    empty_id_or_tagPassed empty ID or purchase tag
    product_not_foundPurchase with this ID or tag was not found
    purchases_not_alloved_on_platformPurchases are not available on this site
    undefinedUnexpected error (see console)

    Stay in Touch

    Other documents of this chapter available Here. To get started, welcome to the Tutorials chapter.

    GamePush Community Telegram: @gs_community.

    For your suggestions e-mail: [email protected]

    We Wish you Success!