Skip to content

Overview

Webhooks allow you to receive instant notifications of configured events that happen on Xsolla’s side. You can use webhooks to automate back-end and supplementary functions of your application.

Examples of events that you can be notified about:

  • payments, including purchases of virtual currency and items
  • recurring payments and actions with subscriptions
  • refunds

When a configured event occurs, Xsolla notifies your system about it via webhooks. For example, you can do the following after receiving a webhook:

  • add to a user’s balance
  • unlock new items for a user
  • start subscription service
  • block user after fraud detection

Below is an example of how a payment processing webhook works:

Payment processing webhook

Set up server side

The following settings have to be applied for webhooks to work correctly:

  • Listen to webhooks at the following IP addresses: 185.30.20.0/24, 185.30.21.0/24, 185.30.23.0/24.
  • Application database must not contain two successful transactions with the same ID.

Notice

If your listener receives a webhook with an existing transaction ID, it must return the previous result for that transaction. It is not recommended to charge the user twice or create duplicate records in the database.

  • A created signature has to match the one passed in the HTTP header.
  • In case of an error, return code 400 (e.g., when a required parameter is missing or a recharge has failed). For temporary errors with your servers, use code 500.

Note

Xsolla API accepts conventional HTTP response codes for successful and failed requests. Code 204 indicates successful processing.

As internet connections are not always 100% reliable, webhooks may be lost or delayed. To address this issue, Xsolla resends failed webhooks until your listener receives them. Webhook resends are sent within 12 hours after the previous one until your listener confirms receiving. The maximum number of retries is 12.

Note

Although connection problems may result in lost, delayed, or duplicate webhooks, the most common cause is incorrect logic on the listener side.

Sign requests

Digital signatures enable secure data transmission. To generate a signature:

  1. Concatenate the request’s JSON body with your project’s secret key.
  2. Apply SHA-1 hashing to the resulting string.
POST /your_uri HTTP/1.1
host: your.host
accept: application/json
content-type: application/json
content-length: 165
authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
  "notification_type":"user_validation",
  "user":{
      "ip":"127.0.0.1",
      "phone":"18777976552",
      "email":"email@example.com",
      "id":1234567,
      "name":"Xsolla User",
      "country":"US"
  }
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
  "notification_type":
    "user_validation",
    "user":
      {
        "ip": "127.0.0.1",
        "phone": "18777976552",
        "email": "email@example.com",
        "id": 1234567,
        "name": "Xsolla User",
        "country": "US"
      }
    }'

Errors

Error codes for HTTP code 400:

CodeMessage
INVALID_USERInvalid user
INVALID_PARAMETERInvalid parameter
INVALID_SIGNATUREInvalid signature
INCORRECT_AMOUNTIncorrect amount
INCORRECT_INVOICEIncorrect invoice
HTTP/1.1 400 Bad Request
{
    "error":{
        "code":"INVALID_USER",
        "message":"Invalid user"
    }
}
Download OpenAPI description
Languages
Servers
https://api.xsolla.com/merchant/v2/
Mock server
https://xsolla.redocly.app/_mock/deprecated-webhooks/
Webhooks

Request

Sent whenever a user completes a payment. Includes payment details.

Bodyapplication/json
notification_typestring(notification_type)required

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

userobject

User details (object).

user.​ipstring(user.ip)

User IP.

user.​phonestring(user.phone)

User phone.

user.​emailstring(user.email)

User email.

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​countrystring(user.country)

User’s country. Two-letter uppercase ISO 3166-1 alpha-2 country code.

user.​zipstring(user.zip)

User’s ZIP or postal code.

purchaseobject

Purchase details (object).

purchase.​checkoutobject

Checkout details (object).

purchase.​checkout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​checkout.​amountnumber(float)

Purchase amount.

purchase.​subscriptionobject

Subscription details (object).

purchase.​subscription.​plan_idstring(subscription.plan_id)

Plan ID (external if the plan was created via API).

purchase.​subscription.​subscription_idinteger(subscription.subscription_id)

Subscription ID in Xsolla database.

purchase.​subscription.​product_idstring

Product ID (if sent in the access token).

purchase.​subscription.​tagsArray of strings(subscription.tags)

Plan tags.

purchase.​subscription.​date_createstring(subscription.date_create)

Subscription creation date. Date and time per ISO 8601.

purchase.​subscription.​date_next_chargestring

Next billing date. Date and time per ISO 8601.

purchase.​subscription.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​subscription.​amountnumber(float)(amount-float)

Price in real currency.

purchase.​giftobject

Gift details (object).

purchase.​gift.​giver_idstring

Giver ID.

purchase.​gift.​receiver_idstring

Gift recipient ID.

purchase.​gift.​receiver_emailstring

Gift recipient email.

purchase.​gift.​messagestring

Message from the giver.

purchase.​gift.​hide_giver_from_receiverstring

Whether to hide the giver identity from the recipient.

purchase.​totalobjectrequired

Total price of purchase (object).

