Skip to content

Overview

  • Version: 2.0.0
  • Servers: https://store.xsolla.com/api
  • Contact Us by Email
  • Contact URL: https://xsolla.com/
  • Required TLS version: 1.2

Shop Builder API provides a third-party solution for implementing the server side for your store interface. Use the endpoints to manage in-game items, in-game currencies, cart, player inventory, promotions, game library, etc.

Download OpenAPI description
Languages
Servers
Mock server
https://xsolla.redocly.app/_mock/api/shop-builder/
https://store.xsolla.com/api/
Operations

Personalized catalog

This API allows to specify rules for user attributes. If the user meets all conditions for a concrete rule, personalized items will be shown.

For personalized promotions see Promotions section.

To pass attributes before a purchase, you can use Xsolla Login API or pass them into user.attributes property while generating token using Pay Station API.

Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations

Catalog

This API allows getting any kind of sellable items or specific item.

Operations
Operations
Operations
Operations
Operations
Operations

Coupons

This API allows to you to manage coupons.

Operations

Promo codes

This API allows to manage promo codes.

Operations

Unique catalog offers

This API allows to you to manage unique catalog offers.

Operations

Discounts

This API allows to you to manage discount promotions.

Operations

Bonuses

This API allows to manage bonus promotions.

Operations
Operations
Operations
Operations
Operations
Operations

Update reward chainServer-sideAdmin

Request

Updates particular reward chain.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
reward_chain_idintegerrequired

Reward chain ID.

Example: 101
Bodyapplication/json
One of:

A reward chain.

name(two-letter (object or null)) or (five-letter (object or null))(name-localization-object)required

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

name.​enstring or null

English

name.​arstring or null

Arabic

name.​bgstring or null

Bulgarian

name.​cnstring or null

Chinese (Simplified)

name.​csstring or null

Czech

name.​destring or null

German

name.​esstring or null

Spanish (Spain)

name.​frstring or null

French

name.​hestring or null

Hebrew

name.​itstring or null

Italian

name.​jastring or null

Japanese

name.​kostring or null

Korean

name.​plstring or null

Polish

name.​ptstring or null

Portuguese

name.​rostring or null

Romanian

name.​rustring or null

Russian

name.​thstring or null

Thai

name.​trstring or null

Turkish

name.​twstring or null

Chinese (Traditional)

name.​vistring or null

Vietnamese

name.​kmstring or null

Khmer

name.​idstring or null

Indonesian

name.​lostring or null

Lao

name.​mystring or null

Burmese

name.​phstring or null

Filipino

name.​nestring or null

Nepali

description(two-letter (object or null)) or (five-letter (object or null))(description-localization-object)

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

long_description(two-letter (object or null)) or (five-letter (object or null))(long-description-localization-object)

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

Any of:

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

image_urlstring or null(image_url)

Image URL.

Example: "https://image.example.com"
orderinteger(order)

Defines arrangement order.

Example: 1
periodsArray of objects(periods)required

Reward chain validity periods. If multiple periods are specified, both date_from and date_until are required.

periods[].​date_fromstring(date-time)required

Start date for the specified reward chain.

Example: "2020-08-11T10:00:00+03:00"
periods[].​date_untilstring or null(date-time)

End date for the specified reward chain. Can be null only if a single validity period is specified.

Example: "2020-08-11T20:00:00+03:00"
is_enabledboolean(is_enabled)required
Example: true
stepsArray of objects(modify_reward_step)required
steps[].​step_idinteger or null(step_id)required

Unique step ID.

Example: 10
steps[].​name(two-letter (object or null)) or (five-letter (object or null))(name-localization-object)required

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

steps[].​name.​enstring or null

English

steps[].​name.​arstring or null

Arabic

steps[].​name.​bgstring or null

Bulgarian

steps[].​name.​cnstring or null

Chinese (Simplified)

steps[].​name.​csstring or null

Czech

steps[].​name.​destring or null

German

steps[].​name.​esstring or null

Spanish (Spain)

steps[].​name.​frstring or null

French

steps[].​name.​hestring or null

Hebrew

steps[].​name.​itstring or null

Italian

steps[].​name.​jastring or null

Japanese

steps[].​name.​kostring or null

Korean

steps[].​name.​plstring or null

Polish

steps[].​name.​ptstring or null

Portuguese

steps[].​name.​rostring or null

Romanian

steps[].​name.​rustring or null

Russian

steps[].​name.​thstring or null

Thai

steps[].​name.​trstring or null

Turkish

steps[].​name.​twstring or null

Chinese (Traditional)

steps[].​name.​vistring or null

Vietnamese

steps[].​name.​kmstring or null

Khmer

steps[].​name.​idstring or null

Indonesian

