創作者指南

金流公司有定期定額,為什麼還需要訂閱管理系統?

「定期定額扣款,金流公司不都內建了嗎?」這是我們最常聽到的問題。這篇文章將深入解析經營訂閱制的完整面貌,以及為什麼專業的訂閱管理系統能讓你少走三年彎路。

Recur 團隊
Recur 團隊
金流公司有定期定額,為什麼還需要訂閱管理系統?

「定期定額扣款,金流公司不都內建了嗎?」

這是我們在開發 Recur 這段時間最常聽到的問題。

確實,PAYUNi、綠界、藍新都有定期定額的功能。但 Recur 選擇不使用這些內建的定期定額 API,而是自己從頭打造訂閱週期管理系統。

為什麼要這麼做?

因為金流的定期定額功能,解決的是「每月自動扣款」這個技術問題。但經營訂閱制,你會遇到的問題遠不止這些:

顧客想升級方案,這個月已經扣款了怎麼算? 定期定額 API 不管這個。你得自己算按比例退款多少、補收多少。

年繳用戶中途想改月繳,怎麼處理? 定期定額 API 沒有「週期切換」的概念。你得手動取消舊約、建立新約、還要確保不重複扣款。

扣款失敗了,要重試幾次?隔幾天試? 定期定額 API 的重試邏輯是寫死的。你沒辦法根據失敗原因調整策略。

顧客說「我要暫停訂閱三個月」 定期定額 API 通常只有「啟用」跟「取消」,沒有暫停。

你想給老顧客續約優惠 定期定額 API 建立後金額就固定了,沒辦法動態調整。

這些才是經營訂閱制的日常。而這些,都不是「定期定額 API」設計來解決的問題。

所以我們選擇自己做——用金流的單次扣款功能,搭配我們自己打造的訂閱週期引擎。這讓我們能完整掌控每一個環節:什麼時候扣款、扣多少、失敗怎麼處理、狀態怎麼變化。

這就是「有定期定額」跟「有訂閱管理系統」的差別。

這篇文章,我想用最具體的方式,讓你理解經營訂閱制到底要處理多少事情。看完之後,你可以自己判斷:這些事情你要自己做,還是交給專業的系統。


第一章:扣款成功只是開始,不是結束

金流公司幫你做的事

讓我們先肯定金流公司的價值。當你設定好定期定額之後,金流公司會:

  1. 在指定日期發起扣款請求
  2. 與銀行/信用卡組織通訊
  3. 告訴你這筆交易成功或失敗
  4. 把錢撥給你(扣除手續費)

這很重要,沒有這個基礎,什麼訂閱制都做不了。

金流公司不管的事

但是,當扣款「失敗」的時候呢?

假設你有 100 個訂閱用戶,月初扣款時有 15 個人扣款失敗。這是非常正常的數字——信用卡餘額不足、卡片過期、銀行風控暫時攔截,各種原因都有可能。

金流公司會告訴你:「這 15 筆失敗了。」

然後呢?

然後就沒有然後了。這 15 個人的後續處理,是你的事。

你要決定:

  • 要不要重試?什麼時候重試?
  • 重試幾次?每次間隔多久?
  • 重試都失敗的話,要不要寄信通知用戶?
  • 信要寄幾封?間隔多久?內容寫什麼?
  • 用戶多久沒付款要取消訂閱?
  • 取消之前要不要給一個「寬限期」讓他們還能用服務?

這些問題,金流公司一個都不會幫你處理。

Recur 的智慧催繳系統

在 Recur,我們建立了完整的「付款失敗處理流程」:

智慧重試機制

不是隨便挑個時間重試,而是根據失敗原因選擇最佳時機:

失敗原因重試策略
餘額不足發薪日(1 號、15 號)重試
銀行暫時拒絕1 天後重試,避開銀行系統高峰
網路問題立即重試一次,失敗再等 1 天
卡片過期不重試,直接通知用戶更新卡片

根據我們的數據,智慧重試可以挽回 15% 的失敗付款

100 個訂閱用戶裡有 15 個扣款失敗,其中可以挽回 2-3 個。聽起來不多?如果你的訂閱價格是 $299/月,這就是每個月多 $600-900 的收入。一年下來是 $7,200-10,800。

而這只是 100 個用戶的規模。

催繳郵件序列

