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

# Creator Refunds and Disputes

> creator.refund.created, creator.dispute.flagged, and creator.dispute.created for a creator's on-platform payments.

These events tell you when money on a creator's on-platform sale is returned or
contested. They have no legacy flat equivalent — previously only checkout-link
payments emitted refund and dispute events, so these close that gap for
on-platform activity.

| Event (`type`)            | Resource | Fires when                              |
| ------------------------- | -------- | --------------------------------------- |
| `creator.refund.created`  | refund   | An on-platform payment is refunded      |
| `creator.dispute.flagged` | dispute  | An early pre-chargeback alert is raised |
| `creator.dispute.created` | dispute  | A formal dispute (chargeback) is opened |

All three require the `read:creator` scope. Delivered in the
[Standard-Webhooks envelope](/creator/overview#event-envelope); the fields below
describe the `data` object.

## Refund resource

<Note>
  Fanvue reverses the **entire** original payment (partial refunds are not
  modeled), so `full_amount` is always `true` and `amount` equals the original
  gross.
</Note>

| Field         | Type           | Description                                            |
| ------------- | -------------- | ------------------------------------------------------ |
| `object`      | string         | Always `"refund"`                                      |
| `id`          | string         | Reversal invoice identifier                            |
| `payment_id`  | string         | Identifier of the original (refunded) payment          |
| `amount`      | integer        | Refunded amount in minor units (positive)              |
| `currency`    | string \| null | ISO 4217 currency code                                 |
| `reason`      | string \| null | Refund reason, if recorded                             |
| `full_amount` | boolean        | Always `true`                                          |
| `created_at`  | string \| null | ISO 8601 time the refund was created                   |
| `purchaser`   | object         | `{ uuid, email }` of the buyer (`email` may be `null`) |
| `creator`     | object         | `{ uuid }` of the creator                              |
| `metadata`    | object         | Your passthrough metadata map                          |

### Example: `creator.refund.created`

```json theme={null}
{
  "id": "f1a2b3c4-9999-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.refund.created",
  "timestamp": "2026-06-09T08:40:00.000Z",
  "data": {
    "object": "refund",
    "id": "FVC-12345",
    "payment_id": "FV-12345",
    "amount": 1999,
    "currency": "USD",
    "reason": null,
    "full_amount": true,
    "created_at": "2026-06-09T08:40:00.000Z",
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "campaign": "spring-promo" }
  }
}
```

## Dispute resource

Both `creator.dispute.flagged` (an early warning, before a formal chargeback) and
`creator.dispute.created` (the formal chargeback) share the `dispute` resource.
Use `source` to identify the provider that reported it.

| Field        | Type            | Description                                               |
| ------------ | --------------- | --------------------------------------------------------- |
| `object`     | string          | Always `"dispute"`                                        |
| `id`         | string          | Processor dispute / alert id                              |
| `status`     | string \| null  | Processor status (e.g. `needs_response`)                  |
| `amount`     | integer \| null | Disputed amount in minor units                            |
| `currency`   | string \| null  | ISO 4217 currency code                                    |
| `reason`     | string \| null  | Dispute reason, if provided                               |
| `source`     | string          | `chargeback_help` \| `primer`                             |
| `created_at` | string \| null  | ISO 8601 time the dispute was reported                    |
| `payment`    | object          | The disputed payment: `{ id, transaction_id, purchaser }` |
| `creator`    | object          | `{ uuid }` of the creator                                 |
| `metadata`   | object          | Your passthrough metadata map                             |

### Example: `creator.dispute.created`

```json theme={null}
{
  "id": "f1a2b3c4-aaaa-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.dispute.created",
  "timestamp": "2026-06-09T08:41:00.000Z",
  "data": {
    "object": "dispute",
    "id": "dp_abc123",
    "status": "needs_response",
    "amount": 1999,
    "currency": "USD",
    "reason": "fraudulent",
    "source": "chargeback_help",
    "created_at": "2026-06-09T08:41:00.000Z",
    "payment": {
      "id": "FV-12345",
      "transaction_id": "txn_abc",
      "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" }
    },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "campaign": "spring-promo" }
  }
}
```

The `creator.dispute.flagged` event uses the identical shape with
`"type": "creator.dispute.flagged"`; treat it as an early heads-up to prepare
evidence before a formal chargeback is filed.
