Ask Fanvue to refund a checkout-link payment

Open a request that Fanvue refund the specified payment in full. This does not move money: Fanvue reviews the request, and only an approved one produces a refund. Track the outcome with the refund-requests list or the checkout_link.refund.* webhooks.

A payment can hold only one open request at a time, and only settled card payments inside Fanvue's refund window can carry one. Returns 404 if the payment does not exist or does not belong to this creator, 409 if it already has an open request or its last request was declined recently, and 422 if it can never be refunded or has fallen outside the window (the message says which).

<Info> The `checkout_link.refund.requested` and `checkout_link.refund.created` [webhook events](https://api.fanvue.com/docs/checkout/refunds) announce the new request and a completed refund. Rejected, failed, withdrawn and chargebacked outcomes do not emit an event yet, so poll the refund-requests list by `status` to observe those. </Info>
post/creators/{creatorUserUuid}/checkout-links/payments/{invoiceNumber}/refund-requests

Path parameters

creatorUserUuidstring uuid required
invoiceNumberstring required

Fanvue payment identifier (invoice number).

Fanvue payment identifier (invoice number).

Headers

X-Fanvue-API-Versionstring required
Example:2025-06-26

API version to use for the request

Request body

reason'duplicate' | 'fraudulent' | 'requested_by_customer' | 'other' required

Why the creator is asking for the payment to be refunded.

notestring

Optional context for the reviewer, up to 500 characters.

Response

Refund request opened

uuidstring required

Fanvue's unique refund-request identifier.

paymentIdstring required

Invoice number of the payment this request is against (invoiceNumber).

status'pending' | 'approved' | 'failed' | 'refunded' | 'rejected' | 'withdrawn' | 'chargebacked' required

Where the request stands. pending is awaiting review; approved means Fanvue accepted it and is reversing the payment; failed means a reversal attempt did not go through and Fanvue is still working it (not a decision against the request); refunded is the money back with the fan, and also fires checkout_link.refund.created; rejected is refused, with the reason in reviewNote; withdrawn is the creator taking their own request back; chargebacked means the fan disputed the payment with their bank before the request was settled, so the money went back through the dispute instead (see the checkout_link.dispute.* events). The Fanvue dashboard shows approved and failed together as "processing".

reason'duplicate' | 'fraudulent' | 'requested_by_customer' | 'other' required

Why the creator is asking for the payment to be refunded.

notestring nullable required

The note the creator sent with the request.

reviewNotestring nullable required

Fanvue's reason for the decision; populated when status is rejected.

createdAtstring date-time required

When the request was opened.

resolvedAtstring date-time nullable required

When the request reached a final state, or null while it is still open.

Changes

Changed in 1 of the 5 revisions of this API.1