重試的同時,系統會自動發送催繳郵件:

時間點郵件內容
付款失敗當天「您的付款未成功,請更新付款方式」
失敗後 3 天「提醒:您的訂閱付款仍未完成」
寬限期結束前 1 天「最後提醒:您的訂閱即將取消」
訂閱取消後「您的訂閱已取消,歡迎隨時回來」

每封郵件都有一鍵更新付款方式的連結,用戶點進去就能直接處理,不用登入、不用找客服。

寬限期管理

付款失敗不代表立刻取消訂閱。你可以設定寬限期(預設 7 天),在這段時間內:

  • 用戶仍可使用服務(或限制部分功能)
  • 系統持續嘗試扣款
  • 持續發送提醒郵件

這個機制的目的是「給用戶機會」,而不是懲罰他們。很多付款失敗只是暫時性的問題,給他們幾天時間處理,比直接取消訂閱更能留住用戶。

自己建立催繳系統的成本

假設你決定自己實作這套流程,你需要:

  1. 建立排程系統:定時檢查失敗的扣款,決定何時重試
  2. 實作重試邏輯:根據失敗原因判斷重試策略
  3. 整合郵件服務:串接 Resend、SendGrid 等服務
  4. 設計郵件模板:寫催繳郵件的文案,做好多國語言
  5. 建立狀態機:追蹤每個訂閱的付款狀態
  6. 處理邊界情況:用戶在寬限期內升級方案怎麼辦?用戶在催繳期間取消再重新訂閱怎麼辦?

保守估計,這是 2-4 週的工程師工時。而且這只是「付款失敗處理」這一個功能。


第二章:訂閱不是設定好就不用管的東西

用戶會改變心意

訂閱制的特性是「持續的關係」,而人是會變的。你的用戶會:

  • 想從月繳改成年繳(因為年繳比較划算)
  • 想從基礎方案升級到進階方案(因為需要更多功能)
  • 想從進階方案降級到基礎方案(因為用不到那麼多)
  • 想暫停訂閱(因為最近太忙沒時間用)
  • 想取消訂閱(因為不需要了)
  • 取消之後又想回來(因為發現還是需要)

每一種情況,都涉及複雜的業務邏輯。

案例:月繳改年繳

小明在 1 月 15 日訂閱了你的月繳方案,$299/月。

到了 3 月 20 日,他發現年繳方案是 $2,990/年(等於 $249/月),想要改成年繳。

這時候問題來了:

  1. 小明這個月(3/15 - 4/15)的 $299 已經付了
  2. 他已經用了 5 天(3/15 - 3/20)
  3. 他還有 26 天的「已付費但未使用」額度

你要怎麼處理?

方案 A:不折抵,下個週期生效

告訴小明:「你這個月剩下的時間繼續用月繳方案,從 4 月 15 日開始改成年繳。」

這是最簡單的做法,但用戶體驗不好。小明會覺得「我已經決定要付更多錢了,為什麼還要等?」

方案 B:立即生效,按比例折抵

計算小明未使用的金額:$299 × (26/31) = $250

這 $250 可以折抵年繳費用:$2,990 - $250 = $2,740

小明今天付 $2,740,立刻升級為年繳方案。

方案 C:立即生效,剩餘天數轉換

計算小明剩餘的「天數價值」:26 天的月繳 ≈ 多少天的年繳?

月繳每日成本:$299/30 = $9.97 年繳每日成本:$2,990/365 = $8.19

26 天的月繳價值 = $259 可兌換年繳天數 = $259 / $8.19 = 31.6 天

小明的年繳從今天開始,但到期日往後延 31 天作為補償。

你看,光是「月繳改年繳」這個需求,就有這麼多種處理方式。而且每種方式都要考慮:

  • 發票怎麼開?
  • 金流怎麼處理?
  • 訂閱狀態怎麼更新?
  • 下次扣款日怎麼計算?

Recur 的自動化方案管理

在 Recur 後台,這些複雜的計算都是自動的。商家只需要決定「政策」,系統負責「執行」:

方案升級策略:立即生效,按比例計算差額
方案降級策略:下個計費週期生效
週期變更策略:立即生效,按比例折抵

設定好之後,無論用戶怎麼改方案,系統都會正確處理。

而且用戶可以直接在 Customer Portal 自己操作,不用聯繫客服。Portal 會顯示:

您目前的方案:基礎方案 $299/月
升級至進階方案 $499/月

立即升級需補繳:$167
(已扣除本月剩餘 26 天的未使用金額)

一切透明,一鍵完成。

試試看:方案切換計算

下面這個互動示範讓你體驗 Recur 如何處理方案切換。試著選擇不同的方案和週期,看看系統如何自動計算費用:

互動示範:方案切換
試試看選擇不同的方案,看 Recur 如何計算費用調整

更多邊界情況

除了升降級,還有這些情況需要處理:

暫停訂閱

用戶想暫停 2 個月,保留訂閱資格但不扣款。

  • 訂閱狀態要改成「暫停」
  • 停止扣款,但保留用戶資料
  • 2 個月後自動恢復
  • 恢復時要重新扣款
  • 如果暫停期間卡片過期怎麼辦?

取消後的寬限期

用戶取消訂閱,但到期日還沒到。

  • 取消後到到期日之間,服務要繼續嗎?
  • 這段時間算不算「訂閱用戶」?
  • 用戶在這段時間反悔怎麼處理?

取消後重新訂閱

用戶 3 個月前取消了,現在想回來。

  • 要建立新訂閱還是恢復舊訂閱?
  • 之前的購買紀錄要保留嗎?
  • 優惠碼可以用嗎?(如果之前用過「新用戶專屬」優惠)

每一個情況都是一個 if-else 分支,每一個分支都可能藏著 bug。

如果你自己做,這些邏輯你都要自己寫、自己測、自己維護。


第三章:你看不到的數字,才是經營關鍵

金流公司給你的數據

打開金流公司的後台,你會看到:

  • 今天有幾筆交易
  • 這個月收了多少錢
  • 每筆交易的明細

這些數據能告訴你「發生了什麼」,但無法告訴你「狀況好不好」。

經營訂閱制需要的數據

一個健康的訂閱制事業,需要追蹤這些指標:

MRR(月度經常性收入)

不是「這個月收了多少錢」,而是「每個月穩定會收到的訂閱收入」。

計算方式:

MRR = Σ(每個有效訂閱的月度價值)

例如:

  • 10 個月繳 $299 訂閱 → 10 × $299 = $2,990
  • 5 個年繳 $2,990 訂閱 → 5 × ($2,990 ÷ 12) = $1,246
  • 總 MRR = $4,236

為什麼年繳要除以 12?因為 MRR 衡量的是「月度」收入。年繳的用戶雖然一次付 $2,990,但這筆錢要攤到 12 個月。

MRR 的組成

單看總 MRR 不夠,你還需要拆解來源:

類型說明範例
New MRR新訂閱帶來的 MRR本月新增 5 個月繳用戶 = +$1,495
Expansion MRR升級帶來的增量3 個用戶從 $299 升級到 $499 = +$600
Contraction MRR降級造成的減少2 個用戶從 $499 降級到 $299 = -$400
Churn MRR取消訂閱的損失4 個 $299 用戶取消 = -$1,196
Reactivation MRR重新訂閱帶來的 MRR1 個舊用戶回來 = +$299

Net MRR Growth = New + Expansion + Reactivation - Contraction - Churn

如果這個數字是正的,你的事業在成長。如果是負的,你在萎縮。

Churn Rate(流失率)

這是訂閱制最重要的健康指標。

Customer Churn Rate = (期間內取消訂閱數 ÷ 期初訂閱數) × 100%

例如:

  • 月初 100 個訂閱
  • 月內取消 5 個
  • Customer Churn Rate = 5%

5% 聽起來不多?讓我們算一下:

如果每月流失 5% 的用戶,一年後你會剩下多少?

100 × (0.95)^12 = 54 個

你會失去將近一半的用戶。這就是為什麼「降低流失率」是所有訂閱制公司最核心的任務。

LTV(顧客終身價值)

一個顧客在整個訂閱週期會帶來多少收入?

LTV = ARPU ÷ Customer Churn Rate

例如:

  • ARPU(每用戶平均月收入)= $299
  • Customer Churn Rate = 5%
  • LTV = $299 ÷ 0.05 = $5,980

這個數字告訴你:每獲得一個用戶,平均可以賺 $5,980。

搭配 CAC(獲客成本),你可以計算 LTV/CAC 比率:

比率意義
< 1虧損,每獲得一個用戶都在賠錢
1-3尚可,但要小心
> 3健康,可以加大獲客投資

Recur 的即時數據分析

在 Recur 後台的「數據分析」頁面,這些指標都是即時計算、視覺化呈現的:

  • MRR 趨勢圖(最近 12 個月)
  • MRR 組成拆解(New / Expansion / Churn)
  • Churn Rate 追蹤
  • LTV 計算
  • ARPU 變化

你不需要自己建 Excel 試算表,不需要每個月手動計算,更不需要擔心算錯。

我們還提供「警報功能」:

  • Churn Rate 突然上升 → 立即通知
  • MRR 連續 3 天下降 → 發送警報
  • LTV/CAC 低於 3 → 提醒優化

這些數據讓你從「憑感覺經營」變成「數據驅動決策」。

看見每個顧客的完整歷程

除了整體數據分析,Recur 還讓你看見每個顧客的完整訂閱歷程:

顧客訂閱歷程
完整記錄每一次訂閱事件,從建立到升級一目瞭然

王小明

xiaoming@example.com

活躍訂閱
續訂付款成功$599

INV-20250101-001

2025/01/01
升級補繳成功$316

INV-20241201-002 · 按比例計算差額

2024/12/01
方案升級

基礎方案 → 專業方案

2024/12/01
續訂付款成功$299

INV-20241115-001

2024/11/15
首次付款成功$239

INV-20241015-001 · 已套用折扣

2024/10/15
折扣碼使用

WELCOME20 · 首月 8 折

2024/10/15
訂閱建立

基礎方案 · NT$299/月

2024/10/15

3 個月

訂閱時長

1 次

方案升級

$1,453

累計付款

這個時間軸不只是好看,它解決了很多實際問題:

沒有訂閱管理系統時的痛點:

  • 顧客說「我上個月升級過方案」,你要翻好幾個系統才能確認
  • 有人投訴「我沒收到折扣」,你不知道他用的是哪個折扣碼
  • 付款失敗後顧客說「我已經更新卡片了」,你無法追蹤事件順序
  • 財務對帳時,無法解釋某筆金額為何是這個數字

有了完整歷程後:

  • 客服一眼就能看到顧客的所有動作
  • 財務可以追蹤每筆金額的來龍去脈
  • 產品團隊可以分析用戶的升級/降級模式
  • 出問題時能快速找到根本原因

自己建立數據分析的成本

你需要:

  1. 建立數據倉儲,儲存所有訂閱事件
  2. 寫 SQL 計算各種指標
  3. 建立報表介面(或每次手動跑 SQL)
  4. 確保計算邏輯正確(MRR 的計算比你想像的複雜)
  5. 處理歷史資料的回溯計算

這需要資料工程師的專業,而且是持續的維護工作。


第四章:顧客體驗是你的競爭力

結帳體驗

當用戶決定訂閱你的服務,他會經歷什麼流程?

使用金流公司原生頁面:

  1. 用戶點擊「訂閱」按鈕
  2. 跳轉到金流公司的結帳頁面(通常很陽春)
  3. 輸入信用卡資訊
  4. 完成付款
  5. 跳轉回你的網站

這個流程的問題:

  • 結帳頁面沒有你的品牌,用戶可能會疑惑「我是不是走錯地方」
  • 頁面設計老舊,手機體驗差
  • 無法展示訂閱內容、方案對比
  • 無法套用優惠碼
  • 無法選擇計費週期

使用 Recur 託管結帳頁:

  1. 用戶點擊「訂閱」按鈕
  2. 進入你品牌的結帳頁面
  3. 看到完整的方案說明、價格、週期選擇
  4. 可以輸入優惠碼
  5. 輸入信用卡資訊
  6. 完成付款
  7. 跳轉回你的網站

結帳頁面可以自訂:

  • 上傳你的 Logo
  • 設定主題色
  • 顯示方案說明
  • 選擇月繳/年繳
  • 輸入優惠碼
  • 手機裝置優化

這不只是「好看」的問題,而是「轉換率」的問題。一個專業、流暢的結帳體驗,可以減少用戶在最後一步放棄購買的機率。

Customer Portal

訂閱之後,用戶需要管理他的訂閱。他可能想:

  • 查看目前的訂閱狀態
  • 看看下次什麼時候扣款、扣多少
  • 更新信用卡資訊(舊卡到期了)
  • 下載過去的收據
  • 升級或降級方案
  • 取消訂閱