purchase.​total.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​total.​amountnumber(float)

Total payment amount.

purchase.​promotionsArray of objects

Promotions applied to this transaction.

purchase.​promotions[].​technical_namestring

Technical name of the promotion.

purchase.​promotions[].​idinteger

Promotion ID.

purchase.​couponobject

Coupon details (object; if a coupon was used when creating the subscription).

purchase.​coupon.​coupon_codestring

Coupon code.

purchase.​coupon.​campaign_codestring

Campaign code.

purchase.​orderobject

Object that contains information about an order. This information is not passed in the webhook by default. To enable this function, contact your Account Manager or email to am@xsolla.com.

purchase.​order.​idinteger

Order ID.

purchase.​order.​lineitemsobject

Object that contains information about an item.

purchase.​order.​lineitems.​skustring

Item SKU.

purchase.​order.​lineitems.​quantityinteger

Item quantity.

purchase.​order.​lineitems.​priceobject

Object that contains information about an item price.

purchase.​order.​lineitems.​price.​currencystring

Currency of the item price.

purchase.​order.​lineitems.​price.​amountnumber(float)

Total price of the item in the selected currency.

purchase.​virtual_currencyobjectDeprecated

Virtual currency to purchase (object).

purchase.​virtual_currency.​namestringDeprecated

Virtual currency name.

purchase.​virtual_currency.​skustringDeprecated

Virtual currency package SKU (if set for the virtual currency package).

purchase.​virtual_currency.​quantitynumber(float)Deprecated

Quantity.

purchase.​virtual_currency.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_currency.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

purchase.​virtual_itemsobjectDeprecated

Virtual items in purchase (object).

purchase.​virtual_items.​itemsArray of objectsDeprecated
purchase.​virtual_items.​items[].​skustringDeprecated

Item ID.

purchase.​virtual_items.​items[].​amountnumber(float)Deprecated

Item quantity.

purchase.​virtual_items.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_items.​amountnumber(float)Deprecated

Purchase amount.

purchase.​pin_codesobjectDeprecated

Game keys (array).

purchase.​pin_codes.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​drmstringDeprecated

DRM platform used to distribute the game. Make sure that you have configured the required DRM platforms in your Publisher Account.

Enum"steam""playstation""xbox""uplay""origin""drmfree""gog""epicgames""nintendo_eshop""discord_game_store"
purchase.​pin_codes.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​pin_codes.​amountnumber(float)Deprecated

Price.

purchase.​pin_codes.​upgradeobjectDeprecated

Object with upgrade data.

purchase.​pin_codes.​upgrade.​digital_content_fromobjectDeprecated

Object with data on the package, from which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_from.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_from.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​digital_content_toobjectDeprecated

Object with data on the package, to which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_to.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_to.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​pin_codes.​upgrade.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

transactionobjectrequired

Transaction details (object).

transaction.​idinteger

Transaction ID.

transaction.​external_idstring

Transaction external ID.

transaction.​payment_datestring

Date of payment.

transaction.​payment_methodinteger

Payment method ID.

transaction.​payment_method_namestring

Payment method name.

transaction.​payment_method_order_idstring

Payment ID in the payment system.

transaction.​dry_runinteger

Test transaction. The parameter has the 1 value if it is a test transaction, or is not sent if the transaction is real.

transaction.​agreementinteger

Agreement ID.

payment_detailsobjectrequired

Payment details (object).

payment_details.​paymentobject

Amount paid by the user (object).

payment_details.​payment.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment.​amountnumber(float)

Amount.

payment_details.​payment_method_sumobject

Amount debited from the payment system.

payment_details.​payment_method_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_sum.​amountnumber(float)

Amount.

payment_details.​xsolla_balance_sumobject

Amount debited from Xsolla balance.

payment_details.​xsolla_balance_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_balance_sum.​amountnumber(float)

Amount.

payment_details.​payoutobject

Payout details (object).

payment_details.​payout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payout.​amountnumber(float)

Amount.

payment_details.​vatobject

VAT details (object; EU only).

payment_details.​vat.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​vat.​amountnumber(float)

Amount.

payment_details.​vat.​percentnumber(float)

VAT rate.

payment_details.​payout_currency_ratestring

Exchange rate between payment and payout currencies.

payment_details.​xsolla_feeobject

Xsolla fee (object).

payment_details.​xsolla_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_fee.​amountnumber(float)

Amount.

payment_details.​payment_method_feeobject

Payment system fee.

payment_details.​payment_method_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_fee.​amountnumber(float)

Amount.

payment_details.​sales_taxobject

Sales tax (object; USA and Canada only).

payment_details.​sales_tax.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​sales_tax.​amountnumber(float)

Amount.

payment_details.​sales_tax.​percentnumber(float)

Sales tax rate.

payment_details.​direct_whtobject

Direct withholding tax.

payment_details.​direct_wht.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​direct_wht.​amountnumber(float)

Amount.

payment_details.​direct_wht.​percentnumber(float)

