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

# customer.unrestricted

> Event triggered when a customer restriction is lifted.

<Warning>
  `customer.unrestricted` is off by default. It will not be delivered until you enable it in Dashboard → Developers. See [Receiving Webhooks](/api-reference/api-v1/webhooks/setup) for instructions.
</Warning>

Fired when a previously applied deposit or withdrawal restriction is lifted. The payload shape is the same as [`customer.restricted`](/api-reference/api-v1/webhooks/customer-restricted).

This is a customer event, not a checkout event. The payload has no `charge`, `line_items`, or `subscription` fields.

## Payload Structure

```typescript theme={null}
interface WebhookEvent {
  event_id: string;
  data: {
    customer: {
      id: string;
    };
    type: "deposit_restricted" | "withdrawal_restricted";
    reason_code: string | null;
    created_at: string;
    user: {
      email: string;
    } | null;
  };
  type: "customer.unrestricted";
}
```

* `type` is which restriction flag was lifted, not the webhook event name.
* `user` is `{ "email": "..." }` when a dashboard user lifted the restriction, and `null` when Soap lifted it automatically.
* `created_at` is a Ruby-formatted timestamp string (`"2026-08-25 18:20:59 UTC"`), not ISO 8601.

## Example Response

```json theme={null}
{
  "event_id": "ev_tDaWu5aTVa2kbvDjGe55rxZpaMEmVFWB",
  "data": {
    "customer": {
      "id": "cus_5cDuRGp9AvscMgoyS5Y7wygiTgQrycvs"
    },
    "type": "deposit_restricted",
    "reason_code": null,
    "created_at": "2026-08-25 18:20:59 UTC",
    "user": {
      "email": "ops@example.com"
    }
  },
  "type": "customer.unrestricted"
}
```
