# Currencies and exchange rates for D2C payments

> Understand how Unity IAP stores per-currency prices and how your payment provider converts, presents, and settles them for Direct-to-Consumer payments.

Direct-to-Consumer (D2C) pricing has two halves. Unity In-App Purchasing (IAP) holds the prices you set, one per currency, in your catalog. Your payment provider, as the merchant of record (MoR), handles everything that happens to those prices at checkout. That includes which currency it shows the player, any currency conversion, and the currency it settles your payout in.

This page explains the division of responsibilities and how per-currency prices work in your catalog. It also covers how your game selects a currency at checkout, what your provider converts, and where currency appears in orders and reporting.

## Division of responsibilities

| **Concern**                                    | **Owner**                                                 |
| ---------------------------------------------- | --------------------------------------------------------- |
| The price of each product in each currency     | You, in your IAP catalog                                  |
| Which currency the catalog returns             | Your game, through the `currency` and `locale` parameters |
| Presenting the price and taking the payment    | Your payment provider, as MoR                             |
| Currency conversion and exchange rates         | Your payment provider, as MoR                             |
| Supported currencies and local payment methods | Your payment provider, as MoR                             |
| Payout and settlement currency                 | Your payment provider, as MoR                             |

Unity IAP doesn't convert between currencies at runtime. It returns the prices you set. If you want a product available in a currency, add a price for that currency to your catalog.

## Per-currency pricing in your catalog

Each catalog listing carries a `pricing` array with one entry per currency. Each entry has the following characteristics:

* `currencyCode` is an [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code, such as `USD` or `EUR`.
* `amount` is an integer in micros, where 1,000,000 micros is one unit of the currency. For example, `9990000` is 9.99.
* The array must contain at least one entry, and one of those entries must use `USD`.

For the full schema, refer to [Catalog schema](/iap/catalog-schema.md). For webshop listings, which can carry a separate `webshopPrice` per currency, refer to [Webshop catalog schema reference](/iap/webshop/catalog-schema.md).

You can add currencies in the Unity Dashboard or through a CSV import:

* In the Dashboard, select **Add** (**+**) next to **Base price** to add a currency, or select the calculator to convert an amount from another currency. Refer to [Add a catalog listing](/iap/dashboard-catalog/add-catalog-item.md).
* In a CSV, each row defines one product for one language and currency. To price the same product in more currencies, repeat the row and reuse the `CatalogItemId` value. Refer to [Create Remote Catalog](./configure-remote-catalog.md).

## Currency selection at checkout

Your game tells Unity IAP which currency to return when it requests the catalog. In a webshop, you pass `locale` and `currency` as URL parameters when you open the shop, so the catalog returns prices for the player's region:

```text
https://shop.unity.com/acme/game/dungeons?sessionToken=…&projectId=…&environment=production&locale=ja-JP&currency=JPY
```

If you omit those parameters, the catalog falls back to the player's browser locale and prices in US dollars (USD). For more information, refer to [Integrate a webshop into a Unity game](/iap/webshop/integrate-into-game.md) and [Open a webshop from your game](/iap/webshop/deep-links.md).

To preview how prices appear across regions before you publish, use the currency switcher in the Dashboard's **Preview** pane. Refer to [Introduction to webshops](/iap/webshop/introduction-to-webshops.md).

## Currency conversion by your payment provider

Your payment provider decides which currencies and local payment methods it supports in each market. It converts between the currency it presents to the player and the currency it settles your payout in, and it sets the exchange rates it applies. Unity IAP takes no part in the conversion and doesn't receive the exchange rate.

Provider capabilities differ:

* **Stripe**: Managed Payments enables [Adaptive Pricing](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing) by default. Stripe converts your price into the player's local currency based on their location and handles the conversion for you. Some local payment methods only appear at checkout when you present prices in the local currency, so check the payment method availability for your target markets. To quote a rate up front instead, refer to [Localize prices](https://docs.stripe.com/payments/currencies/localize-prices) and the [FX quotes API](https://docs.stripe.com/payments/currencies/localize-prices/fx-quotes-api).
* **Coda**: Coda supports local currencies and payment methods across the markets it operates in. For the currencies available to your account, contact Coda.

> **Note:**
>
> Each payment provider sets its own transaction fees and currency conversion margins, which you negotiate directly with the provider. Unity doesn't charge a fee to use IAP with D2C payment providers. Refer to [Direct-to-Consumer (D2C) payment providers](./_index.md).

## Currency in orders and reporting

Orders record the currency of the transaction. In the order payload, each `lineItems` entry and the order `total` carry an `amountMicros` value and a `currency` code, and `total` also carries `refundedAmountMicros`. Refer to the [webhook event shape](./implement-backend.md#webhook-event-shape).

For how revenue and refund activity appear in the Unity Dashboard, refer to [D2C Performance reference](/iap/reporting/d2c-performance-reference.md) and [Revenue Performance reference](/iap/reporting/revenue-performance-reference.md).
