> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encorekit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RevokeEntitlements()

> Testing only: expire every entitlement for the current player on iOS and WebGL, keeping the player's ID and attributes, so you can run the same offer flow again.

On iOS and WebGL, expires every entitlement Encore granted the current player, and keeps the player's ID and attributes. Use it in test and development builds to run an offer flow again for the same player. Don't call it in a release build.

[`Reset()`](https://docs.encorekit.com/publishers/unity/sdk-reference/reset) clears the player's identity. `RevokeEntitlements()` keeps it.

## Signature

```csharp theme={null}
public static void RevokeEntitlements(Action<EncoreCallResult> onComplete)

public static Task<EncoreCallResult> RevokeEntitlementsAsync()
```

## Parameters

| Name | Type | Description |
| - | - | - |
| `onComplete` | `Action<EncoreCallResult>` | Called once with the result, on the Unity main thread |

## Returns

`RevokeEntitlementsAsync()` returns a task that completes with an [`EncoreCallResult`](#encorecallresult). The task never faults: a failure is a result with `Success = false`.

## Example

```csharp theme={null}
#if DEVELOPMENT_BUILD
var result = await Encore.RevokeEntitlementsAsync();
if (!result.Success) Debug.LogWarning($"Revoke failed: {result.ErrorType} {result.ErrorMessage}");

var active = await Encore.IsActiveAsync(Entitlement.FreeTrial()); // false after a successful revoke
#endif
```

## EncoreCallResult

The result of a call that returns no value.

```csharp theme={null}
public sealed class EncoreCallResult
{
    public bool Success;
    public string ErrorType;    // null on success
    public string ErrorMessage; // null on success
}
```

| Field | Type | Description |
| - | - | - |
| `Success` | `bool` | `true` when the call succeeded |
| `ErrorType` | `string` | A short code for the failure, such as `not_configured`, `network_error`, or `domain_error` |
| `ErrorMessage` | `string` | A readable description of the failure, for your logs |

## Notes

* iOS and WebGL revoke. Android has no revoke in its native SDK, so on Android the result is always a failure with `ErrorType = "domain_error"`. In the Unity Editor the result is also a failure.
* Before [`Configure()`](https://docs.encorekit.com/publishers/unity/sdk-reference/configure), the result is a failure with `ErrorType = "not_configured"`.
* `RevokeEntitlements` throws `ArgumentNullException` when `onComplete` is null.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.