Direct withholding tax rate.

payment_details.​repatriation_commissionobject

Object with data on repatriation costs, imposed on Xsolla by third parties.

payment_details.​repatriation_commission.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​repatriation_commission.​amountnumber(float)

Amount.

custom_parametersobject

Your custom parameters.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-d '{
    "notification_type": "payment",
    "settings": {
      "project_id": 18404,
      "merchant_id": 2340
    },
    "purchase": {
        "virtual_currency": {
            "name": "Coins",
            "sku": "com.xsolla.package1",
            "quantity": 10,
            "currency": "USD",
            "amount": 100
        },
        "subscription": {
            "plan_id": "b5dac9c8",
            "subscription_id": "10",
            "product_id": "Demo Product",
            "date_create": "2014-09-22T19:25:25+04:00",
            "date_next_charge": "2014-10-22T19:25:25+04:00",
            "currency": "USD",
            "amount": 9.99
        },
        "checkout": {
            "currency": "USD",
            "amount": 50
        },
        "virtual_items": {
            "items": [
                {
                    "sku": "com.xsolla.item1",
                    "amount": 1
                }
            ],
            "currency": "USD",
            "amount": 50
        },
        "total": {
            "currency": "USD",
            "amount": 200
        },
        "promotions": [{
            "technical_name": "Demo Promotion",
            "id": "853"
        }],
        "coupon": {
            "coupon_code": "ICvj45S4FUOyy",
            "campaign_code": "1507"
        },
        "order": {
          "id": 1234
          "lineitems": [
          {
            "sku": "com.xsolla.item_1",
            "quantity": 1,
            "price": {
              "currency": "EUR",
              "amount": 6.5
              }
          }
          ]
          }
    },
    "user": {
        "ip": "127.0.0.1",
        "phone": "18777976552",
        "email": "email@example.com",
        "id": "1234567",
        "name": "Xsolla User",
        "country": "US"
    },
    "transaction": {
        "id": 1,
        "external_id": 1,
        "payment_date": "2014-09-24T20:38:16+04:00",
        "payment_method": 1,
        "payment_method_name": "PayPal",
        "payment_method_order_id": 1234567890123456789,
        "dry_run": 1,
        "agreement": 1
    },
    "payment_details": {
        "payment": {
            "currency": "USD",
            "amount": 230
        },
        "vat": {
            "currency": "USD",
            "amount": 0,
            "percent": 20
        },
        "sales_tax": {
            "currency": "USD",
            "amount": 0,
            "percent": 0
        },
        "direct_wht": {
            "currency": "USD",
            "amount": 0,
            "percent": 0
        },
        "payout_currency_rate": 1,
        "payout": {
            "currency": "USD",
            "amount": 200
        },
        "xsolla_fee": {
            "currency": "USD",
            "amount": 10
        },
        "payment_method_fee": {
            "currency": "USD",
            "amount": 20
        },
        "repatriation_commission": {
            "currency": "USD",
            "amount": 10
        }
    },
    "custom_parameters": {
        "parameter1": "value1",
        "parameter2": "value2"
    }
}'

Responses

Return to indicate successful processing.

Response
No content

Request

When a payment is canceled, Xsolla sends details of the canceled transaction in a webhook with the refund type to the webhook URL.

The webhook retry mechanism depends on who initiated the refund:

  • If the refund was initiated on your side, the webhook isn’t resent. The payment is refunded to the user regardless of the response to a webhook.
  • If the refund was initiated by a third party — e.g., a payment system or Xsolla Customer Support team — and in response to a webhook, a 5xx status code was returned, the webhook is resent at increasing intervals. The maximum number of retries is 12 within 48 hours from the first attempt.

For detailed information about the refund process, refer to the instructions.

Notice

The payment will still be refunded to the user if all of the following conditions are met:

  • The refund was initiated by Xsolla.
  • In response to a webhook, a 4xx status code was returned, or no response was received after all retry attempts, or a 5xx status code was returned.

When you save the webhook URL in Publisher Account, you can also set up receiving additional information in webhooks.

Note

If you registered in Publisher Account on or before January 22, 2025, you can find the toggles in your project in the Settings > Webhooks > Testing > Payments > Advanced settings section.

ToggleDescription
Show info about transactions via saved payment methods

Information is passed in the following custom parameters of the webhook:

  • saved_payment_method:
    • 0 — the saved payment method was not used
    • 1 — the payment method was saved when making the current payment
    • 2 — the previously saved payment method is used
  • payment_type:
    • 1 — one-time payment
    • 2 — recurring payment

Refund codes:

