curl --request POST \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uuid": "3f2b1a09-8c7d-4e6f-9a0b-1c2d3e4f5a6b",
"paymentId": "FVE-20260619-1234",
"status": "withdrawn",
"reason": "requested_by_customer",
"note": "Fan bought the wrong tier",
"reviewNote": null,
"createdAt": "2026-06-20T09:00:00.000Z",
"resolvedAt": "2026-06-20T10:15:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}Withdraw a checkout-link refund request
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.
curl --request POST \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/checkout-links/refund-requests/{uuid}/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uuid": "3f2b1a09-8c7d-4e6f-9a0b-1c2d3e4f5a6b",
"paymentId": "FVE-20260619-1234",
"status": "withdrawn",
"reason": "requested_by_customer",
"note": "Fan bought the wrong tier",
"reviewNote": null,
"createdAt": "2026-06-20T09:00:00.000Z",
"resolvedAt": "2026-06-20T10:15:00.000Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}write:creator— Modify creator profiles, settings, and creator-specific data.
Authorizations
OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.
Headers
API version to use for the request
"2025-06-26"
Path Parameters
Fanvue refund-request identifier.
Response
Refund request withdrawn
Fanvue's unique refund-request identifier.
Invoice number of the payment this request is against (invoiceNumber).
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".
pending, approved, failed, refunded, rejected, withdrawn, chargebacked Why the creator is asking for the payment to be refunded.
duplicate, fraudulent, requested_by_customer, other The note the creator sent with the request.
Fanvue's reason for the decision; populated when status is rejected.
When the request was opened.
When the request reached a final state, or null while it is still open.
Was this page helpful?