部分退款怎麼操作?退款多久到賬、手續費會不會退回一次講清
網上收款的部分退款如何操作:怎樣發起部分退款、退款多久完成、為什麼手續費不退、支付寶和微信支付的退款期限,以及拒付期間能否退款。
部分退款是把一筆付款中的一部分退給買家,而不是全部,比如大訂單裏缺貨的一件商品、價格調整,或者處理投訴後商定的折扣。通常一筆付款可以發起多次部分退款,只要累計不超過買家實際支付的金額。
退款看起來簡單,卻有三個容易讓商戶踩坑的細節:退款在最終完成前可能處於處理中;原來那筆手續費不會退回;有些支付方式只能在一段時間內退款。這篇文章講清楚如何發起部分退款、退款要多久、退款要花你多少錢,以及什麼時候退款並不是正確的做法。
什麼是部分退款?
| 全額退款 | 部分退款 | |
|---|---|---|
| 退回金額 | 這筆付款剩下的全部 | 不超過剩餘金額的任意數額 |
| 可以退幾次 | 一次退完 | 多次,直到累計等於實付金額 |
| KukoPay 上的訂單狀態 | refunded | partially_refunded,退完後變為 refunded |
常見場景:多件商品的訂單中有一件缺貨、延遲發貨用折扣補償、週期中途降級套餐,或者商品取回後退還運費。
如何發起部分退款
在控制台操作
在 訂單與退款 中找到這筆訂單,點擊 退款。彈窗會顯示原訂單總金額、歷史已退金額和本次最大可退額度;填寫退款金額並選擇退款原因(例如「客戶主動協商退款」或「買家未收到商品或服務」)即可。所有退款都會列在 退款記錄明細 標籤頁中。
通過 API 操作
curl -X POST "https://api.kukopay.com/v1/refunds" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $KUKOPAY_API_KEY" \
-d '{
"trade_no": "TRD_9F3A...",
"out_refund_no": "REF_20261104_0001",
"amount": 2000,
"reason": "其中一件缺貨"
}'amount以最小貨幣單位表示(2000即 $20.00)。不傳則退還剩餘全部金額。out_refund_no是你的退款單號,也是退款的冪等鍵:超時後用相同的請求重試,返回的是同一筆退款,不會退兩次。正式環境必填。- 同一筆訂單的退款累計永遠不能超過訂單金額。
全部字段見 申請退款。
退款多久能完成?
這裏有兩個時間:退款在平台上最終完成的時間,和買家看到錢回來的時間。
在平台上,退款有兩種結果:
- 立即
succeeded:通道在請求過程中就確認了退款。 pending(HTTP 202):通道異步處理。金額先從你的可用餘額轉入凍結,處理期間不能被提現。通道確認後正式扣賬並發送refund.succeeded;如果通道拒絕,凍結金額會退回可用餘額。
退款處於 pending 時,建議每 10 秒查詢一次、最多持續 5 分鐘,之後改為低頻查詢,或者直接等待 refund.succeeded Webhook。平台的對賬任務也會持續核對未決退款。
在買家那一側,退款多久出現在他的銀行卡或錢包裏,取決於他的銀行或錢包,而不是你。所以你對買家怎麼説很重要。
退款處於 pending 時,不要告訴買家錢已經退回去了。告訴他退款已經提交,收到 refund.succeeded 後再確認。
退款時手續費會退回嗎?
不會。退款時,這筆付款當初扣除的手續費不會退回,全額退款和部分退款都一樣。買家拿回的是你退的金額;手續費是處理原付款的成本,而那筆處理已經發生了。
$48.00 銀行卡付款 手續費 = round(4800 × 3.5% + 30) = 198 → 你入賬 $46.02
部分退款 $20.00 買家收回 $20.00,你被扣 $20.00,$1.98 手續費不退
全額退款 $48.00 買家收回 $48.00,你被扣 $48.00,$1.98 手續費不退由此帶來兩點實際影響:
- 全額退款會讓你損失這筆手續費。 把它當作退貨成本來預算,而不是會拿回來的錢。
- 小額訂單損失比例最高,因為手續費中的固定部分不會隨訂單變小。跨境收款手續費怎麼算 算了小額訂單的實際費率。
退款有期限嗎?
有些支付方式只能在一段時間內退款,在 KukoPay 上支付寶和微信支付就屬於這類。訂單上的 refundable_until 給出最晚退款時間(沒有已知期限時為 null)。超過期限的退款請求會返回 400 refund_window_expired,不會扣減你的餘額,也不會發送給通道;之後只能與買家線下協商處理。詳見 海外商戶如何接入支付寶和微信支付收款。
在期限內已經受理的退款,結果會保留:期限過後用相同的 out_refund_no 重複請求,仍然返回原來的結果。
退款需要賬戶有餘額嗎?
需要。退款從訂單幣種的可用餘額中支付,所以餘額必須足夠。已經凍結的錢,比如另一筆處理中的退款、未結案的拒付、正在處理的提現,都不算可用。如果未結案的拒付把可用餘額壓成了負數,需要先由後續收款補平。可用、可提現和凍結餘額的區別見 費率與結算。
有拒付的訂單還能退款嗎?
不能。訂單存在未結案拒付時,退款請求會返回 409 conflict。買家的銀行已經把這筆錢扣留了,再退款等於把同一筆錢付給買家兩次。如果你不打算應訴,接受拒付、讓它以 lost 結案即可,不要用退款去「處理」拒付。拒付如何凍結和結算資金,見 信用卡拒付是什麼。
儘早退款,避免拒付
買家從你這裏拿不到退款,就可能去找自己的銀行。而拒付會立即凍結資金、敗訴還要加收處理費,並計入你的拒付率;退款則不會有這些影響。買家的訴求合理時,及時退款幾乎總是比等它變成拒付更划算。
如何對賬退款
每一筆退款都會在 資金流水 裏出現一行或多行:
| 類型 | 含義 |
|---|---|
refund_freeze | 退款已受理,金額轉入凍結 |
refund_debit | 通道確認退款,金額從餘額中扣除 |
refund_unfreeze | 通道拒絕退款,金額退回 |
每一行都關聯到對應的退款,所以退款能直接和它的流水對上。請以 refund.succeeded 事件和這些流水對賬,而不是以你點擊 退款 的那一刻為準。
上線前如何測試退款
在沙箱裏用測試卡 4242 4242 4242 4242 支付一筆訂單,先退一部分,再退剩下的,確認訂單狀態依次從 paid 變為 partially_refunded、再變為 refunded,並且每次退款都收到 refund.succeeded Webhook。沙箱錢包初始有 $5,000.00 測試資金,退款有餘額可扣。測試卡號和其他測試場景見 支付測試卡號大全。
總結
- 部分退款是退還付款的一部分,可以多次,累計不超過實付金額;
- 不傳
amount即退還剩餘全部,用out_refund_no保證重試不會重複退款; pending的退款只是凍結,還沒有完成,收到refund.succeeded再向買家確認;- 無論全額還是部分退款,手續費都不退回;
- 支付寶和微信支付有退款期限
refundable_until; - 退款從可用餘額中扣除,存在未結案拒付時不能退款;
- 及時退款比拒付更划算。
在沙箱裏把它跑通
註冊商戶後即可申請測試密鑰,不需要等待資質審核。