---
title: "Refund latest purchase"
method: POST
path: "/premium/refund-latest"
tags: ["Billing"]
---

# Refund latest purchase

`POST /premium/refund-latest`

Refunds the authenticated user's most recent paid invoice if it is within 3 days and the user is not in a 30-day cooldown. If the invoice was tied to a subscription, the subscription is cancelled immediately.

## Response `200`

Success

- SelfServeRefundResponse
  - `invoice_id` string, required
  - `payment_intent_id` string, nullable, required
  - `charge_id` string, nullable, required
  - `refund_id` string, nullable, required
  - `refunded_amount_cents` integer, required — Amount actually refunded so far, in the currency minor unit; 0 until the provider confirms success
  - `invoice_amount_paid_cents` integer, required
  - `currency` string, required
  - `subscription_id` string, nullable, required — Subscription that was cancelled along with the refund, when applicable
  - `status` string, nullable, required — Provider status of the refund (e.g. pending, succeeded, failed); money only moved once succeeded

## Other responses

- `400` — Bad Request - The request was malformed or contained invalid data
- `401` — Unauthorized - Authentication is required or the token is invalid
- `403` — Forbidden - You do not have permission to perform this action
- `429` — Too Many Requests - You are being rate limited
- `500` — Internal Server Error - An unexpected error occurred

## Changes

> 20 revisions in range; 2 not diffed.

- **2026-09-18** `dd0ad4ea1c88` — 5 breaking, 5 info
  - the response property `charge_id` became nullable for the status `200`
  - the response property `payment_intent_id` became nullable for the status `200`
  - the response property `refund_id` became nullable for the status `200`
  - the response property `status` became nullable for the status `200`
  - …6 more
- **2026-09-06** `a52a2cf49d9b` — 32 warning
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `400`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `401`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `403`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `500`
  - …28 more
  - …this revision’s changelog is incomplete
- **2026-09-05** `4dbb738a3e22` — 4 info
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `400`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `401`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `403`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `500`
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/premium/refund-latest/post.md)

---

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