CodeReasonDescription
1Cancellation by the user request / the game requestCancellation initiated from Publisher Account.
2ChargebackTransaction chargeback requested.
3Integration errorIssues in integration between Xsolla and the game.
Recommendation: Do not add the user to blocklist.
4Potential fraudFraud suspected.
Recommendation: Add the user to blocklist.
5Test paymentTest transaction followed by cancellation.
Recommendation: Do not add the user to blocklist.
6User invoice expiredInvoice overdue (used for postpaid model).
7Fraud notification from PSPayment refused by payment system. Potential fraud detected by PS.
Recommendation: Add the user to blocklist.
8Cancellation by the PS requestCancellation requested by payment system.
Recommendation: Do not add the user to blocklist.
9Cancellation by the user requestThe user was not satisfied with the game or the purchase for any reason.
Recommendation: Do not add the user to blocklist.
10Cancellation by the game requestCancellation requested by the game.
Recommendation: Do not add the user to blocklist.
11Account holder called to report fraudThe account owner states that they didn’t make the transaction.
12Friendly fraudFriendly fraud reported.
13DuplicateDuplicate transaction for the same invoice.
Bodyapplication/json
notification_typestring(notification_type)required

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

userobject

User details (object).

user.​ipstring(user.ip)

User IP.

user.​phonestring(user.phone)

User phone.

user.​emailstring(user.email)

User email.

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​countrystring(user.country)

User’s country. Two-letter uppercase ISO 3166-1 alpha-2 country code.

user.​zipstring(user.zip)

User’s ZIP or postal code.

purchaseobject

Purchase details (object).

purchase.​checkoutobject

Checkout details (object).

purchase.​checkout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​checkout.​amountnumber(float)

Purchase amount.

purchase.​subscriptionobject

Subscription details (object).

purchase.​subscription.​plan_idstring(subscription.plan_id)

Plan ID (external if the plan was created via API).

purchase.​subscription.​subscription_idinteger(subscription.subscription_id)

Subscription ID in Xsolla database.

purchase.​subscription.​tagsArray of strings(subscription.tags)

Plan tags.

purchase.​subscription.​date_createstring(subscription.date_create)

Subscription creation date. Date and time per ISO 8601.

purchase.​subscription.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​subscription.​amountnumber(float)(amount-float)

Price in real currency.

purchase.​totalobjectrequired

Total price of purchase (object).

purchase.​total.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​total.​amountnumber(float)

Total payment amount.

purchase.​virtual_currencyobjectDeprecated

Virtual currency to purchase (object).

purchase.​virtual_currency.​namestringDeprecated

Virtual currency name.

purchase.​virtual_currency.​quantitynumber(float)Deprecated

Quantity.

purchase.​virtual_currency.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_currency.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

purchase.​virtual_itemsobjectDeprecated

Virtual items in purchase (object).

purchase.​virtual_items.​itemsArray of objectsDeprecated
purchase.​virtual_items.​items[].​skustringDeprecated

Item ID.

purchase.​virtual_items.​items[].​amountnumber(float)Deprecated

Item quantity.

purchase.​virtual_items.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_items.​amountnumber(float)Deprecated

Purchase amount.

purchase.​pin_codesobjectDeprecated

Game keys (array).

purchase.​pin_codes.​upgradeobject

Object with upgrade data.

purchase.​pin_codes.​upgrade.​digital_content_fromobjectDeprecated

Object with data on the package, from which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_from.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_from.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​digital_content_toobjectDeprecated

Object with data on the package, to which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_to.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_to.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​pin_codes.​upgrade.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

transactionobjectrequired

Transaction details (object).

transaction.​idinteger

Transaction ID.

transaction.​external_idstring

Transaction external ID.

transaction.​payment_method_order_idstring

Payment ID in the payment system.

transaction.​dry_runinteger

Test transaction. The parameter has the 1 value if it is a test transaction, or is not sent if the transaction is real.

transaction.​agreementinteger

Agreement ID.

refund_detailsobject

Refund details (object).

refund_details.​codeinteger

Code ID.

refund_details.​reasonstring

Refund reason.

refund_details.​authorstring

Refund initiator. The field value is passed according to the table:

Refund initiatorField value
Game (via API).API
Publisher Account user (automatic refund).User email
Publisher Account user (with assistance from Xsolla customer support).support@xsolla.com
Xsolla (with assistance from Xsolla customer support).support@xsolla.com
payment_detailsobjectrequired

Payment details (object).

payment_details.​paymentobject

Amount paid by the user (object).

payment_details.​payment.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment.​amountnumber(float)

Amount.

payment_details.​payment_method_sumobject

Amount debited from the payment system.

payment_details.​payment_method_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_sum.​amountnumber(float)

Amount.

payment_details.​xsolla_balance_sumobject

Amount debited from Xsolla balance.

payment_details.​xsolla_balance_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_balance_sum.​amountnumber(float)

Amount.

payment_details.​payoutobject

Payout details (object).

payment_details.​payout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payout.​amountnumber(float)

Amount.

payment_details.​vatobject

VAT details (object; EU only).

payment_details.​vat.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​vat.​amountnumber(float)

Amount.

payment_details.​vat.​percentnumber(float)

VAT rate.

payment_details.​payout_currency_ratestring

Exchange rate between payment and payout currencies.

payment_details.​xsolla_feeobject

Xsolla fee (object).

