Virtual currency balance
Main article: Virtual currencies
Every user profile in Profiles/CRM shows that user’s virtual currency balance, along with a history of every change.
View balances in a user profile

Open the user’s profile. The Virtual currency card lists every currency the user holds.
Each row shows:
- The currency code, such as
COINS. - The current balance, as a whole number.
Balances update as the user earns, spends, or receives credits. A balance can’t go below 0: a transaction that tries to spend more than the user holds fails with insufficient_balance and changes nothing. A profile with no balances shows an empty card.
To read a balance from your own code instead, call List virtual currency balances in the server-side API.
Review balance changes in the event history
Every balance change appears in the profile’s event history, newest first. Each entry names the change and lists the currencies it affected.
The history shows three virtual currency events:
- Virtual currency credited: A purchase, renewal, or trial start granted credits.
- Virtual currency transaction: A server-side API call credited or debited the balance.
- Virtual currency expired: Expiring credits reset at the end of a billing cycle, or when the subscription ended.
Each entry lists, for every currency it changed:
- Virtual currency: The currency name and code, such as
Gold Coins (COINS). - Amount: The signed change — positive for a credit, negative for a debit.
- Balance after: The currency’s balance once the change applied.
One event can change several currencies at once — for example, a single transaction that debits one currency and credits another to convert between them.
Balances, profiles, and devices
A balance always belongs to exactly one profile and never moves to another one. Adapty does not share or transfer balances between profiles the way it can share access levels between user accounts.
In practice, this means:
- Identified users: A customer user ID always resolves to the same profile, so the user sees the same balance on every device where they log in.
- Anonymous users: An anonymous profile can earn and spend credits, but it exists only on one device. When the same user opens your app on another device without logging in, Adapty creates a new anonymous profile with a zero balance.
So, to run a virtual currency economy across devices, identify your users. You can identify them in the app code through the SDK (see Identify users in the quickstart) or from your backend through the server-side API.
Identifying a user late has a caveat of its own: if a user earns credits anonymously and then logs in with a customer user ID that already belongs to another profile, the device switches to that profile and its balance. The credits earned anonymously stay on the old profile and become unreachable. If the customer user ID is new, it attaches to the current profile, and the user keeps the balance. To be safe, identify users before they can earn or buy credits.
In server-side API calls, identify the profile with the adapty-profile-id or adapty-customer-user-id header — both resolve to a single profile. For anonymous profiles, use adapty-profile-id.