You’ve probably thought about adding coins, tokens, or credits to your app.
Maybe you want users to tip creators, unlock items, or buy credits for extra content.
But then you hit the hard part — building it.
Wallet balances, syncing, receipt validation, cross-device support…
Suddenly your “simple token system” looks like a mini-banking app.
Good news: RevenueCat’s Virtual Currency feature solves this entire problem.
And it does it in minutes — not weeks.
🧠 What is RevenueCat Virtual Currency?
If you’ve used RevenueCat for subscriptions or in-app purchases, this new feature will feel instantly familiar.
Virtual Currency lets you sell bundles of tokens or credits through the App Store or Play Store and automatically keep users’ balances in sync — no custom backend required.
Think of it as a ready-made wallet system that:
- Tracks balances across devices and platforms
- Restores tokens automatically after reinstall
- Handles all purchase validation and syncing
- Keeps your app logic clean and focused
⚙️ How to Add Virtual Currency in 3 Simple Steps
1️⃣ Create your virtual currency
In your RevenueCat dashboard, open Offerings → Virtual Currency and add a new one.

Give it a name like “Gold” or “Tokens”, define how many tokens are granted per purchase, and optionally upload an icon and description.

2️⃣ Connect your store product
Link the store product from the App Store or Play Store that represents the purchase.

RevenueCat automatically handles mapping and balance updates whenever a purchase is made.
3️⃣ Fetch the balance in your app
Use the SDK to check how many tokens a user has.
Here’s a quick Swift example:
// Fetch virtual currencies
// With Async/Await
let virtualCurrencies = try? await Purchases.shared.virtualCurrencies()
// With Completion Handlers
Purchases.shared.virtualCurrencies { virtualCurrencies, error in
// TODO: Handle virtual currencies & error
}
// Get the details of a specific virtual currency
let virtualCurrency = virtualCurrencies.all[<your_virtual_currency_code>]
let balance = virtualCurrency?.balance
let name = virtualCurrency?.name
let code = virtualCurrency?.code
// Keep in mind that serverDescription may be null if no description was provided
// in the RevenueCat dashboard
let description = virtualCurrency?.serverDescription
// Iterate through all virtual currencies
for(virtualCurrencyCode, virtualCurrencyInfo) in virtualCurrencies.all {
print("\(virtualCurrencyCode): \(virtualCurrencyInfo.balance)")
}That’s it — you can now use that value anywhere in your app:
to tip creators, unlock items, or reward users.
⚡ Why It Matters
Building your own system for virtual currency can easily take weeks of backend work — databases, APIs, syncing, validation, edge cases, outages…
With RevenueCat, it’s:
- Cross-platform from day one
- Accurate even during network outages
- Automatic for restores and subscriptions
- Completely managed — no extra infrastructure
That means you can focus on the fun part:
designing the experience, not maintaining ledgers.
💡 Bonus Tip: Reward Loyalty
You can also grant bonus tokens for:
- Yearly subscribers
- Milestones or streaks
- Promotions or special events
🧩 Real Example: The Blitch Tokens System
Imagine a streaming platform called Blitch.
Viewers subscribe for 100 Blitch Tokens per month and use them to tip creators.
Even if the user doesn’t open the app that month, RevenueCat automatically deposits tokens on schedule — balances stay accurate, and creators always get paid.
That’s the kind of system Virtual Currency makes possible — easily, safely, and at scale.
🧠 TL;DR
Adding virtual currency to your app is now:
- ✅ Simple — no custom backend
- 🚀 Fast — set up in minutes
- 🔒 Reliable — RevenueCat tracks everything
If you’re already using RevenueCat for in-app purchases or subscriptions, give this a try.
You’ll save yourself weeks of boilerplate — and your users will love the extra flexibility.