payment_details.​xsolla_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_fee.​amountnumber(float)

Amount.

payment_details.​payment_method_feeobject

Payment system fee.

payment_details.​payment_method_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_fee.​amountnumber(float)

Amount.

payment_details.​sales_taxobject

Sales tax (object; USA and Canada only).

payment_details.​sales_tax.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​sales_tax.​amountnumber(float)

Amount.

payment_details.​sales_tax.​percentnumber(float)

Sales tax rate.

payment_details.​direct_whtobject

Direct withholding tax.

payment_details.​direct_wht.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​direct_wht.​amountnumber(float)

Amount.

payment_details.​direct_wht.​percentnumber(float)

Direct withholding tax rate.

payment_details.​repatriation_commissionobject

Object with data on repatriation costs, imposed on Xsolla by third parties.

payment_details.​repatriation_commission.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​repatriation_commission.​amountnumber(float)

Amount.

custom_parametersobject

Your custom parameters.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-d '{
        "notification_type": "refund",
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "purchase": {
            "virtual_currency": {
                "name": "Coins",
                "quantity": 10,
                "currency": "USD",
                "amount": 100
            },
            "subscription": {
                "plan_id": "b5dac9c8",
                "subscription_id": "10",
                "date_create": "2014-09-22T19:25:25+04:00",
                "currency": "USD",
                "amount": 9.99
            },
            "checkout": {
                "currency": "USD",
                "amount": 50
            },
            "virtual_items": {
                "items": [
                    {
                        "sku": "com.xsolla.item1",
                        "amount": 1
                    }
                ],
                "currency": "USD",
                "amount": 50
            },
            "total":{
                "currency": "USD",
                "amount": 200
            }
        },
        "user": {
            "ip": "127.0.0.1",
            "phone": "18777976552",
            "email": "email@example.com",
            "id": "1234567",
            "name": "Xsolla User",
            "country": "US"
        },
        "transaction": {
            "id": 1,
            "external_id": 1,
            "dry_run": 1,
            "agreement": 1
        },
        "refund_details": {
            "code": 4,
            "reason": "Potential fraud"
        },
        "payment_details": {
            "sales_tax": {
                "currency": "USD",
                "amount": 0
            },
            "direct_wht": {
                "currency": "USD",
                "amount": 0.70
            },
            "xsolla_fee": {
                "currency": "USD",
                "amount": "10"
            },
            "payout": {
                "currency": "USD",
                "amount": "200"
            },
            "payment_method_fee": {
                "currency": "USD",
                "amount": "20"
            },
            "payment": {
                "currency": "USD",
                "amount": "230"
            },
            "repatriation_commission": {
                "currency": "USD",
                "amount": 10
            }
        }
    }
}'

Responses

Return to indicate successful processing.

Response
No content

Request

When a partial refund is made, Xsolla sends details of the canceled transaction in a webhook with the partial_refund type to the webhook URL. Learn more about the partial refund process in these instructions.

When you save the webhook URL in Publisher Account, you can give permissions to receive detailed information in webhooks. To do that, set the following toggle to active in Publisher Account in the Project settings > Webhooks > Advanced settings section.

Note

If you registered in Publisher Account on or before January 22, 2025, you can find the toggles in the Project settings > Webhooks > Testing > Payments > Advanced settings section.

ToggleDescription
Show info about transactions via saved payment methods

Information is passed in the following custom parameters of the webhook:

  • saved_payment_method:
    • 0 — the saved payment method was not used
    • 1 — the payment method was saved when making the current payment
    • 2 — the previously saved payment method is used
  • payment_type:
    • 1 — one-time payment
    • 2 — recurring payment

Refund codes:

CodeReasonDescription
1Cancellation by the user request / the game requestCancellation initiated from Publisher Account.
3Integration errorIssues in integration between Xsolla and the game.
Recommendation: Do not add the user to blocklist.
5Test paymentTest transaction followed by cancellation.
Recommendation: Do not add the user to blocklist.
7Fraud notification from PSPayment refused by payment system. Potential fraud detected by PS.
Recommendation: Add the user to blocklist.
9Cancellation by the user requestThe user was not satisfied with the game or the purchase for any reason.
Recommendation: Do not add the user to blocklist.
10Cancellation by the game requestCancellation requested by the game.
Recommendation: Do not add the user to blocklist.
Bodyapplication/json
notification_typestring(notification_type)required

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

userobject

User details (object).

user.​ipstring(user.ip)

User IP.

user.​phonestring(user.phone)

User phone.

user.​emailstring(user.email)

User email.

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​countrystring(user.country)

User’s country. Two-letter uppercase ISO 3166-1 alpha-2 country code.

user.​zipstring(user.zip)

User’s ZIP or postal code.

purchaseobject

Purchase details (object).

purchase.​checkoutobject

Checkout details (object).

purchase.​checkout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​checkout.​amountnumber(float)

Purchase amount.

purchase.​totalobjectrequired

Total price of purchase (object).

