---
id: "customers/refund-control"
title: "Refund Control"
description: "Refund Control uses project-level policies to tell Apple and Google how you prefer them to resolve refund requests. RevenueCat sends the preference from the first matching policy, and the store makes the final refund decision."
permalink: "/docs/customers/refund-control"
slug: "refund-control"
version: "current"
original_source: "docs/customers/refund-control.mdx"
---

> **AI agents:** This is the Markdown version of a RevenueCat documentation page. For the complete documentation index, see [llms.txt](https://www.revenuecat.com/docs/llms.txt).

Refund Control uses project-level policies to tell Apple and Google how you prefer them to resolve refund requests. RevenueCat sends the preference from the first matching policy, and the store makes the final refund decision.

## How refund policies work

RevenueCat evaluates refund policies from top to bottom. The first policy whose conditions match a Customer determines the preference sent to the store.

The default policy displayed at the bottom applies when no custom policy matches. If the default policy is the only policy, it applies to all Customers without requiring a filter.

Each policy can use Customer and purchase properties such as:

- First purchase date
- Platform
- Country
- Any other property available in the policy editor, including properties used in Customer audiences

The Customer count on each policy estimates how many Customers currently match its conditions.

![Refund Control overview with refund metrics and policy suggestions](https://www.revenuecat.com/docs_images/lifecycle/refund_control_overview.png)

## Refund preferences

Choose one of these outcomes for each policy:

- **Prefer full refund**: RevenueCat tells the store that you prefer to grant the refund.
- **Prefer no refund**: RevenueCat tells the store that you prefer to decline the refund.
- **Send consumption data only**: RevenueCat submits available data without expressing a preferred outcome.
- **Do not respond to refund requests**: RevenueCat doesn't respond to refund-review requests for matching Customers.

The preference is one input to the store's review. It doesn't guarantee that Apple or Google grants or declines a refund.

:::tip\[Apply no-refund preferences narrowly]

Use **Prefer no refund** for a targeted group of Customers instead of applying it to nearly everyone. Refund Control warns you when this preference matches most of your Customers.

:::

## Data RevenueCat sends to Apple and Google

RevenueCat sends the following [consumption request properties](https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest) when Apple requests consumption data:

| Property                | What RevenueCat sends                                                                                                                                      |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `customerConsented`     | `true`. Enabling consumption data sharing confirms that you obtained consent from your Customers.                                                          |
| `deliveryStatus`        | `DELIVERED` when the Transaction exists in RevenueCat. Otherwise, `UNDELIVERED_OTHER`.                                                                     |
| `sampleContentProvided` | `true`                                                                                                                                                     |
| `refundPreference`      | The preference mapped from `$appleRefundHandlingPreference`, when set. Otherwise, RevenueCat sends the preference from the matching Refund Control policy. |

RevenueCat sends the following fields in the request body to Google's [`orders.reviewrefund`](https://developers.google.com/android-publisher/api-ref/rest/v3/orders/reviewrefund) endpoint when responding to a pending refund review:

| Property                | What RevenueCat sends                                                                                                                                                               |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pendingRefundToken`    | The token from Google's pending refund review notification.                                                                                                                         |
| `sampleContentProvided` | `true`                                                                                                                                                                              |
| `refundPreference`      | The preference from the matching Refund Control policy: `APPROVE` for **Prefer full refund**, `DECLINE` for **Prefer no refund**, and `NEUTRAL` for **Send consumption data only**. |

RevenueCat doesn't currently collect or send consumption percentages or usage events for individual Transactions on either store.

## Customer-specific override (legacy, Apple only)

RevenueCat supports a reserved Customer attribute that overrides the preference from the matching policy for an individual Customer. Set `$appleRefundHandlingPreference` through the [SDK](https://www.revenuecat.com/docs/customers/customer-attributes#setting-attributes), [REST API](https://www.revenuecat.com/docs/customers/customer-attributes#setting-attributes-via-the-rest-api), or Customer profile in the RevenueCat dashboard.

The attribute accepts these values:

- `DO_NOT_HANDLE`: RevenueCat doesn't handle refund requests for the Customer. Use this option for Customers who haven't provided consent.
- `GRANT_REFUND`: You prefer that Apple grants the refund.
- `DECLINE_REFUND`: You prefer that Apple declines the refund.
- `LET_APPLE_DECIDE`: You have no preference about Apple's decision.

This override affects only Apple refund requests.

The recommended way of customizing responses for specific users is to use user attributes in the policy filters, such as App user ID or Email.

## Limitations

Refund Control doesn't currently support the **Partial refund** preference.

## Next steps

- [Configure refund policies](https://www.revenuecat.com/docs/customers/refund-control/configure-refund-policies)
- [Troubleshoot Refund Control](https://www.revenuecat.com/docs/customers/refund-control/troubleshooting)
- [Review refund results in Charts](https://www.revenuecat.com/docs/dashboard-and-metrics/charts/refund-rate-chart)
