# Virtual Currency Overview

> Learn about Tapjoy Offerwall self-managed and Tapjoy-managed virtual currencies to choose and configure the right one based on your Flutter app's needs.

Tapjoy offers two methods to integrate virtual currency into your application: Tapjoy-managed currency and self-managed currency.

## Tapjoy-managed currency (Recommended)

Use Tapjoy-managed currency to store users' currency balances on Tapjoy's servers. This free service, available to developers using Tapjoy's publisher SDKs, removes the need for back-end infrastructure to manage currency data.

> **Note:**
>
> Applications that use **Tapjoy-managed currency** can't support additional Tapjoy currencies.

## Self-managed currency

Use self-managed currency to store and manage users' currency balances on your own servers. This approach provides greater control but requires you to handle all back-end storage and currency management.

> **Note:**
>
> You can implement multiple self-managed currencies within a single application. To use multiple Tapjoy currencies, you must select the self-managed option. Combining managed and self-managed currencies isn't supported.

## Choosing a currency management type

The recommended best practice is to use a self-managed currency for its access to additional features. The following table compares the features of the two currency options:

| Currency feature               | Tapjoy-managed | Self-managed |
| ------------------------------ | :------------: | :----------: |
| Multiple currencies            |       No       |      Yes     |
| Control over user balance      |       No       |      Yes     |
| Reward IDs for troubleshooting |       NO       |      Yes     |
| Visibility into transactions   |       No       |      Yes     |
| Simple setup                   |       Yes      |      Yes     |
| Fewer SDK calls                |       Yes      |      No      |

## Sett up virtual currency

> **Note:**
>
> You can't delete Virtual currencies after creating them. Exercise caution to avoid cluttering your currency list. You must create a separate currency for each platform (iOS and Android).

### Dashboard configuration

![Virtual currency configuration](/api/media?file=/grow/media/images/virtual-currency-config.png)

To set up virtual currency directly through the Tapjoy Dashboard interface, complete the following steps:

1. Select your app from the list in the upper-right corner.

2. Select **Virtual Currency** in the left side navigation.

3. Select **Add Virtual Currency** in the upper-right.

4. Complete the form. Refer to the following best practices for your currency configuration:

**Set a currency exchange rate with enough granularity:**An example of a currency exchange rate with granularity is `100 = $1`. A rate such as `2 = $1` might reduce fill rates, because some offers might not be worth one unit of currency.**Avoid high exchange rates:**An example of a too high exchange rate is `100,000,000 = $1`. For Android, the maximum currency balance is 2,147,483,647.  Avoid exchange rates that exceed this limit and block the balance retrieval.

The system enables your currency within 15 mins. During that timeframe, offers will not display unless your device is a test device. To enable test offers, in the left menu, go to **Settings** > **App Settings** > **Test Devices**.

## Migrate from Tapjoy managed currency to self-managed currency

If your app hasn't launched, you can swap the app's currencies by using the Tapjoy Dashboard. Ensure that you enter a correctly formatted URL into the callback URL field.

If your app is live, you can perform the following actions:

* Create a new app and SDK key to prevent old versions from losing rewards.
* Migrate user balances in the following ways:
  * Use the previous SDK key to call `getCurrencyBalance` (on first launch).
  * Update your system with the retrieved balance.
  * Swap the SDK key for subsequent launches.
* Disable your previous advertising campaigns and recreate them under the new App ID.
* Consult with your Tapjoy Account Manager before proceeding.

> **Note:**
>
> Migrating back to Tapjoy managed currency isn't possible.

For external virtual currency server solutions, consider platforms like Parse or UrbanAirship.