purchase.​total.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

purchase.​total.​amountnumber(float)

Partial refund payment amount.

purchase.​virtual_currencyobjectDeprecated

Virtual currency to purchase (object).

purchase.​virtual_currency.​namestringDeprecated

Virtual currency name.

purchase.​virtual_currency.​quantitynumber(float)Deprecated

Quantity.

purchase.​virtual_currency.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_currency.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

purchase.​virtual_itemsobjectDeprecated

Virtual items in purchase (object).

purchase.​virtual_items.​itemsArray of objectsDeprecated
purchase.​virtual_items.​items[].​skustringDeprecated

Item ID.

purchase.​virtual_items.​items[].​amountnumber(float)Deprecated

Item quantity.

purchase.​virtual_items.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​virtual_items.​amountnumber(float)Deprecated

Purchase amount.

purchase.​pin_codesobjectDeprecated

Game keys (array).

purchase.​pin_codes.​upgradeobject

Object with upgrade data.

purchase.​pin_codes.​upgrade.​digital_content_fromobjectDeprecated

Object with data on the package, from which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_from.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_from.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​digital_content_toobjectDeprecated

Object with data on the package, to which the user upgraded.

purchase.​pin_codes.​upgrade.​digital_content_to.​digital_contentstringDeprecated

Game SKU set in Publisher Account.

purchase.​pin_codes.​upgrade.​digital_content_to.​DRMstringDeprecated

Game DRM platform.

purchase.​pin_codes.​upgrade.​currencystring(currency)Deprecated

Currency. Three-letter currency code per ISO 4217.

purchase.​pin_codes.​upgrade.​amountnumber(float)(amount-float)Deprecated

Price in real currency.

transactionobjectrequired

Transaction details (object).

transaction.​idinteger

Transaction ID.

transaction.​external_idstring

Transaction external ID.

transaction.​dry_runinteger

Test transaction. The parameter has the 1 value if it is a test transaction, or is not sent if the transaction is real.

transaction.​agreementinteger

Agreement ID.

transaction.​datestring

Date of transaction.

refund_detailsobject

Refund details (object).

refund_details.​codeinteger

Code ID.

refund_details.​reasonstring

Refund reason.

refund_details.​authorstring

Refund initiator. The field value is passed according to the table:

Refund initiatorField value
Game (via API).API
Publisher Account user (automatic refund).User email
Publisher Account user (with assistance from Xsolla customer support).support@xsolla.com
Xsolla (with assistance from Xsolla customer support).support@xsolla.com
refund_details.​datestring

Date of refund.

payment_detailsobjectrequired

Payment details (object).

payment_details.​paymentobject

Amount paid by the user (object).

payment_details.​payment.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment.​amountnumber(float)

Amount.

payment_details.​payment_method_sumobject

Amount debited from the payment system.

payment_details.​payment_method_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_sum.​amountnumber(float)

Amount.

payment_details.​xsolla_balance_sumobject

Amount debited from Xsolla balance.

payment_details.​xsolla_balance_sum.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_balance_sum.​amountnumber(float)

Amount.

payment_details.​payoutobject

Payout details (object).

payment_details.​payout.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payout.​amountnumber(float)

Amount.

payment_details.​vatobject

VAT details (object; EU only).

payment_details.​vat.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​vat.​amountnumber(float)

Amount.

payment_details.​vat.​percentnumber(float)

VAT rate.

payment_details.​payout_currency_ratestring

Exchange rate between payment and payout currencies.

payment_details.​xsolla_feeobject

Xsolla fee (object).

payment_details.​xsolla_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​xsolla_fee.​amountnumber(float)

Amount.

payment_details.​payment_method_feeobject

Payment system fee.

payment_details.​payment_method_fee.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​payment_method_fee.​amountnumber(float)

Amount.

payment_details.​sales_taxobject

Sales tax (object; USA and Canada only).

payment_details.​sales_tax.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​sales_tax.​amountnumber(float)

Amount.

payment_details.​sales_tax.​percentnumber(float)

Sales tax rate.

payment_details.​direct_whtobject

Direct withholding tax.

payment_details.​direct_wht.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​direct_wht.​amountnumber(float)

Amount.

payment_details.​direct_wht.​percentnumber(float)

Direct withholding tax rate.

payment_details.​repatriation_commissionobject

Object with data on repatriation costs, imposed on Xsolla by third parties.

payment_details.​repatriation_commission.​currencystring(currency)

Currency. Three-letter currency code per ISO 4217.

payment_details.​repatriation_commission.​amountnumber(float)

Amount.

custom_parametersobject