steps[].​name.​lostring or null

Lao

steps[].​name.​mystring or null

Burmese

steps[].​name.​phstring or null

Filipino

steps[].​name.​nestring or null

Nepali

steps[].​priceobject(reward_step_price)required
steps[].​price.​amountinteger(step_price_amount)required

Step price in value points.

Example: 100
steps[].​image_urlstring or null(image_url)

Image URL.

Example: "https://image.example.com"
steps[].​rewardArray of objectsrequired
steps[].​reward[].​skustring(sku)[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$required

Unique item ID. The SKU may contain only lowercase and uppercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "booster_mega_1"
steps[].​reward[].​quantityinteger(reward_item_quantity)required

Item quantity.

Example: 2
steps[].​reward[].​attribute_conditionsArray of type = string (object) or type = number (object) or type = date (object)(reward-chain-step-reward_user-attribute_conditions_model-post)[ 1 .. 100 ] items

Conditions for validating user attributes. Determine reward availability for reward chain steps based on whether user attributes match all specified conditions.

recurrent_schedule(interval_type = weekly (object or null)) or (interval_type = monthly (object or null)) or (interval_type = hourly (object or null))(recurrent_schedule_create_update)

Recurrent reset period of the reward chain.

One of:

Weekly type of reward chain refresh.

attribute_conditionsArray of type = string (object) or type = number (object) or type = date (object)(chain_user-attribute_conditions_model-post)[ 1 .. 100 ] items

Conditions for validating user attributes. Determine chain availability based on whether user attributes match all specified conditions.

is_always_visibleboolean(chain_is_always_visible)

Whether the chain is visible to all users:

  • If true, the chain is always displayed, regardless of the user's authentication status or attributes.
  • If false, the chain is displayed only if no personalized chain is found. For example, if the user is not authenticated or their attributes don’t match any personalized chain.

Applies only in the context of personalized chains and is used if the attribute_conditions array is not passed.

Default true
Example: true
is_reset_after_endboolean(is_reset_after_end)

Whether to reset the reward chain (value points and progress of all users) after its end date:

  • If true, the reward chain will be reset after its end date.
  • If false, the reward chain will not be reset after its end date.

Notice

Can’t be true if:
  • A reset period is set in recurrent_schedule.
  • The null value is passed in periods.date_until.
Default false
Example: false
curl -i -X PUT \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain/id/101 \
  -H 'Content-Type: application/json' \
  -d '{
    "name": {
      "en": "Reward chain"
    },
    "description": {
      "en": "Reward chain description."
    },
    "long_description": {
      "en": "Reward chain long description."
    },
    "is_enabled": true,
    "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
    "order": 1,
    "periods": [
      {
        "date_from": "2026-01-01T01:00:00+05:00",
        "date_until": "2026-01-31T23:59:59+05:00"
      },
      {
        "date_from": "2026-02-01T01:00:00+05:00",
        "date_until": "2026-02-28T23:59:59+05:00"
      }
    ],
    "steps": [
      {
        "name": {
          "en": "First step of the reward chain"
        },
        "step_id": 1,
        "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
        "reward": [
          {
            "sku": "com.xsolla.item_1",
            "quantity": 5
          },
          {
            "sku": "com.xsolla.item_2",
            "quantity": 1
          }
        ],
        "price": {
          "amount": 10
        }
      },
      {
        "name": {
          "en": "Second step of the reward chain"
        },
        "step_id": 2,
        "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
        "reward": [
          {
            "sku": "com.xsolla.item_3",
            "quantity": 5
          },
          {
            "sku": "com.xsolla.item_4",
            "quantity": 1
          }
        ],
        "price": {
          "amount": 15
        }
      }
    ],
    "recurrent_schedule": {
      "interval_type": "weekly",
      "day_of_week": 1,
      "time": "01:00:00+08:00"
    },
    "attribute_conditions": [
      {
        "attribute": "race",
        "operator": "eq",
        "value": "ork",
        "type": "string",
        "can_be_missing": false
      }
    ],
    "is_always_visible": true,
    "is_reset_after_end": true
  }'

Responses

Reward chain was successfully updated.

Body
Response
No content

Delete reward chainServer-sideAdmin

Request

Deletes particular reward chain.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
reward_chain_idintegerrequired

Reward chain ID.

Example: 101
curl -i -X DELETE \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain/id/101

Responses

Reward chain was successfully deleted.

Body
Response
No content

Toggle reward chainServer-sideAdmin

Request

Enable/disable reward chain.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
reward_chain_idintegerrequired

Reward chain ID.

Example: 101
curl -i -X PUT \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain/id/101/toggle

Responses

The reward chain has been disabled/enabled.

Body
Response
No content
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations