Evaluate D2C payments for your project
Compare app store commission, payment provider fees, and merchant of record responsibilities to decide whether to add a Direct to Consumer webshop or payment provider.
Read time 9 minutesLast updated 16 hours ago
Direct-to-Consumer (D2C) payments let you sell your In-App Purchasing (IAP) catalog through your own checkout instead of Apple's or Google's in-app billing. A webshop puts that checkout on the web as a branded storefront you configure in the Unity Dashboard. Both sell the same catalog, use the same payment providers, and report into the same dashboards as the rest of your IAP revenue.
Most games that sell one-time purchases can run a D2C channel, so it's useful to know when it's best to implement one.
This page covers the following topics:
- When a D2C channel fits your project.
- What you keep after commission and fees.
- How webshops help you reach more players.
- How using one catalog for all payment channels works.
- How to use routing to serve D2C to specific players.
- What responsibilities are handled by the Merchant of Record (MoR).
- What reporting and measurement tools are provided.
- What the requirements are for implementing D2C.
For how to build D2C payments into your project, refer to Integrate D2C payment providers workflow and Create and publish your first webshop.
When a D2C channel fits
D2C channels run alongside other app stores, sell the same catalog, and don't require you to replace your native billing. However, checkouts that open from inside your app are still subject to Apple's and Google's external purchase programs, which cover only eligible apps and regions, and D2C sales can displace sales that otherwise go to the app stores. Refer to Comply with Apple and Google external purchase requirements.
Webshops are common among top-grossing mobile titles, particularly in the social casino, strategy, and action genres, and running one doesn't require a dedicated commerce engineering team. For Unity's analysis of D2C adoption and earnings, refer to Why go D2C now: The mobile game webshop business case (Unity blog).
The following table compares the signals for each case:
When to add a D2C channel now | When to build toward a D2C channel |
|---|---|
| You can re-engage existing players outside the app, through email, social channels, or your community | You're still building channels to reach existing players outside the app |
| Your top sellers are one-time purchases, such as consumables, currency, or bundles | Your one-time purchases are a small share of revenue, because subscriptions stay on the app stores |
| Purchase volume makes negotiated provider fees worth the setup effort | Your volume is still growing toward the setup effort |
| Someone can own provider setup, fulfillment, and compliance | You don't yet have someone to own provider setup and compliance |
Commission, fees, and what you keep
Each payment provider sets its own transaction fees and currency conversion margins, which you negotiate directly. Unity IAP supports Stripe and Coda.
How much of a sale you keep depends on how the player reached checkout:
Route to checkout | Platform commission |
|---|---|
| In-app purchase through Apple or Google billing | The platform's standard commission for digital goods. |
| Checkout or webshop opened from inside your app | Set by the platform's external purchase program, and specific to your app and region. |
| Webshop opened directly by a signed-in player, outside your app | None. The purchase doesn't pass through an app store. |
Rates and program terms vary by platform, region, and your annual earnings, and they change as platform policy changes. Work from each platform's current published terms rather than a rate quoted elsewhere. Refer to App Store Small Business Program (Apple) and Understanding Google Play's service fee (Google).
Whether a D2C sale nets more than an in-app sale depends on three figures you control or negotiate: your app store commission, the discount you offer players to buy on the web, and your provider's transaction fee. The gap is widest at the standard commission rate and narrows as your rate drops, until provider fees decide the outcome, so run the comparison with your own figures before you set discounts. You also set your own price points on a webshop rather than choosing from platform pricing tiers.
Because your provider is the merchant of record (MoR), it also carries the payment processing, tax, and fraud costs that fall on you when you build your own storefront.
Player reach beyond the app stores
A webshop is a browser-based storefront at a public URL, in the form . A webshop requires an authenticated player for every purchase. The following table shows the different authentication experiences, depending on how players open the shop:
shop.unity.com/{studio}/game/{slug}How the player opens the shop | What the shop does |
|---|---|
| From your game | Authenticates the player from the session the game passes. The player doesn't sign in. |
| From a browser, bookmark, or link, after signing in | Recognizes the player's linked Unity Player Account without reopening the game. |
| From a browser, with no game session and no sign-in | Shows an unauthenticated landing page that prompts the player to open the shop from the game. |
A webshop is therefore a channel for your existing players, not an acquisition channel. It extends selling to moments that in-app billing can't reach:
- Players between sessions, on desktop, or away from the device they play on.
- Re-engagement campaigns and offers sent to signed-in players by email or push.
- Community and social placements, such as a Discord channel or your own website, that signed-in players can open directly.
Unity serves the storefront through a content delivery network, and your game can deep link players in and back after purchase. Refer to Player sign-in for webshops.
For in-app D2C checkouts, your provider's web checkout opens from inside an iOS or Android app, in the regions where Apple and Google permit external purchases, and under the compliance requirements.
One catalog across every channel
A webshop reads the IAP catalog from your Unity Cloud project and routes each purchase to the payment providers already configured for it. There's no separate web catalog, price list, or ledger to maintain. Having the same catalog for both in-app and webshop D2C purchases has the following benefits:
- Catalog, price, and promotion changes reach the webshop the next time a player loads it, with no republish.
- Sales, badges, and bonus promotions come from catalog fields, so in-game merchandising renders on the web automatically. Refer to Catalog and payments in webshops.
- Receipt validation, entitlement grants, and refunds use the same IAP flows as in-game purchases.
- Per-currency prices live in one place, and your provider handles conversion and settlement. Refer to Currencies and exchange rates for D2C payments.
You configure theme and branding in the Unity Dashboard rather than in code, and can generate a theme with AI to start.
Provider routing without an app release
Unity IAP evaluates provider routing rules at runtime, so you can change which provider each player gets, and which providers fall back behind it, without a client update. There are multiple ways you can use provider routing:
- Target rules by platform and country, on webshops as well as in-app checkout.
- Roll a new provider out to a percentage of matching players first.
- In webshops, route by player tag, so a segment such as sees a different provider.
highSpender
Routing selects the highest priority eligible provider for each player. The remaining eligible providers act as fallbacks and don't appear at checkout.
Each webshop also partitions its configuration by environment, so you can try themes, branding, and routing before players see them. Refer to Add a routing rule and Payment provider routing in webshops.
Work your merchant of record absorbs
Your payment provider acts as the merchant of record and takes legal responsibility for the transaction:
Work | Owner |
|---|---|
| Payment processing, tax, and fraud prevention | Your payment provider, as MoR |
| Refunds, chargebacks, and disputes | Your payment provider, as MoR |
| Player billing and transaction support | Your payment provider, as MoR |
| Supported currencies and payment methods | Your payment provider, as MoR |
| Granting and revoking entitlements | You, through the SDK, a backend, or Cloud Code |
| Platform compliance for external purchases | You |
How a refund or a lost dispute reaches your game depends on whether you fulfill purchases through a webhook, a Cloud Code module, or the IAP SDK alone. Refer to Refunds and disputes for D2C payments.
Measurement in the Unity Dashboard
The Unity Dashboard reports D2C revenue next to the rest of your IAP revenue:
- The D2C Performance page tracks transaction success, checkout drop-off, and refund and dispute volume. Refer to D2C performance.
- The Revenue Performance page shows how D2C contributes to overall IAP revenue and how it compares to native stores. Refer to Revenue Performance reference.
Combined with rollout percentages, this reporting lets you measure a provider change on part of your population before you apply it to everyone.
Requirements before you start
The following table lists what a D2C channel requires before you launch one:
Requirement | Detail |
|---|---|
| Unity IAP 5.4 or later | IAP 5.4 also requires Unity Editor 2022.3 or later. Refer to Upgrade from IAP version 4 to version 5. |
| Unity Authentication | Every purchase requires an authenticated player, on both the in-app and webshop paths. Your game signs the player in with Unity Authentication, and a webshop opened from your game reuses that session. |
| Remote Catalog | Payment providers read products from the Remote Catalog service, so you can change products without shipping an app update. If you have an existing catalog, you can import an App Store or Google Play catalog, or, from IAP SDK version 5.4.4, you can migrate a local Unity catalog. Refer to Create your Remote Catalog. |
| A payment provider account | Stripe or Coda, with fees you negotiate directly. Refer to Configure your payment provider. |
| Purchase fulfillment | A webhook, a Cloud Code module, or SDK fulfillment. Refer to Fulfill purchases. |
| Platform compliance | Applies to the in-app paths: checkout opened inside your app, and in-game redirects to a webshop. For those, you determine your eligibility and report transactions to Apple and Google. |
A D2C channel has the following limitations:
- Product types: D2C sells one-time purchases, such as consumables, currency, and bundles. Subscriptions stay on the Apple App Store and Google Play Store, alongside your D2C channel.
- In-app checkout platforms: In-app D2C checkout runs on iOS and Android, and doesn't support WebGL builds.
- Webshop platforms: A hosted webshop runs in any modern browser, including for WebGL games. Its custom-scheme return deep link back into the game resolves only in a built player, not in WebGL or the Unity Editor.