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. The response carries the id, name, description, icon, type, price and whether the item can be bought with wallet balance — it deliberately does not include the provider SKU, which the platform resolves at checkout.

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. Your game starts the flow and awaits the outcome — which payment provider takes the money is a platform setting, and your game never names one.
Available top-up packs:
PurchaseResult: 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, which requests the test lane:
The server decides whether to grant it. It is granted to platform admins and to a developer on their own games; every other caller transacts live whatever the flag says. A sandbox purchase credits a separate test wallet that never touches the live balance — WalletScope on the result tells you which one you are looking at, so a test purchase is never mistaken for one that failed to credit.

In-app purchases (iOS / Android)

Not supported. SusaPlay runs on WebGL, and the native store receipt-validation path has been removed. Every real-money purchase goes through the browser checkout described above.
SDK 2.0 renamed the purchase API off the payment provider: StartXsollaPurchase is now StartPurchase and XsollaPurchaseResult is now PurchaseResult, with no deprecated aliases. A game built against 1.x needs rebuilding against 2.0.