---
title: 自動續費扣款
description: 到期自動發起扣款，無需人工介入
---

# 自動續費扣款

系統在訂閱到期前自動發起扣款，無需人工介入，確保訂閱順利續約。

## 運作方式

1. **到期前提醒** - 提前通知顧客即將扣款
2. **自動扣款** - 到期當天自動發起扣款請求
3. **結果通知** - 扣款成功/失敗即時通知

## 試用期轉正式扣款

當訂閱設有試用期時，系統在試用到期日使用**相同的排程任務**自動將訂閱從 `trialing` 轉為 `active` 並發起首次全額扣款。扣款失敗時的處理取決於產品的寬限期設定：

- **寬限期啟用（預設）**：進入 `PAST_DUE` 並自動重試
- **寬限期關閉**：立即取消訂閱

完整的試用期流程請參考[試用期文件](/features/payments/trials#試用期轉正式訂閱trial-graduation)。

## 計費週期

支援多種計費週期：

| 週期 | 扣款間隔 |
|------|----------|
| 月繳 | 每月 |
| 季繳 | 每 3 個月 |
| 年繳 | 每年 |
| 自訂 | 自訂天數 |

## 月底扣款日處理

月繳訂閱以「每月同一天」扣款。若該日期在某月份不存在，系統會自動調整到該月份的最後一天。

### 計算範例

| 原扣款日 | 下次扣款日 | 說明 |
|----------|------------|------|
| 1/15 | 2/15 | 正常：2 月有 15 日 |
| 1/31 | 2/28 或 2/29 | 2 月無 31 日，調整至月底 |
| 2/28 | 3/28 | 維持 28 日 |
| 3/31 | 4/30 | 4 月無 31 日，調整至 4/30 |

### 日期漂移說明

當扣款日遇到短月份時，會自動調整到該月份的最後一天，**調整後的日期會成為新的固定扣款日**。

例如，顧客於 12/31 訂閱月繳方案：

```
12/31 首次訂閱
→ 1/31 第一次續約
→ 2/28 第二次續約（2 月無 31 日，調整至月底）
→ 3/28 第三次續約（維持 28 日）
→ 4/28 第四次續約
→ ...之後固定每月 28 日扣款
```

這是業界標準做法，與 Stripe 等主流訂閱平台的行為一致。

## 扣款時間

預設在訂閱到期日當天發起扣款，您可以自訂：

- **扣款時間** - 選擇每天的扣款時段
- **提前天數** - 可設定提前 N 天扣款

## Webhook 事件

訂閱自動扣款相關事件：

- `invoice.created` - 發票建立（扣款前）
- `invoice.paid` - 發票付款成功
- `invoice.payment_failed` - 發票付款失敗
- `subscription.renewed` - 訂閱續約成功

## 最佳實踐

1. **設定提醒郵件** - 讓顧客知道即將扣款
2. **確保付款方式有效** - 定期提醒顧客更新過期卡片
3. **監控失敗率** - 關注扣款失敗趨勢
