---
title: "Admin Refund Cancel Subscription"
method: POST
path: "/api/v1/admin/subscriptions/refund-cancel"
tags: ["admin"]
---

# Admin Refund Cancel Subscription

`POST /api/v1/admin/subscriptions/refund-cancel`

## Request

- Base URL: `https://api.slidemaster.tw` (the document declares no server; this is the origin it was published from)
- URL: `https://api.slidemaster.tw/api/v1/admin/subscriptions/refund-cancel`
- Auth: none declared

退款 + 取消訂閱(客服操作)：一次完成「停止未來扣款 + 撤銷本期存取權 + 金流退款」。

步驟：
1. **取消續扣 mandate**(Oen PUT /subscriptions/{id})——停止未來扣款(核心修復)。
2. **撤銷本期存取權**(revoke_access，預設 True)：帳戶降回 free、subscription
   credit bucket expire(已購買 Credits 不受影響)。
3. **金流退款**：若提供 ``transaction_hid`` + ``refund_amount``，呼叫 Oen
   ``POST /refunds/{transactionHid}`` 實際退回本期款項。⚠️ Oen 限制：每筆交易僅能
   退款一次、只支援信用卡；ATM/超商交易與已退過的交易需改在 Oen 後台處理。留空則
   不經 API 退款(視為已在 Oen 後台退刷)——但用戶若有未扣回的推薦贈點，留空會回 409，
   必須經 API 退款以同步扣回推薦贈點。
4. 可選 ``credit_adjustment`` 額外補償/回收 Credits。

Idempotent：已取消的 mandate 與已為 0 的 credit bucket 都會被視為 no-op。但金流退款
**非**冪等(Oen 每筆限退一次)——重複帶入同一 transaction_hid 會由 Oen 回錯。

## Headers

- `Authorization` string, nullable

## Request body

- AdminRefundCancelRequest
  - `user_id` string, nullable
  - `email` string, nullable
  - `subscription_id` string, nullable
  - `reason` string
  - `transaction_hid` string, nullable
  - `refund_amount` integer, nullable
  - `revoke_access` boolean
  - `credit_adjustment` integer, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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