Coupons
How it works
Coupon promotions are a marketing tool for getting new users and increasing sales. A player who uses a coupon gets a reward that is linked to it. The reward can include:
- virtual currency package
- game key
- virtual item
Every coupon has a code. To use a coupon, the user enters its code in the game, on the website, or in the mobile application.
Main features:
- Decide the general number of coupon redemptions for one campaign.
- Determine the number of coupon redemptions for one user in one campaign.
- Generate codes for coupons multiple times.
- Apply regional sale restrictions for promotions and items that are linked to a coupon.
Restrictions:
- If you link game keys to a coupon, one of them will be emailed to a player who redeems the coupon. If there are no keys left in the campaign, the player’s request to use a coupon will be declined.
- If the coupon includes a promotion with regional restrictions, the user from a restricted region can’t redeem it.
- If the coupon includes an item with regional sale restrictions, the user from a restricted region can’t get the items linked to this coupon.
User flow:
- A user redeems a coupon.
- The reward that is linked to a coupon is delivered to a user in one of the following ways:
- directly to the inventory (virtual item or a virtual currency package)
- via email (a game key)
- directly to the entitlement system (a game key)
How to get it
Prerequisites
- Create your Xsolla Publisher Account.
- Connect Store to your project.
Integration flow
- Set up a promotional campaign with coupons.
- Use the methods of getting a coupon reward.
- Use the methods of coupon redemption by code.
Set up campaign with coupons
- Go to Store > Promotions and rewards in Publisher Account and create a promotion.
- Specify necessary parameters:
- Enter the promotion title.
- Choose Coupons as a promotion type.
- Choose the bonus item that the user receives when they redeem a coupon:
- Virtual currency package.
- Game key.
- Virtual item (one or several, including bundles and time-limited items).
- Specify the total number of redemptions and the number of redemptions per user.
- Set the campaign start and end dates.
- Check the settings and save the promotion.
- Go to the promotion editing menu.
- In the Codes menu, choose the method for how the coupons are generated.
- Generate the coupon code or enter it manually.
- Save changes.
- Activate the promotion.
Coupon with a virtual currency package
You should specify the currency package for a virtual currency package coupon. To create a virtual currency package:- Go to the Virtual currency module settings and specify the following parameters:
- Image
- SKU
- Currency name
- Price of one unit of virtual currency
- Default currency
- Create a required number of currency packages and specify the following parameters for every one of them:
- Image
- SKU
- Name
- Description
- Used currency
- Amount of currency in a package
- Price
- Default currency
- Enable the currency packages display in Store.
Coupon with a game key
You should specify a game key SKU and DRM info for a game key coupon. There are 2 options:- Generate coupons for the already set DRM. The parameter is set when generating coupons.
- Choose a DRM when using a coupon.
Coupon with virtual items
You should specify the virtual item SKU and its quantity for a virtual items coupon. You can choose one or several items with different SKUs for one coupon including bundles and time-limited items.Generating coupons
A campaign may include one or several coupons. The coupon format has 2 options:- Manually entered string — suitable for a campaign with only one coupon that can be used many times (maximum is 128 characters).
- Generated string — line of numerals and Latin symbols (10 characters). Suits the campaign with many coupons.
Note
The coupon code is case sensitive. For example,
winter2021
and WINTER2021
are 2 different coupons.Regional restrictions
Regional restrictions apply to the whole promotion campaign. The regional restrictions are applied on demand via email to Xsolla.Get coupon rewards
Implement the call of theis_selectable
parameter value in the response, there are 2 possible flows:- If the
is_selectable=true
value, you should show the form for choosing elements from theunit_items
object for everyitem
withtype=unit
element. In this form, the user chooses only one element for eachunit
type.
Copy
- http
{
"bonus": [{
"item": {
"sku": "xsollus_gold_edition",
"name": "Xsollus: Gold Edition",
"type": "unit",
"description": null,
"image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/images\/9541470622d96a821a9a11ea7763ea4c.png",
"unit_items": [{
"sku": "xsollus_gold_edition_steam",
"name": "Xsollus: Gold Edition (steam)",
"type": "game_key",
"drm_name": "Steam",
"drm_sku": "steam"
}, {
"sku": "xsollus_gold_edition_playstation",
"name": "Xsollus: Gold Edition (playstation)",
"type": "game_key",
"drm_name": "Playstation",
"drm_sku": "playstation"
}, {
"sku": "xsollus_gold_edition_xbox",
"name": "Xsollus: Gold Edition (xbox)",
"type": "game_key",
"drm_name": "XBox",
"drm_sku": "xbox"
}, {
"sku": "xsollus_gold_edition_rockstar",
"name": "Xsollus: Gold Edition (rockstar)",
"type": "game_key",
"drm_name": "Rockstar Games Launcher",
"drm_sku": "rockstar"
}]
},
"quantity": 1
}, {
"item": {
"sku": "xsollus_bonus_pack_edition",
"name": "Xsollus: Bonus Pack",
"type": "unit",
"description": null,
"image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/images\/aa2efd78dfd4e5dda5293f8c8e49af6d.png",
"unit_items": [{
"sku": "xsollus_bonus_pack_edition_steam",
"name": "Xsollus: Bonus Pack (steam)",
"type": "game_key",
"drm_name": "Steam",
"drm_sku": "steam"
}, {
"sku": "xsollus_bonus_pack_edition_playstation",
"name": "Xsollus: Bonus Pack (playstation)",
"type": "game_key",
"drm_name": "Playstation",
"drm_sku": "playstation"
}, {
"sku": "xsollus_bonus_pack_edition_xbox",
"name": "Xsollus: Bonus Pack (xbox)",
"type": "game_key",
"drm_name": "XBox",
"drm_sku": "xbox"
}]
},
"quantity": 3
}],
"is_selectable": true
- If
is_selectable=false
, you shouldn’t pass additional parameters in the request.
Redeem a coupon by code
Implement the call of theis_selectable
parameter value in the - If
is_selectable=true
, you should pass theselected_unit_items
object in the following format when calling theRedeem coupon code method:
Copy
- http
selected_unit_items:{
unit_1_sku: "selected_unit_item_sku",
unit_2_sku: "selected_unit_item_sku"
}
Example of the response:
Copy
- http
{
{
"items": [
{
"sku": "xsollus_gold_edition_steam",
"name": "Xsollus: Gold Edition (steam)",
"type": "game_key",
"description": null,
"image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/images\/9541470622d96a821a9a11ea7763ea4c.png",
"attributes": [],
"is_free": true,
"groups": [],
"price": null,
"virtual_prices": [],
"drm_name": "Steam",
"drm_sku": "steam",
"has_keys": false,
"is_pre_order": true,
"release_date": null,
"quantity": 1
},
{
"sku": "xsollus_bonus_pack_edition_origin",
"name": "Xsollus: Bonus Pack (origin)",
"type": "game_key",
"description": null,
"image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/images\/aa2efd78dfd4e5dda5293f8c8e49af6d.png",
"attributes": [],
"is_free": true,
"groups": [],
"price": null,
"virtual_prices": [],
"drm_name": "Origin",
"drm_sku": "origin",
"has_keys": false,
"is_pre_order": true,
"release_date": null,
"quantity": 3
}
]
}
- If
is_selectable=false
, you shouldn’t pass additional parameters in the request.
Was this article helpful?
Thank you for your feedback!
We’ll review your message and use it to help us improve your experience.Found a typo or other text error? Select the text and press Ctrl+Enter.