Regional prices

When setting up an item catalog, you can configure pricing policies for users from different countries (regional pricing) for virtual items and game key packages. The price for each item or game keys package is set in USD by default. You can set regional restrictions and regional prices at the same time.

How it works

Prices in the catalog are based on the user’s country.

During the purchase via Pay Station, the price of an item is converted into the currency of the user’s country and includes taxes, if applicable.

Country determination

  • When requesting an item catalog, the user’s country is passed in the country parameter in the methods of the Catalog subsection from the Virtual Items & Currency or Game keys methods group.
    If the country is not specified, it will be determined based on the user’s IP address. Then, prices for the item catalog are selected for the user’s country.
  • When purchasing an item:
    • If you use the client methods to obtain a payment token, it is important to use them only from the client side and not from the server side. The country and currency in client methods are determined by the user’s IP address. Using this method from the server side may cause incorrect currency determination and affect payment methods in Pay Station.
    • If you use the Create payment token for purchase server method, you need to pass the country object in the request body or the user’s IP address in the X-User-Ip header.
    1. If the country in the country.value parameter and the IP address in the X-User-Ip header are passed, the country value in the country.value parameter takes precedence.
Note
You can pass the currency in the currency parameter. This value takes precedence over the country value and affects the display of the payment currency. The payment methods in the payment interface will still be determined by the country value in the country.value parameter.

Principles of price display in the item catalog

For all items in the catalog, you should use the same list of currencies in which the prices are specified.

This is necessary so that all items in the catalog are displayed in the same currency. If the price is not specified for one of the items in one of the countries, the prices for the entire catalog in that country is displayed in the default currency.

If the default currency is different for items, then prices are displayed in the default currency of the first item in the catalog. If one of the items does not have a price in this currency, a price value of null will be returned for it in the response. This will lead to an incorrect display of the item price and may affect the display of the catalog as a whole.

Examples:

Who can use it

Partners who want to increase sales in countries with low purchasing power by setting the store’s pricing policy for users from different countries.

How to get it

You can add, edit, and delete regional prices:

Note
When importing a catalog from Google Play, items are added with regional prices that you can edit. Take into account the peculiarities of data updating when reimporting the catalog.

Setting up through the Publisher Account when creating and editing item

To create a virtual item with a regional price:
  1. Open your project in Publisher Account.
  2. Click Store in the side menu.
  3. In the Virtual Items pane, click Configure.
  4. Click + and select Create item from the drop-down list.
  1. Specify:
    • image
    • SKU
    • one or several groups the item should belong to
    • name
    • description
    • item property — consumable, non-consumable, or time-limited items
  2. In the Price settings block, choose Paid item.
  3. Switch the Pricing in real currency toggle to On and specify the price. If you do not set regional prices, the price of an item will be the same for all countries and in US dollars.
Note
You can change USD to another default currency.
Notice
You can’t create an item with a zero price value.
  1. Set up prices:
    • If you want to set up the price of an item in different currencies, click + and specify the currency and price.
    • If you want to set special prices for countries, click Add pricing and specify the country, currency, and quantity. You can set the number of regional prices you need.
  2. If you want to add the price in virtual currency, switch the Pricing in virtual currency toggle to On and specify the price.
  3. If you want to limit the availability of items to specific users, switch the Limit number of times one user can buy this item toggle to On and specify the number.
  4. If you want to show an item in the store, set the Show item in store toggle to On.
  5. Click Create item.

Import from file in the Publisher Account

You can import regional prices from a file for pre-created items.

Features

  • Upload or update regional prices for multiple items at once.
  • Support for items of all types:
    • virtual items
    • virtual currency
    • virtual currency packages
    • bundles
    • packages of game keys on a specific platform
  • Validation of uploaded data. If the file’s structure or data format does not meet the requirements, you will see a list of errors during the import.

File structure

The file must be in CSV format and contain the following columns:
Note
Do not change the English column names, as this may cause errors when importing the file.
  • SKU — the item SKU for which regional prices need to be set.
  • Country — the country code in ISO 3166-1 alpha-2 format. Check the list of countries supported by Xsolla before uploading the CSV file. Filling in cells in this column is optional. You can see examples of price display if the country is not specified.
  • Currency — the currency code is in ISO 4217 format.
  • Amount — the price of the item. Use a period for decimal points.
  • IsDefault — whether this is the default price. Specify:

    • 1 — this is for the row with the default price. It is displayed in all countries with no regional prices.
    • 0 — for all other rows. You can also leave the cell in the IsDefault column empty.

Note

The default price should not be regional - leave the cell in the Country column empty.

EXAMPLE

Correctly filled file (several items, 3 currencies, regional prices are available).

Incorrectly filled file (several items, 3 currencies, regional prices are available).
Error: In virtual-item-1 and bundle-1 the groups cells in the Country column aren’t empty.


When adding each new item, you must set the price in the default currency. If not specified, an error will be displayed when importing the file.

EXAMPLE

Correctly filled file (several items, 3 currencies, regional prices are available).

Incorrectly filled file (several items, 3 currencies, regional prices are available).
Error: There isn’t any default currency for virtual-item-1 and bundle-1 groups.

  • Platform — the platform SKU. It is used when setting regional prices for game keys but is not used for other items.

    Available platforms.
    Platform SKUPlatform name
    steamSteam
    playstationPlayStation
    xboxXbox
    uplayUplay
    originOrigin
    drmfreeDRM Free
    gogGOG
    epicgamesEpic Games Store
    nintendo_eshopNintendo Switch eShop
    discord_game_storeDiscord Game Store
    oculusOculus
    viveportViveport
    stadiaGoogle Stadia

Note

Game keys with the same SKU but different platforms are considered different entities. Each entity must have a price specified in the default currency.

EXAMPLE

Correctly filled file (several game keys, 3 currencies, regional prices are available, 2 platforms).

Incorrectly filled file (several game keys, 3 currencies, regional prices are available, 2 platforms).
Error 1: Incorrect grouping of game keys by SKU and Platform, resulting in nine entities being found instead of three.
Error 2: Groups 3, 4, 5, and 6 do not have a default price due to incorrect grouping.
Error 3: Group 9 will overwrite the data of group 7 because they have a full set of prices for the same entity. As a result, the game-key-2 for the playstation platform will only have a price in MYR after import.

Examples of file completion and possible errors

Examples of the correct filling of the CSV file for import:
Examples of incorrect filling of the CSV file for import:

File import

To import prices from a file:
  1. Open your project in Publisher Account.
  2. Click Store in the side menu and go to the section with any type of product.
  3. Click Import prices.

  1. In the import window, you can download the file template and add the values.
  2. Upload the file to the corresponding field in the import window.
  3. If there are any errors during the import, the import window displays a list of these errors and recommendations for correction. Make the necessary changes to the file and upload it again.

After successful upload, regional prices for items with the specified SKUs will be updated according to the prices in the file. Previously specified prices will be deleted.

Example:

There are several prices in different currencies and several regional prices for the item in the Publisher Account. In the imported file, there is only one price in EUR. After importing the file, only one price in EUR will be specified for this item in the Publisher Account.

Setting up using API methods

To set up regional prices through API methods, pass an array of objects with price settings for countries:Example of the array:
Copy
Full screen
Small screen
"prices": [
      {
        "amount": 100,
        "currency": "USD",
        "is_enabled": true,
        "is_default": true
      },
      {
        "amount": 200,
        "currency": "CZK",
        "country_iso": "CZ",
        "is_enabled": false,
        "is_default": false
      }
    ]
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.
Last updated: November 8, 2024

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!