# 自動續費扣款 (/features/automation/billing)



自動續費扣款 [#自動續費扣款]

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

運作方式 [#運作方式]

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 日扣款
```

<Callout type="info">
  這是業界標準做法，與 Stripe 等主流訂閱平台的行為一致。
</Callout>

扣款時間 [#扣款時間]

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

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

Webhook 事件 [#webhook-事件]

訂閱自動扣款相關事件：

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

最佳實踐 [#最佳實踐]

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