沒有 Portal 的情況:

用戶:「我想更新信用卡資訊。」 你:「請寄信到 support@yoursite.com,附上新的卡號、到期日、CVC...」 用戶:「......」

或者:

用戶:「我想取消訂閱。」 你:「請寄信到 support@yoursite.com,說明取消原因,我們會在 3 個工作天內處理。」 用戶:(直接去銀行止付、留下一堆失敗交易)

有 Portal 的情況:

用戶在你的網站點擊「管理訂閱」,進入 Customer Portal。

他可以:

  • 一眼看到目前的訂閱狀態
  • 自己更新信用卡(輸入新卡號就好)
  • 自己升級/降級方案(系統自動計算補繳或退款)
  • 自己下載歷史收據
  • 自己取消訂閱(可以設定需要填寫原因)

所有操作,用戶自己完成,不需要客服介入。

這對你的好處是:減少客服工作量、避免信用卡資訊透過郵件傳輸的安全風險。

對用戶的好處是:隨時可以處理,不用等人回信。

試試看:更新付款方式

下面這個互動示範讓你體驗 Customer Portal 中更新信用卡的流程:

互動示範:更新付款方式
用戶可以在 Customer Portal 自行更新信用卡,無需聯繫客服
Visa
Visa •••• 4242預設
有效期限 12/25
Recur Customer Portal 的優點
  • 用戶自助更新,無需聯繫客服
  • 卡片資訊透過安全的金流頁面處理,不經過您的伺服器
  • 即時生效,下次扣款自動使用新卡
  • 卡片到期前自動提醒用戶更新

帳單與收據

每次扣款後,用戶應該收到一封收據郵件。這封郵件應該包含:

  • 交易日期
  • 付款金額
  • 訂閱方案名稱
  • 下次扣款日期
  • 發票明細(如果需要報帳)

金流公司可能會發送交易通知,但格式固定、無法自訂,而且通常只有交易資訊,沒有你的品牌。

Recur 的收據郵件:

  • 可以放你的 Logo
  • 可以自訂郵件內容
  • 自動計算下次扣款日
  • 包含管理訂閱的連結
  • 可以附上發票 PDF

這些細節看起來很小,但加起來就是「專業」與「業餘」的差別。


第五章:促銷不只是「改個價格」

經營訂閱制的常見行銷手法

1. 首月 $1

讓用戶用極低的價格($1)試用一個月,體驗服務價值後再決定是否以原價續訂。

這個策略很有效,因為:

  • 降低用戶的決策門檻
  • 用付費行為篩選有意願的用戶(比完全免費更有價值)
  • 建立付款習慣

但實作起來需要:

  • 首月以特價扣款
  • 記錄這個用戶是特價訂閱
  • 一個月後自動恢復原價
  • 結帳時清楚顯示「首月 $1,第 2 個月起 $299/月」
  • 到期前提醒用戶價格將恢復

2. 年繳優惠

年繳送 2 個月,等於打 83 折。

這能提高用戶的 commitment,降低流失率。但你需要:

  • 設計年繳價格
  • 在結帳頁面顯示月繳/年繳對比
  • 計算實際折扣幅度
  • 處理年繳中途取消的退款邏輯

3. 折扣碼

發放 SAVE100(折 $100)或 VIP20(打 8 折)這樣的優惠碼。

你需要管理:

  • 優惠碼的有效期限
  • 使用次數上限(總共 100 次?每人 1 次?)
  • 適用的方案(只能用在年繳?還是全部都可以?)
  • 使用紀錄(誰用了?什麼時候用的?)
  • 週期性折扣(只有首月 8 折?還是連續 3 個月都 8 折?)

4. 限制特定客群

  • 「新用戶專屬」優惠:只有從未訂閱過的人可以用
  • 「老用戶回歸」優惠:只有取消過的人可以用
  • 「升級專屬」優惠:只有升級方案時可以用

這需要判斷用戶的歷史狀態。

Recur 的優惠系統

在 Recur,所有這些行銷手法都是內建功能:

建立優惠碼

名稱:夏季促銷
代碼:SUMMER2025
類型:百分比折扣
折扣:20%
期限:2025/06/01 - 2025/08/31
總次數上限:100 次
每人上限:1 次
適用方案:全部
客群限制:僅限新顧客

