Refunds and disputes for D2C payments
Understand who handles refunds, chargebacks, and player billing support for Direct-to-Consumer payments, and how Unity IAP reports them to your game.
Read time 7 minutesLast updated a day ago
When you sell through a Direct-to-Consumer (D2C) payment provider, that provider acts as the merchant of record (MoR). The MoR owns refunds, chargeback disputes, and player billing support, so you run those processes through your provider's dashboard or API rather than through Unity.
Unity In-App Purchasing (IAP) keeps order state in sync and tells your game what happened. It reports refunds and dispute outcomes as order webhook events, and it revokes the order itself in one case only: a dispute the player wins.
This page explains the division of responsibilities, how refunds and disputes each reach your game, where player support requests go, and where to monitor refund and dispute volume. For the setup that these processes build on, refer to Integrate D2C payment providers workflow.
Division of responsibilities
Process | Who handles it | What Unity IAP does |
|---|---|---|
| Issuing and processing refunds | Your payment provider, as MoR | Sends |
| Resolving chargebacks and disputes | Your payment provider, as MoR | Revokes the order and sends |
| Player billing and transaction support | Your payment provider, as MoR | Nothing. You can look up an individual order through the Orders API. |
| Tax compliance and fraud prevention | Your payment provider, as MoR | Nothing. |
| Revoking entitlements that Unity IAP manages | You | Removes the entitlement from the player when you set the order to |
| Revoking entitlements that your own backend manages | You | Sends the webhook events that your own systems act on. |
| Reporting external transactions to Apple and Google | You | Returns the transaction tokens you attached to the order. |
Where the entitlement itself lives depends on how you fulfill purchases. If Unity IAP manages entitlements, setting an order to the status removes the entitlement from the player. If your own backend manages entitlements, the status change only records what your backend already did. Refer to Fulfill purchases.
revokedUnity doesn't act as merchant of record and doesn't contact players on your behalf. For the related platform compliance responsibilities, refer to Comply with Apple and Google external purchase requirements.
Refunds
A refund returns a payment to the player. Refunds originate on the seller side, and either you or your provider can start one:
- You issue a refund through your provider's dashboard or API.
- Your provider's support team issues a refund on a player's behalf, after the player contacts them directly.
When your provider processes a refund, Unity IAP sends an event. The field in carries the current total refunded amount, which is smaller than for a partial refund.
order.updatedrefundedAmountMicrosdata.totalamountMicrosFor a full refund, where equals , remove what the player received:
refundedAmountMicrosamountMicros- If Unity IAP manages entitlements for your game, update the order to the status, which removes the entitlement from the player.
revoked - If your own backend manages entitlements, revoke the entitlement in your system, then update the order to so that Unity IAP order tracking matches your entitlement state.
revoked
For a partial refund, where is smaller than , decide what the player keeps according to your own policy. Set the order to only when you intend to remove the whole purchase, because a order can't move to another status.
refundedAmountMicrosamountMicrosrevokedrevokedThis behavior differs from disputes, where Unity IAP revokes the order for you. Refer to Disputes and chargebacks.
Refund capabilities differ by provider:
- Stripe: issue refunds from the Stripe Dashboard or the API, in full or in part. Players can also request a refund from Onelink support, and Stripe can refund a transaction within 60 days of the original payment. If Stripe asks you for product-specific input on a support request and you don't reply within 48 hours, Stripe might issue the refund without your approval. Refer to Refunds and cancellations and Refund support.
- Coda: issue refunds by calling the endpoint. Coda supports full refunds only, accepts them for completed payments only, and requires approval before it enables the refund API on your account. Refer to Refund a payment.
createRefund
Disputes and chargebacks
A dispute, also called a chargeback, is a player-initiated reversal. The player contacts their bank or card issuer, which reverses the payment and asks the merchant of record to respond.
Because your payment provider is the merchant of record, the provider responds to the dispute on your behalf. You don't have to gather evidence or correspond with the card network.
When a dispute closes and the player wins, Unity IAP automatically revokes the order and sends an event. If Unity IAP manages entitlements, the revoked order removes the entitlement from the player, so handle the event only to remove what you granted outside Unity IAP, such as soft currency in your own economy. If your own backend manages entitlements, handle the event by removing the entitlement or currency you granted for the original purchase.
order.revokedProvider dispute handling differs:
- Stripe: with Managed Payments, Stripe reviews each dispute through automated and manual processes and submits evidence for you without asking you for more. If Stripe judges that you're unlikely to win, it might accept the dispute instead of countering it. You can still view disputes in the Stripe Dashboard and accept or counter them yourself, but an evidence submission fee applies when you counter a dispute yourself, and every received dispute incurs a dispute received fee. Refer to Dispute support and Disputes and fraud.
- Coda: Coda handles fraud disputes as part of its MoR service. Coda doesn't publish dispute documentation, so contact Coda for the details that apply to your account.
Player support
Billing and transaction questions belong to your payment provider. These include receipts, unrecognized charges, failed payments, and refund requests.
- Stripe: Managed Payments handles payment and subscription support requests through Onelink support. Players manage their order history, subscriptions, and payment methods on the Onelink site, and Stripe sends receipts, invoices, and refund notifications to players directly. Keep the support email address in your Stripe business settings up to date, because Stripe uses it for support escalations.
- Coda: Coda provides transaction support for the payments it processes. Contact Coda for the support routing that applies to your account.
You remain responsible for support questions about your game: which entitlements a player owns, and the in-game consequences of a refund or revocation. To investigate an individual order, call the Orders API endpoint with the order ID. The response returns the order status, its line items, and the and timestamps.
GETfulfilledAtrevokedAtMonitor refunds and disputes
The Unity Dashboard reports refund and dispute volume alongside the rest of your D2C activity:
- The Refunds & disputes metric and the Refunds & disputes by provider chart on the D2C Performance page. Refer to D2C Performance reference.
- The Activity Type dimension on the Revenue Performance page, which separates purchases, refunds, and chargebacks. Refer to Revenue Performance reference.