---
title: "Ask Fanvue to refund a checkout-link payment"
method: POST
path: "/creators/{creatorUserUuid}/checkout-links/payments/{invoiceNumber}/refund-requests"
---

# Ask Fanvue to refund a checkout-link payment

`POST /creators/{creatorUserUuid}/checkout-links/payments/{invoiceNumber}/refund-requests`

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>

## Path parameters

- `creatorUserUuid` string, uuid, required
- `invoiceNumber` string, required — Fanvue payment identifier (invoice number).

## Headers

- `X-Fanvue-API-Version` string, required

## Request body

- object
  - `reason` 'duplicate' | 'fraudulent' | 'requested_by_customer' | 'other', required — Why the creator is asking for the payment to be refunded.
  - `note` string — Optional context for the reviewer, up to 500 characters.

## Response `201`

Refund request opened

- object
  - `uuid` string, required — Fanvue's unique refund-request identifier.
  - `paymentId` string, 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.
  - `note` string, nullable, required — The note the creator sent with the request.
  - `reviewNote` string, nullable, required — Fanvue's reason for the decision; populated when `status` is `rejected`.
  - `createdAt` string, date-time, required — When the request was opened.
  - `resolvedAt` string, date-time, nullable, required — When the request reached a final state, or null while it is still open.

## Other responses

- `400` — Bad Request - API version not supported OR validation failed OR invalid UUID
- `401` — Unauthorized Response
- `403` — Unauthorized Response
- `404` — Not Found Response
- `409` — The payment already has an open refund request, or its last request was declined too recently to ask again
- `410` — API version no longer supported (sunset)
- `422` — The payment cannot be refunded, or is outside the refund window
- `429` — Too many requests - rate limit exceeded

## Changes

- **2026-09-10** `4d08f36ad6c8` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/creators/:creatorUserUuid/checkout-links/payments/:invoiceNumber/refund-requests/post.md)

---

[API](https://skmtc.dev/fanvue/apis/fanvue-api.md) · [All operations](https://skmtc.dev/fanvue/apis/fanvue-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fanvue/apis/fanvue-api/revisions/431868e8a264?raw)