設定完成,系統會處理所有驗證邏輯。

優惠碼套用

用戶在結帳頁面輸入優惠碼,系統自動:

  • 驗證代碼是否存在
  • 檢查是否在有效期限內
  • 確認使用次數未超過上限
  • 確認此用戶未使用過(如果有每人上限)
  • 確認此用戶符合客群限制
  • 計算折扣金額
  • 顯示折扣後價格

如果驗證失敗,顯示具體原因:「此優惠碼僅限新顧客使用」。

週期性折扣

設定「前 3 個月 8 折」這樣的優惠:

類型:百分比折扣
折扣:20%
持續期間:前 3 期

系統會自動:

  • 第 1-3 個月:以 8 折價格扣款
  • 第 4 個月起:恢復原價
  • 每次扣款前發送提醒,告知下期價格

使用統計

每個優惠碼都有獨立的統計頁面:

  • 使用次數:45 / 100
  • 折扣總額:$13,500
  • 帶來營收:$45,000
  • 使用者清單

你可以評估每個行銷活動的 ROI。

試試看:優惠碼系統

下面這個互動示範讓你體驗 Recur 的優惠碼驗證流程。試試輸入不同的優惠碼看看效果:

互動示範:優惠碼系統
試試輸入優惠碼:SAVE100、VIP20、FIRST1、WELCOME3、EXPIRED
基礎方案
月繳方案
$299
/
方案價格$299
應付金額$299
快速測試:
SAVE100VIP20FIRST1WELCOME3EXPIRED

自己建立優惠系統的成本

你需要:

  1. 設計優惠碼資料表
  2. 實作驗證邏輯(十幾個條件判斷)
  3. 在結帳流程中整合優惠碼輸入
  4. 處理週期性折扣的狀態追蹤
  5. 建立管理介面
  6. 實作統計報表

這又是幾週的工程時間,而且優惠系統的邊界情況特別多(優惠碼過期的瞬間有人使用怎麼辦?兩個優惠碼可以疊加嗎?)。


第六章:API 與 Webhook——與你的系統整合

訂閱制不是孤島

你的訂閱系統需要與其他系統互動:

  • 網站/App:用戶在哪裡使用你的服務
  • 會員系統:決定用戶可以存取什麼內容
  • CRM:記錄用戶的消費歷史
  • Email 系統:發送歡迎信、到期提醒
  • 資料分析:追蹤用戶行為

這些互動需要兩件事:

  1. API:讓你的系統主動查詢、操作訂閱資料
  2. Webhook:讓訂閱系統在事件發生時通知你的系統

Recur 的 API

完整的 RESTful API,涵蓋所有操作:

// 查詢用戶的訂閱狀態
const subscription = await recur.subscriptions.retrieve('sub_xxx');

// 建立結帳 Session
const session = await recur.checkout.sessions.create({
  productId: 'prod_xxx',
  customerId: 'cus_xxx',
  successUrl: 'https://your-site.com/success',
});

// 取消訂閱
await recur.subscriptions.cancel('sub_xxx');

// 查詢用戶的發票
const invoices = await recur.invoices.list({
  customerId: 'cus_xxx',
});

我們提供 TypeScript SDK,有完整的型別定義,寫起來就像在用本地物件。

Webhook 事件

當訂閱發生變化,Recur 會發送 Webhook 通知到你指定的 URL:

事件說明應用場景
subscription.created訂閱建立開通會員權限
subscription.activated訂閱啟用(首次付款成功)發送歡迎信
subscription.renewed訂閱續訂更新會員到期日
subscription.canceled訂閱取消關閉會員權限、發送挽回信
invoice.paid發票付款成功記錄消費歷史
invoice.payment_failed付款失敗發送付款問題通知

範例:用 Webhook 同步會員權限

// 在你的伺服器端
app.post('/webhooks/recur', (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'subscription.activated':
      // 開通會員權限
      await db.users.update({
        where: { email: event.data.customer.email },
        data: {
          isPremium: true,
          premiumUntil: event.data.current_period_end,
        },
      });
      break;

    case 'subscription.canceled':
      // 關閉會員權限
      await db.users.update({
        where: { email: event.data.customer.email },
        data: { isPremium: false },
      });
      break;
  }

  res.status(200).send('OK');
});

