How to configure site to sell goods
When you use your own site, you can sell items without third-party platform fees and improve game monetization. With site templates, you can sell virtual items, virtual currency packages, bundles, and game keys. The ways to sell items through the Store block or using a purchase button are described below.
User flow:
- The user goes the site.
- The user clicks the purchase button.
- A modal window for authentication or entering an email opens (depending on the type of item).
- The user completes the purchase in the opened payment interface.
To configure a site to sell goods:
Create catalog
On the site, you can sell the following item types:
- virtual currency packages
- virtual items
- game keys
- bundles
To create a catalog, you can use Publisher Account, API calls, or import the catalog from a JSON file or external platforms.
Create virtual currency
Virtual currency is virtual money that is used for purchasing and selling in-game items. Depending on its purpose, a virtual currency affects the game economy balance or is connected to the monetization of the app. You can also create hard currency — a virtual currency that is linked to the platform of purchase and can be purchased only for real money.
You can sell the virtual currency in predefined amounts. For a package, you can define a special price that doesn’t equal the amount of virtual currency in it.
See the Virtual currency section to learn more about virtual currency.
To set up virtual currency:
- Open your project in Publisher Account and go to Items catalog > Virtual currency section.
- Click New virtual currency.
- Specify:
- Image (optional).
- SKU.
- Name.
- Price in real or virtual currency.
- Default currency.
- Attributes (optional).
- You can define virtual currency as premium currency. This currency is tied to the platform where the purchase is made and can only be sold for real money. To set up separate storage of premium currency for different platforms, switch the Premium Currency toggle to On.
Set up a virtual currency package
To set up a virtual currency package:
- Open your project in Publisher Account and go to Items catalog > Virtual Currency > Packages section.
- Click New Package.
- Specify:
- Image of the package (optional).
- Package SKU.
- Name for the package.
- Short description of the package.
- Virtual currency for a package.
- Prices in real and virtual currencies.
- Default currency.
- Attribute (optional).
- To limit the number of times a user can buy a virtual currency package, switch the Limit number of times one user can buy a virtual currency package toggle to On and specify the limit.
- To set a time limit for the package to be displayed in the store, in the Show item in store field, select Time period and specify the time zone, the beginning, and the end of the period. To not indicate the end of the item display period, check the No end date box.
- Check the settings and click Create package.
Create virtual items
Virtual items are the in-game content that you can sell for real and virtual currency.
There are 3 types of virtual items:
- Consumable — items that you can have in large quantities and purchase several times. Their quantity is decreased when users consume them.
- Nonconsumable — items that can be accrued or purchased only once. They keep into user’s inventory and can’t be removed from the inventory by being consumed on the client side. You can withdraw it only via a server method.
- Time-limited item — a nonconsumable item that is available for a limited period of time and doesn’t disappear from the inventory when it expires. The user needs to buy this item again to activate it.
See the Virtual items section to learn more about virtual items.
To set up virtual items, you need to configure virtual items groups. Groups let you have a multilevel catalog and manage a display of items in the store.
To create groups of virtual items:
- Open your project in Publisher Account and go to the Items catalog > Virtual items section.
- Click + and select Create group from the drop-down list.
- Specify the following parameters:
- Group code.
- Group name.
- If you want to show the group in a catalog, set the Show group in Store toggle to On.
- Click Create group.
To set up a virtual item:
- Open your project in Publisher Account and go to Items catalog > Virtual Items section.
- Click + and select Create Item from the drop-down list.
- Specify:
- Image (optional).
- SKU.
- One or several groups the item should belong to.
- Name.
- Description (optional).
- Item property: consumable, nonconsumable, or time-limited items.
- Prices in real or virtual currencies.
- Set a purchase limit for the item (optional). To do this, set the Limit number of times one user can buy this item toggle to On and specify the number of items a user can purchase.
- To set a time limit for the item to be displayed in the store, in the Show item in store field, select Time period and specify the time zone, the beginning, and the end of the period. To not indicate the end of the item display period, check the No end date box.
- Check the settings and click Create item.
Create bundles
Bundle is a set of several items that are sold as a single unit. You can add items of different types to a bundle:
- Virtual currency.
- Package of virtual currency.
- Virtual items including time-limited items.
- Bundles.
See the Bundles section to learn more about bundles.
To set up a bundle:
- Open your project in Publisher Account and go to Items catalog > Bundles section.
- Click + and select Create bundle from the drop-down list.
- Specify:
- Image (optional).
- SKU.
- Name.
- Description (optional).
- Contents.
- Set the bundle price. Define the prices or create a free bundle:
- To create a free bundle, in the Paid or Free field, select Free bundle.
- To set a price, in the Paid or Free field, select Paid bundle and specify the price in real or virtual currencies. If needed, configure regional prices.
- Set a purchase limit for the bundle (optional). To do this, turn on the Limit number of times one user can buy bundle toggle to On and specify the number of bundles a user can purchase.
- Click Next.
- Configure the display of the bundle in the store:
- Change the status to Available.
- Set a time limit for displaying a bundle in the store (optional). To do this, select Time period and specify the time zone, the beginning and the end of the period. If you don’t want to indicate the end of the item display period, check the No end date box.
- Click Next.
- Check the settings and click Save.
You can automate the creation and updating of the catalog with Shop Builder API calls. With automation, you can keep your catalog up to date without spending a lot of time on it. Catalog automate allows you to create and update items and promotions and import data from external systems.
Basic authorization is used for API calls to create and update items and promotions. Pass the Authorization:Basic <your_authorization_basic_key>
, where <your_authorization_basic_key>
is the merchant ID:API key pair encoded according to the Base64 standard. Go to Publisher Account to find these parameters:
- Merchant ID is shown:
- In the Company settings > Company section.
- In the URL in the browser address bar on any Publisher Account page. The URL has the following format:
https://publisher.xsolla.com/<merchant_id>/
.
- API key is shown in Publisher Account only once when it is created and must be stored on your side. You can create a new key in the following section:
To create items via API:
- Export the item data from your system.
- Transform the exported data into a format that matches the data format in the API call of the required item type.
- Create a script that calls the required API method for each item in the export:
If you want to use item groups, create them in advance in Publisher Account.
- Open your project in Publisher Account and in the Items catalog section, go to the corresponding item type you want to configure:
- In the Manage catalog drop-down list, select Import items (JSON).
- Choose the action:
- Add new items — only items with new SKUs will be added.
- Add new items and update existing ones — items with new SKUs will be added and data of existing items will be updated.
- Add new, update existing, disable missing items — items with SKUs from the file will be added/updated. If there is an item in the catalog, but there is no such SKU in the file, the status of the item in the Publisher Account will be changed to Partially available — item cannot be purchased separately but is available as part of a bundle or bonus.
- Fill in the file for import:
- Download the file template in the download window and fill it in according to the example below.
- Export the items and use the exported file as a template.
- Create your own JSON file and fill it out as per the example below.
An example of a full JSON file:
- json
1{
2 "virtual_currency": [
3 {
4 "sku": "Gem_test_import",
5 "name": {
6 "en": "Gem_test_import"
7 },
8 "type": "virtual_currency",
9 "description": {
10 "en": "my test imported currency"
11 },
12 "image_url": "https://cdn3.xsolla.com/img/misc/merchant/default-dc-image.png",
13 "description": {
14 "en": "my test imported currency",
15 "de": "meine importierte Testwährung"
16 },
17 "attributes": [],
18 "is_free": false,
19 "order": 1,
20 "groups": [],
21 "regional_prices": [],
22 "prices": [
23 {
24 "amount": 2,
25 "currency": "USD",
26 "is_default": true,
27 "is_enabled": true
28 }
29 ],
30 "media_list": [],
31 "vc_prices": [],
32 "is_enabled": true,
33 "is_show_in_store": true,
34 "regions": [],
35 "limits": {
36 "per_user": null,
37 "per_item": null,
38 "recurrent_schedule": null
39 },
40 "periods": [],
41 "inventory_options": {
42 "consumable": true,
43 "expiration_period": null
44 },
45 "is_hard": false
46 }
47 ],
48 "virtual_items": [
49 {
50 "sku": "event_access_test_import",
51 "name": {
52 "en": "Special Event Access_test_import"
53 },
54 "type": "virtual_good",
55 "description": {
56 "en": "Get special event access as a bonus only on your first purchase. Find the right doggy at the Robo-Dog Exhibition!"
57 },
58 "image_url": "https://cdn3.xsolla.com/img/misc/images/1e3ef1a96cc9dd8d98bc124d5d6fad79.png",
59 "long_description": null,
60 "attributes": [],
61 "is_free": false,
62 "order": 1,
63 "groups": [
64 "my_test_group"
65 ],
66 "regional_prices": [],
67 "prices": [
68 {
69 "amount": 35,
70 "currency": "USD",
71 "is_default": true,
72 "is_enabled": true
73 }
74 ],
75 "media_list": [],
76 "vc_prices": [],
77 "is_enabled": true,
78 "is_show_in_store": true,
79 "regions": [],
80 "limits": {
81 "per_user": null,
82 "per_item": null,
83 "recurrent_schedule": null
84 },
85 "periods": [],
86 "inventory_options": {
87 "consumable": true,
88 "expiration_period": null
89 }
90 }
91 ],
92 "virtual_currency_packages": [
93 {
94 "item_id": 441982,
95 "sku": "small_gold_pack_test_import",
96 "type": "bundle",
97 "name": {
98 "en": "Small gold pack"
99 },
100 "bundle_type": "virtual_currency_package",
101 "description": {
102 "en": "Gold x100"
103 },
104 "image_url": "https://cdn3.xsolla.com/img/misc/images/ba43c46ea75fd5713c210f5736993a92.png",
105 "vc_prices": [],
106 "regional_prices": [],
107 "prices": [
108 {
109 "amount": 5,
110 "currency": "USD",
111 "is_default": true,
112 "is_enabled": true
113 }
114 ],
115 "is_enabled": true,
116 "is_show_in_store": true,
117 "regions": [],
118 "limits": {
119 "per_user": null,
120 "per_item": null,
121 "recurrent_schedule": null
122 },
123 "periods": [],
124 "attributes": [],
125 "long_description": null,
126 "media_list": [],
127 "order": 100000000,
128 "is_free": false,
129 "groups": [],
130 "content": [
131 {
132 "sku": "Gem_test_import",
133 "quantity": 100
134 }
135 ]
136 }
137 ],
138 "bundles": [
139 {
140 "item_id": 684024,
141 "sku": "start_pack_test_import_test_import",
142 "type": "bundle",
143 "name": {
144 "en": "Legendary Start Pack"
145 },
146 "bundle_type": "standard",
147 "description": {
148 "en": "Crystal x 1\nGem x 1"
149 },
150 "image_url": "https://cdn3.xsolla.com/img/misc/merchant/default-dc-image.png",
151 "regional_prices": [],
152 "prices": [
153 {
154 "amount": 20,
155 "currency": "USD",
156 "is_default": true,
157 "is_enabled": true
158 }
159 ],
160 "virtual_prices": [],
161 "is_enabled": true,
162 "is_show_in_store": true,
163 "regions": [],
164 "limits": {
165 "per_user": null,
166 "per_item": null,
167 "recurrent_schedule": null
168 },
169 "periods": [],
170 "attributes": [],
171 "long_description": null,
172 "media_list": [],
173 "order": 5,
174 "is_free": false,
175 "groups": [
176 "my_test_group"
177 ],
178 "content": [
179 {
180 "sku": "Gem_test_import",
181 "quantity": 1
182 },
183 {
184 "sku": "event_access_test_import",
185 "quantity": 1
186 }
187 ]
188 }
189 ]
190}
- Upload the full file to the corresponding field in the import window.
- If there are errors during import, a list of these errors and recommendations for correction will be displayed in the import window. Make the necessary changes to the file and upload it again.
After successful upload, the items with the specified SKUs will be created, updated, or disabled.
You can also import items using the Import items via JSON file API call.
Refer to the instructions for detailed information about importing items via JSON file.
You can also import a catalog from external platforms, e.g., Google Play or App Store.
Create Store block or purchase button
The Store block is used for selling an item catalog on the website. The block displays all items from the group you selected for sale. A purchase button is a tool for selling individual items. You can use the button in several blocks of the builder. With the button, you can sell only bundles and game keys.
If you are creating a site using Web Shop or Single game page template, the block is added to the site automatically.
If you are creating a site using other templates and want to add Store block to the site:
- Open the project in Publisher Account and go to the Storefronts > Websites section.
- Click Open Site Builder.
- Click Add Block in the site template.
- From the list, select the Store block.
- In the drop-down list, choose the type and group of the item you want to sell on the site.
- To sell different types of items, add shop sections. To do this, in the Store block menu, click Add Store Section.
- To sell items in different parts of the site, add additional Store blocks.
You can add a button for quick item purchase in any template within the following blocks:
- Card grid
- Header
- Call-to-action
- Game editions
- Promo Slider
In the Single Game Page template the button is also located in the Lead block.
To customize the button:
- Go to one of the specified blocks.
- In the right part of the website builder, go to the button.
- In the drop-down list for Action, select Purchase Item.
- In the drop-down list for Item, choose the item.
Useful links
Last updated: August 29, 2025Found a typo or other text error? Select the text and press Ctrl+Enter.