Your custom parameters.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-d '{
        "notification_type": "partial_refund",
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "purchase": {
            "virtual_currency": {
                "name": "Coins",
                "quantity": 10,
                "currency": "USD",
                "amount": 100
            },
            "checkout": {
                "currency": "USD",
                "amount": 50
            },
            "virtual_items": {
                "items": [
                    {
                        "sku": "com.xsolla.item1",
                        "amount": 1
                    }
                ],
                "currency": "USD",
                "amount": 50
            },
            "total":{
                "currency": "USD",
                "amount": 200
            }
        },
        "user": {
            "ip": "127.0.0.1",
            "phone": "18777976552",
            "email": "email@example.com",
            "id": "1234567",
            "name": "Xsolla User",
            "country": "US"
        },
        "transaction": {
            "id": 1,
            "external_id": 1,
            "dry_run": 1,
            "agreement": 1,
            "date": "2022-03-01 10:53:15"
        },
        "refund_details": {
            "author": "email@example.com",
            "date": "2022-03-01 10:56:48"
        },
        "payment_details": {
            "sales_tax": {
                "currency": "USD",
                "amount": 0
            },
            "direct_wht": {
                "currency": "USD",
                "amount": 0.70
            },
            "xsolla_fee": {
                "currency": "USD",
                "amount": "10"
            },
            "payout": {
                "currency": "USD",
                "amount": "200"
            },
            "payment_method_fee": {
                "currency": "USD",
                "amount": "20"
            },
            "payment": {
                "currency": "USD",
                "amount": "230"
            },
            "repatriation_commission": {
                "currency": "USD",
                "amount": 10
            }
        }
    }
}'

Responses

Return to indicate successful processing.

Response
No content

Request

We will be making API calls to your server to obtain game activation codes after each successful payment.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

pin_codeobject

Game keys details (object).

pin_code.​digital_contentstring

Game SKU.

pin_code.​DRMstring

DRM platform used to distribute the game.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "notification_type": "get_pincode",
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "user": {
            "id": "1234567",
            "name": "Xsolla User"
        },
        "pin_code": {
            "digital_content": "Game SKU",
            "DRM": "Steam"
        }
    }'

Responses

Return the game key.

Bodyapplication/json
pin_codestring
Response
application/json
{ "pin_code": "AAA-BBB-CCC-DDD" }

Request

When a user activates a key, Xsolla sends a notification to your webhook URL.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

keystring

Activation key.

skustring

Unique key package ID.

user_idstring(user.id)

User ID.

activation_datestring(datetime)

Key activation date in the YYYYMMDDHHMMSS format per ISO 8601.

user_countrystring(user.country)

User’s country. Two-letter uppercase ISO 3166-1 alpha-2 country code.

restrictionobject

Object with regional restriction cluster settings. The cluster includes a restriction type and a list of countries, servers and locales for which the game is available.

restriction.​skustring

Unique cluster ID.

restriction.​namestring

Cluster name.

restriction.​typesArray of strings

Array of restriction types.

restriction.​countriesArray of strings

Array of countries in the cluster.

restriction.​serversArray of strings

Array of game servers.

restriction.​localesArray of strings

Array of locales.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
  "notification_type": "redeem_key",
  "settings": {
        "project_id": 18404,
        "merchant_id": 2340
  },
  "key": "wqdqwwddq9099022",
  "sku": "com.xsolla.key_123",
  "user_id": "sample_user",
  "activation_date": "2018-11-20T08:38:51+03:00",
  "user_country": "EN",
  "restriction": {
      "name": "cls_1",
      "types": [
          "activation"
        ],
        "countries": [
            "RU"
        ]
    }
}'

Responses

Return to indicate successful processing.

Response
No content

Request

Sent whenever a user makes a payment.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

operation_typestring

Type of operation.

id_operationinteger

Operation ID in Xsolla database.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​emailstring(user.email)

User email.

virtual_currency_balanceobject

User balance data (object).

virtual_currency_balance.​old_valuestring

Balance before transaction.

virtual_currency_balance.​new_valuestring

Balance after transaction.

virtual_currency_balance.​diffstring

Quantity of virtual currency in the purchase.

transactionobjectrequired

Transaction details (object).

transaction.​idinteger

Transaction ID.

transaction.​datestring

Date of transaction.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "virtual_currency_balance": {
            "old_value": "0",
            "new_value": "200",
            "diff": "200"
        },
        "user": {
            "name": "Xsolla User",
            "id": "1234567",
            "email": "email@example.com"
        },
        "transaction": {
            "id": "123456789",
            "date": "2015-05-19T15:54:40+03:00"
        },
        "operation_type": "payment",
        "notification_type": "user_balance_operation",
        "id_operation": "66989"
    }'

Responses

Return to indicate successful processing.

Response
No content

Request

Sent when a user purchases something inside the game. Specifies the change in the user’s balance.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

operation_typestring

Type of operation.

id_operationinteger

Operation ID in Xsolla database.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​emailstring(user.email)

User email.

virtual_currency_balanceobject

User balance data (object).

virtual_currency_balance.​old_valuestring

Balance before transaction.

virtual_currency_balance.​new_valuestring

Balance after transaction.

virtual_currency_balance.​diffstring

Quantity of virtual currency in the purchase.

items_operation_typestring

Type of operation made with virtual items.

itemsArray of objects

Virtual items within the purchase.