這樣你的網站就能即時反映訂閱狀態,不需要定期輪詢、不需要手動同步。

金流公司的 Webhook

金流公司也有 Webhook(通常叫「交易通知」),但只告訴你交易結果:

{
  "transaction_id": "TXN123456",
  "status": "success",
  "amount": 299,
  "time": "2025-01-02T10:30:00Z"
}

你需要自己:

  • 判斷這筆交易對應哪個訂閱
  • 更新訂閱狀態
  • 計算下次扣款日
  • 決定要發什麼通知

而 Recur 的 Webhook 已經幫你整理好這些資訊:

{
  "type": "subscription.renewed",
  "data": {
    "id": "sub_xxx",
    "customer": {
      "id": "cus_xxx",
      "email": "user@example.com"
    },
    "product": {
      "id": "prod_xxx",
      "name": "進階方案"
    },
    "current_period_start": "2025-01-02T00:00:00Z",
    "current_period_end": "2025-02-02T00:00:00Z",
    "status": "active"
  }
}

收到這個 Webhook,你立刻知道:誰的訂閱、什麼方案、新的計費週期是什麼。


第七章:自己做的真實成本

工程時間估算

如果你決定自己實作訂閱系統,這是需要開發的功能清單:

功能估算工時
基礎訂閱流程2 週
付款失敗處理 & 重試1 週
催繳郵件系統1 週
方案升降級2 週
暫停/恢復訂閱1 週
Customer Portal3 週
優惠碼系統2 週
MRR/Churn 數據分析2 週
Webhook 系統1 週
結帳頁面1 週
管理後台3 週
總計19 週

這還是「功能做完」的時間,不包括:

  • Debug 和修正邊界情況
  • 寫測試
  • 處理金流 API 變動
  • 安全性稽核
  • 效能優化

實際上,一個完整的訂閱系統需要 6-12 個月 的專職工程師時間。

金錢成本

假設工程師月薪 $80,000:

  • 6 個月開發:$480,000
  • 後續每月維護(約 0.5 人月):$40,000/月

第一年成本:$480,000 + $40,000 × 6 = $720,000

機會成本

這 6-12 個月的工程時間,本來可以用來:

  • 開發你的核心產品
  • 優化用戶體驗
  • 建立更多內容
  • 開拓新市場

你真的要把最寶貴的工程資源,花在「重新發明輪子」上嗎?

風險成本

自己做還有這些風險:

1. 做錯了

訂閱計費的邊界情況非常多。升級的當下剛好跨月怎麼辦?用戶在寬限期最後一秒付款成功怎麼辦?優惠碼用到一半用戶取消了要不要退還使用次數?

這些情況你可能想不到,或者想到了但沒處理好。結果就是用戶投訴、金額算錯、財務對不起來。

2. 金流 API 變動

金流公司會更新 API、變更規則、調整手續費。每次變動,你都要配合修改。

3. 安全問題

支付相關的系統需要特別注意安全。信用卡資訊的處理、API 金鑰的保護、Webhook 的驗證...任何一個環節出問題,都可能造成嚴重後果。


結語:專業的事交給專業

金流公司提供的「定期定額扣款」功能,就像蓋房子時的「水泥」。

水泥很重要,沒有水泥蓋不了房子。但水泥不是房子。

經營訂閱制需要的是一整棟房子:

  • 地基:可靠的扣款機制 ✓(金流公司提供)
  • 結構:訂閱生命週期管理
  • 水電:自動化催繳與重試
  • 裝潢:品牌化的顧客體驗
  • 傢俱:數據分析與報表
  • 智慧家居:促銷與行銷工具

Recur 做的事情,就是在金流公司的基礎上,建造一棟完整的房子。

你可以自己蓋,但你會花掉半年到一年的時間,投入數十萬到上百萬的成本,承擔做錯的風險。

或者,你可以使用 Recur,專注在你最擅長的事情上——創作內容、經營社群、服務用戶。

訂閱經營的複雜度,讓我們處理。你的時間,應該花在更有價值的地方。


準備好開始了嗎?

立即體驗 Recur →

有任何問題?歡迎透過 support@recur.tw 聯繫我們。

R

準備好開始收款了嗎?

每月營收 10 萬內,平台費 $0
立即免費開始,專注於你的創作

免費開始