Bundles

How it works

Bundle is a set of several items that are sold as a single unit.

Main features:

  • Add items of different types to a bundle:
    • virtual currency (including the platform-dependent currency)
    • package of virtual currency
    • game keys for preselected platforms
    • virtual items including time-limited items
    • bundles
  • Configure the bundle pricing in real and virtual currencies.
  • Limiting the number of bundles available for purchase.

A bundle automatically unpacks after:

If a bundle includes another bundle, the included bundle automatically separates into standalone items.

Items delivery method from an unpacked bundle depends on the item type:

Note
If you implemented the In-Game Store logics to your servers, you can set up item purchase webhooks. The webhook will contain a bundle and all its contents.

When the buyer returns the bundle by canceling a transaction (for example), all granted items from the bundle are automatically withdrawn from the user. If they spent some of the items, the remaining items are still withdrawn.

Restrictions:

  • You can’t add the following items to the bundle:
    • the same bundle
    • physical goods
  • You can’t create an empty bundle.
  • The bundle sales are paused after you run out of keys to sell and these keys are included in the bundle.
  • The bundle price should be a fixed value of real and/or virtual currency.
  • You can configure regional restrictions for a bundle only via API.

Limiting number of bundles available for purchase

You can limit the purchase of bundles. For example, you can limit:

  • the number of bundles per user
  • welcome bundles that are only available for purchase once

If the user has reached the specified limit, the bundle will not be displayed in the catalog. If the bundle contains a virtual currency package or item with a purchase limit and the user has already purchased the allowed amount, the bundle will not be displayed in the catalog.

You can display the maximum available number of bundles and the remaining number of bundles that is available to the user.

To set a purchase limit when creating a bundles in Publisher Account, switch the Limit number of times one user can buy this bundle toggle to ON and specify the number of times the bundle can be bought.

You can use the methods of the Catalog subsection from the Bundles method group to get information about bundles.

In the response, you will receive the following information in addition to information about the bundle:

  • the maximum number of bundles a user can buy
  • the remaining number of bundles available for the user to purchase

Response example:

Copy
Full screen
Small screen
{
  "items": [
    {
      "sku": "kg_1",
      "name": "kg_10.00_bundle",
      "type": "bundle",
      "description": "pricePoint_44056_1",
      "image_url": null,
      "long_description": null,
      "attributes": {
        "external_id": "genre",
        "name": "Genre",
        "values": [
          {
            "external_id": "genre_e3364991f92e751689a68b96598a5a5a84010b85",
            "value": "Casual"
          },
          {
            "external_id": "genre_eba07bfd0f982940773cba3744d97264dd58acd7",
            "value": "Strategy"
          },
          {
            "external_id": "genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8",
            "value": "Mobile"
          }
        ]
      },
      "is_free": false,
      "order": 999,
      "groups": [],
      "price": {
        "amount": 9.99,
        "currency": "USD",
        "amount_without_discount": 9.99
      },
      "total_content_price": {
        "amount": 10.99,
        "currency": "USD",
        "amount_without_discount": 10.99
      },
      "media_list": [],
      "virtual_prices": [],
      "can_be_bought": true,
      "bundle_type": "standard",
      "limits": {
        "$ref": "./Catalog_item_limits.yaml"
      },
      "content": [
        {
          "sku": "big_rocket",
          "name": "Big Rocket",
          "description": "Big Rocket - short description.",
          "image_url": "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png",
          "type": "virtual_currency",
          "quantity": 100,
          "virtual_item_type": "non_consumable",
          "attributes": {
            "external_id": "size",
            "name": "Size",
            "values": [
              {
                "external_id": "size_e3364991f92e751689a68b96598a5a5a84010b85",
                "value": "Large"
              }
            ]
          },
          "is_free": false,
          "groups": [],
          "price": {
            "amount": 10.99,
            "currency": "USD",
            "amount_without_discount": 10.99
          },
          "virtual_prices": [],
          "limits": {
            "per_user": {
              "total": 5,
              "available": 5
              },
            "per_item": null
           },
          }
        }
      ]
    }
  ]
}

Note

Xsolla enforces the limits and prevents users from purchasing more bundles than the set limit.

When opening the payment interface and paying for a bundle, all unpaid orders with this bundle become invalid.

Example: the user can open the payment form for a bundle with a purchase restriction in several browser tabs until the bundle has been purchased. This automatically results in the creation of multiple orders for the same bundle. After purchasing a bundle in one tab, Xsolla will void all unpaid orders with the same bundle.

Who can use it

For partners who want to sell sets of items for a price lower than the initial total of all items in the bundle, which increases sales and helps to get new players, and who have integrated one of the following products (or both):

  • In-Game Store with configured Virtual Items or Virtual Currency modules.
  • Buy Button with the configured Game Keys module.

How to get it

Integration flow

  1. Set up a bundle.
  2. Implement getting of bundles in a catalog.

Set up bundle

Set up bundles in one of the following ways:

Set up via Publisher Account

  1. Go to Publisher Account > Store > Bundles and click Create bundle.
  2. Specify the following parameters for a bundle:
    1. Image
    2. Name
    3. Description
    4. Contents
    5. Price
    6. Display in Store
  3. Check the settings and click Save.

Set up via API methods

To set up bundles, you can use the methods from the Admin subsection from the Bundles method group.

Notice
Methods from the Admin subsection aren’t created for building a catalog in the store on the frontend side. You should use them for landing pages, web stores, and in-game logics.

Add game key to bundle

To add a game key for a selected platform to a bundle, pass an array with SKUs of needed platforms to Create bundle or Update bundle methods.

Copy
Full screen
Small screen
"content": [{
     “sku”: “brilliant_game_sku_steam”,
     “quantity”: 1
  }
]

Set up regional restrictions

To set up regional restrictions for a bundle, pass an array with IDs of supported regions to Create bundle or Update bundle methods.

Note
Make sure you set up regions in a project via API methods or contact your Account Manager to do it.
Copy
Full screen
Small screen
"regions": [{
     “id”: “123”
  }, {
     “id”: “456”
  }
]

Set up regional prices

To set up regional prices for a bundle, pass an array of objects with price settings for regions to Create bundle or Update bundle methods.

Note
Make sure you set up regions in a project via API methods or contact your Account Manager to do it.
Copy
Full screen
Small screen
"regional_prices": [{
     “region_id”: “123”,
     “country_iso”: “CHN”,
     “amount”: 40,
     “currency_iso”: “CNY”,
     “is_default”: true,
     “is_enabled”: true
  }
]

Get bundles in a catalog

To get a catalog of bundles, you can use the methods from the Catalog subsection from the Bundles method group.

Note
Methods form the Catalog subsection are created for building a catalog in the store on the frontend side. They don’t require authorization.
Was this article helpful?
Thank you!
Is there anything we can improve? Message
We’re sorry to hear that
Please explain why this article wasn’t helpful to you. Message
Thank you for your feedback!
We’ll review your message and use it to help us improve your experience.
Rate this page
Rate this page
Is there anything we can improve?

Don’t want to answer

Thank you for your feedback!
Last updated: June 25, 2021

Found a typo or other text error? Select the text and press Ctrl+Enter.

Report a problem
We always review our content. Your feedback helps us improve it.
Provide an email so we can follow up
Thank you for your feedback!