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; the fields below
describe the data object.
Refund resource
Fanvue reverses the entire original payment (partial refunds are not
modeled), so full_amount is always true and amount equals the original
gross.
| 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
{
"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
{
"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.