Skip to main content
Every balance and inventory change happens on the server. The client can read state and request a transaction, but it can never write a balance.

Platform wallet

The platform wallet is shared across games. Players top it up with real money and spend it anywhere on SusaPlay.

Store catalogue

Items come from the economy config you defined in the Developer Portal.

Spending

The price is read from the economy config inside the same transaction that debits the wallet, so a price change mid-flight cannot be exploited. Grant the item in your game only after Success is true. Never grant optimistically.

Real-money purchases

Checkout is handled by the shell through Xsolla. Your game starts the flow and awaits the outcome.
Available top-up packs:
XsollaPurchaseResult: The purchase call waits up to three minutes — a player has to move through a real checkout. Show a waiting state rather than blocking input.
Entitlements are granted by the payment webhook on the server, not by this return value. If the player closes the tab mid-checkout, the purchase can still complete. Re-read the wallet on the next session rather than assuming a cancelled checkout means no charge.

Sandbox

Every purchase method takes a sandbox flag for testing against Xsolla’s sandbox:

In-app purchases (iOS / Android)

Native store receipt validation exists in the backend but is currently disabled. Real-money purchases go through Xsolla for all platforms today.