items[].​skustring

Item ID.

items[].​amountinteger

Item quantity.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "settings": {
            "project_id": 18404,
            "merchant_id": 2340
        },
        "virtual_currency_balance": {
            "old_value": "0",
            "new_value": "200",
            "diff": "200"
        },
        "user": {
            "name": "Xsolla User",
            "id": "1234567",
            "email": "email@example.com"
        },
        "operation_type": "inGamePurchase",
        "notification_type": "user_balance_operation",
        "items_operation_type": "add",
            "items": [{
            "sku": "com.xsolla.item_1468",
            "amount": "2"
            }],
        "id_operation": "66989"
    }'

Responses

Return to indicate successful processing.

Response
No content

User balance: Redeem couponWebhook

Request

Sent when a user redeems a coupon to receive virtual items or virtual currency.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

operation_typestring

Type of operation.

id_operationinteger

Operation ID in Xsolla database.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​emailstring(user.email)

User email.

virtual_currency_balanceobject

User balance data (object).

virtual_currency_balance.​old_valuestring

Balance before transaction.

virtual_currency_balance.​new_valuestring

Balance after transaction.

virtual_currency_balance.​diffstring

Quantity of virtual currency in the purchase.

items_operation_typestring

Type of operation made with virtual items.

itemsArray of objects

Virtual items within the purchase.

couponobject

Coupon details (object).

coupon.​coupon_codestring

Coupon code.

coupon.​campaign_codestring

Campaign code.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "settings": {
            "project_id": 18404,
            "merchant_id": 2340
        },
        "virtual_currency_balance": {
            "old_value": "0",
            "new_value": "0",
            "diff": "0"
        },
        "user": {
            "name": "Xsolla User",
            "id": "1234567",
            "email": "email@example.com"
        },
        "operation_type": "coupon",
        "notification_type": "user_balance_operation",
        "items_operation_type": "add",
            "items": [{
                "sku": "com.xsolla.item_1468",
                "amount": "2"
            }],
        "id_operation": "66989",
        "coupon": {
            "coupon_code": "test123",
            "campaign_code": "Xsolla Campaign"
        }
    }'

Responses

Return to indicate successful processing.

Response
No content

User balance: Manual updateWebhook

Request

Sent when a user’s balance is changed manually.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

operation_typestring

Type of operation.

id_operationinteger

Operation ID in Xsolla database.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​emailstring(user.email)

User email.

virtual_currency_balanceobject

User balance data (object).

virtual_currency_balance.​old_valuestring

Balance before transaction.

virtual_currency_balance.​new_valuestring

Balance after transaction.

virtual_currency_balance.​diffstring

Quantity of virtual currency in the purchase.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "virtual_currency_balance": {
            "old_value": "0",
            "new_value": "100",
            "diff": "100"
        },
        "user": {
            "name": "Xsolla User",
            "id": "1234567",
            "email": "email@example.com"
        },
        "operation_type": "internal",
        "notification_type": "user_balance_operation",
        "id_operation": "67002"
    }'

Responses

Return to indicate successful processing.

Response
No content

Request

Sent when a user cancels a payment. Specifies the change in the user’s balance.

Bodyapplication/json
notification_typestring(notification_type)

Notification type.

settingsobject

Custom project settings (object).

settings.​project_idinteger(settings.project_id)

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

settings.​merchant_idinteger(settings.merchant_id)

Merchant ID.

operation_typestring

Type of operation.

id_operationinteger

Operation ID in Xsolla database.

userobject

User details (object).

user.​idstring(user.id)required

User ID.

user.​namestring(user.name)

Username.

user.​emailstring(user.email)

User email.

virtual_currency_balanceobject

User balance data (object).

virtual_currency_balance.​old_valuestring

Balance before transaction.

virtual_currency_balance.​new_valuestring

Balance after transaction.

virtual_currency_balance.​diffstring

Quantity of virtual currency in the purchase.

transactionobjectrequired

Transaction details (object).

transaction.​idinteger

Transaction ID.

transaction.​datestring

Date of transaction.

items_operation_typestring

Type of operation made with virtual items.

itemsArray of objects

Virtual items within the purchase.

items[].​skustring

Item ID.

items[].​amountinteger

Item quantity.

curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '{
        "settings": {
          "project_id": 18404,
          "merchant_id": 2340
        },
        "virtual_currency_balance": {
            "old_value": "0",
            "new_value": "0",
            "diff": "0"
        },
        "user": {
            "name": "Xsolla User",
            "id": "1234567",
            "email": "email@example.com"
        },
        "transaction": {
            "id": "123456789",
            "date": "2015-05-19T15:54:40+03:00"
        },
        "operation_type": "cancellation",
        "notification_type": "user_balance_operation",
        "items_operation_type": "remove",
            "items": [{
                "sku": "com.xsolla.item_1468",
                "amount": "2"
            }],
        "id_operation": "66989"
    }'

Responses

Return to indicate successful processing.

Response
No content