---
title: "Withdraw a checkout-link refund request"
method: POST
path: "/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw"
---

# Withdraw a checkout-link refund request

`POST /creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw`

Take back a refund request Fanvue has not decided on yet. Only a `pending` request can be withdrawn: once it is approved the reversal may already be with the payment provider, and money on its way back cannot be recalled. Returns 404 if the request does not exist or does not belong to this creator, and 409 once it has been decided.

## Path parameters

- `creatorUserUuid` string, uuid, required
- `uuid` string, uuid, required — Fanvue refund-request identifier.

## Headers

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

## Response `200`

Refund request withdrawn

- 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 request has already been decided
- `410` — API version no longer supported (sunset)
- `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/refund-requests/:uuid/withdraw/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)
