訂閱制收費系統指南:方案設計、定期扣款、失敗重試、升降級按比例計費與退訂發票

訂閱制收費系統指南:方案設計、定期扣款、失敗重試、升降級按比例計費與退訂發票|NETVANA 軟體開發知識文章封面

「我們想把產品改成訂閱制,每個月自動扣款就好。」這句話常常是一個專案的開頭,也常常是低估的開始。上線後很快就會遇到:客人的信用卡過期了怎麼辦?扣款失敗要不要馬上停權?月中從基本方案升級到進階方案,這個月該收多少?客人退訂了,剩下的天數要不要退?發票要開給誰、開多少?訂閱制收費系統真正的工作量,幾乎都在這些「例外」裡。

訂閱制的好處是收入穩定、可預期,客戶關係也比一次性銷售長久。但這份穩定建立在一套可靠的計費機制上:每一筆扣款都要正確、每一次狀態改變都要留下紀錄、每一張發票都要對得上實際收到的錢。

以下依序說明方案與計費週期怎麼設計、定期扣款怎麼運作、扣款失敗如何重試與催繳、升降級與按比例計費的規則、退訂與退款的處理、電子發票開立,最後提供一份開發前的規則決策表。

先把訂閱的核心概念分清楚

訂閱系統裡有幾個概念經常被混在一起,開發前要先分開:

  • 方案(plan):你賣的是什麼,包含哪些功能或權益,以及計費週期。
  • 訂閱(subscription):某位客人訂了某個方案,從什麼時候開始、目前是什麼狀態、下次什麼時候續訂。
  • 付款方式:綁定的信用卡或其他付款管道,屬於客人,不屬於訂閱。
  • 帳單(invoice/bill):每一期應收的明細,包含方案費用、加購、折扣與調整。
  • 付款紀錄:實際向金流商請款的結果,成功或失敗、失敗原因。
  • 發票:依實際收款開立的電子發票。

最常見的設計錯誤,是把這些全部塞進一張「訂單」表裡。結果每次續訂都複製一張訂單、扣款失敗只能改訂單狀態、升級時不知道該改哪一筆。把訂閱、帳單、付款分開,後面所有複雜情境才處理得來。

方案設計:系統要能承受未來的改變

方案設計本身是商業決策,但它的結構會直接決定系統的複雜度。常見的計費模式有:

  • 固定費率:每期固定一個價格,最單純。
  • 依數量計費:依使用人數、帳號數、據點數計費,數量變動時要調整費用。
  • 依用量計費:依實際使用量在期末結算,例如發送的訊息數、儲存空間。
  • 基本費加超量:方案內含一定額度,超過的部分另外計費。
  • 加購項目:在主方案之外另外購買的功能或服務。

系統設計上有幾個原則:

方案要有版本。方案內容與價格遲早會調整,但已經訂閱舊方案的客人,通常要依原條件繼續或給予過渡期。如果直接修改方案資料,舊客人的帳單就會跟著變。正確做法是新增一個方案版本,讓既有訂閱繼續指向原版本,新客人用新版本。

計費週期與帳單日要先決定。所有客人統一在每月固定一天出帳,還是依各自的訂閱開始日出帳?前者對帳方便,但新客人第一期需要按比例計算;後者對客人直覺,但每天都有人要扣款。兩種都可行,重點是一開始就決定並一致執行。

試用期是訂閱的一個狀態,不是另一種產品。試用結束時要自動轉為付費、要求綁卡,或是自動到期,這幾種行為都要先定義。

定期扣款怎麼運作

台灣常見的做法是透過金流商的信用卡定期扣款或卡片代碼(token)功能:第一次付款時客人輸入卡號,金流商保存卡片資料並回傳一個代碼,之後由你的系統在每期帳單日用代碼請款。你的系統不應該自己保存完整卡號,這牽涉到嚴格的資料安全要求,交給金流商處理是最安全的做法。

一次定期扣款的流程大致是:

  1. 排程在帳單日找出應續訂的訂閱。
  2. 依方案與期間內的異動產生帳單。
  3. 用綁定的付款方式向金流商請款。
  4. 接收金流商回傳的結果(同步回應或非同步通知)。
  5. 成功則延長訂閱期間、開立發票;失敗則進入重試與催繳流程。

這個流程中最需要注意的是冪等性:同一期帳單絕對不能被扣兩次。排程可能重跑、金流商的通知可能重送、網路可能逾時後重試。系統要以帳單為單位確認「這期是否已經成功請款」,並在請款前鎖定,避免並行處理造成重複扣款。金流串接的細節與注意事項,可參考台灣金流串接指南。

另外,金流商的定期定額功能有兩種用法:一種是由金流商依約定週期自動扣款,再通知你結果;另一種是金流商只保存卡片,何時扣、扣多少由你的系統決定。前者簡單,但升降級與按比例計費時彈性有限;後者彈性大,但扣款排程與重試邏輯要自己負責。

扣款失敗:重試、催繳與寬限期

扣款失敗是訂閱制的日常,原因包括卡片過期、額度不足、銀行風控拒絕、卡片掛失等。處理得好,大部分失敗都能救回來;處理得不好,客人會在不知情的狀況下被停權,然後直接流失。

一套合理的失敗處理機制包含:

分辨失敗原因。有些失敗重試可能會成功(例如額度暫時不足),有些重試也沒用(例如卡片已掛失),應該直接請客人更新付款方式。金流商回傳的錯誤代碼要納入判斷。

排定重試時程。在一段期間內分幾次重試,間隔逐步拉長,而不是當天連續扣好幾次。重試次數與間隔應該做成可以調整的設定。

同步通知客人。第一次失敗就通知,說明原因並提供更新付款方式的連結;連結要能直接進入更新卡片的頁面,不要讓客人先登入再找半天。

設定寬限期。重試期間客人通常仍可正常使用,寬限期結束仍未成功,才進入暫停或降級狀態。寬限期長短是商業決策,系統要能設定。

恢復要自動。客人更新卡片後,系統應該立即補扣未付的帳單,成功後自動恢復服務,不需要客服手動處理。

訂閱狀態因此至少會有:試用中、正常、付款逾期(寬限期內)、已暫停、已取消、已到期。每一個狀態下客人能用什麼功能、能不能升降級,都要寫清楚。

升降級與按比例計費

客人在期間中途改方案,是訂閱系統最容易算錯的地方。這裡用一個情境說明:設想一位客人訂了月繳的基本方案,在帳期過了一半時升級為進階方案。

升級的常見做法:

  • 立即生效並按比例補差額:剩下半個月改用進階方案,系統計算「剩餘天數的進階方案費用」減去「剩餘天數的基本方案費用」,當下向客人請款差額;下一期起以進階方案全額收費。
  • 立即生效、差額併入下期帳單:功能馬上升級,差額在下次帳單一起收。
  • 下期才生效:最簡單,但客人想立即使用新功能時體驗較差。

降級的常見做法:

  • 下期才生效:最常見,本期已付的進階方案繼續用到期末,下期起改收基本方案。這樣避免了退款與功能突然消失的問題。
  • 立即生效並轉為抵用額度:剩餘天數的差額不退現金,轉成下期帳單的折抵。

按比例計費(proration)時要先定好規則:

  • 以「天」計還是以「秒」計?以天計時,當天升級算哪一天?
  • 每個月天數不同時,比例怎麼算?
  • 計算出來的金額小數點怎麼處理?
  • 同一期內多次升降級時,是否逐次計算?

這些規則沒有標準答案,但必須在開發前決定,寫進規格,並在帳單明細上讓客人看得懂。一張只寫「調整金額」而沒有說明的帳單,幾乎一定會引來客服詢問。

依數量計費的方案(例如依帳號數)也適用同樣的邏輯:期中增加人數時按比例補收,減少人數時通常下期才生效。

退訂、退款與電子發票

退訂的設計重點:

  • 到期取消與立即取消要分開:多數訂閱的退訂是「本期用完不再續訂」,客人在到期前仍可使用;立即取消則牽涉到是否退款。
  • 取消要容易:客人能在帳號頁面自行取消,不必聯絡客服。取消時可以詢問原因,但不應設置刻意的障礙。
  • 保留資料一段時間:取消後資料保留多久、到期後客人還能不能匯出,要事先說明。
  • 重新訂閱:取消後再回來,是延續原訂閱還是開新訂閱,歷史紀錄要能連在一起。

退款:退款政策是商業與法規問題,系統只負責執行。要注意的是退款必須透過原付款管道處理、要能部分退款,而且退款紀錄要與原始扣款、發票對應。消費者保護相關規範依商品與服務型態可能有不同要求,建議依個案諮詢專業人士。

電子發票:每一次成功扣款都要開立發票,開立時機通常在請款成功之後。要處理的情境包括:

  • 客人是個人還是公司(統一編號)、載具或捐贈。
  • 按比例補收的差額,是開立一張獨立發票還是與下期合併。
  • 退款時要作廢或開立折讓,依發票開立的時間點而定。
  • 客人在期中修改發票資訊,從哪一期開始適用。

發票與訂閱帳單的對應關係一定要清楚,否則月底財務對帳會非常痛苦。串接方式可參考台灣電子發票串接指南。

開發前的規則決策表

以下這張表列出訂閱系統開發前一定要決定的規則,可以直接印出來和團隊逐項討論,每一列都填上你的決定:

決策項目可選做法你的決定
帳單日統一固定日/依訂閱開始日
計費週期月繳/年繳/兩者都有
試用結束自動轉付費/要求綁卡/自動到期
扣款方式金流商自動扣/自家系統排程請款
扣款失敗重試重試幾次、間隔多久
寬限期期間內可否使用、多長
寬限期後暫停/降級為免費/取消
升級生效立即補差額/立即併下期/下期生效
降級生效下期生效/立即轉抵用額度
按比例單位以天/以更細的時間單位,小數處理方式
退訂到期取消/立即取消,是否退款
資料保留取消後保留多久、可否匯出
補差額發票獨立開立/併入下期
方案調價舊客人保留原條件/過渡期後調整

這張表填完,系統規格就完成了一大半。整理成正式文件的方式可以參考軟體需求怎麼寫。

後台與報表:營運需要看到什麼

訂閱系統的後台不只是查訂單,營運團隊需要的是:

  • 單一客戶的完整時間軸:何時訂閱、升降級、扣款成功與失敗、通知寄送、取消,客服一眼就能回答客人的疑問。
  • 待處理清單:付款逾期中的訂閱、即將到期的試用、卡片即將過期的客人。
  • 手動調整工具:給予折抵、延長期間、手動補扣,且每一次手動操作都要留下操作者與原因。
  • 營運指標:新增訂閱、取消、升降級、扣款失敗救回的情況,用來檢討方案與流程。

這些功能與會員資料高度相關,若已經有會員系統,訂閱應該掛在既有會員上,而不是另建一份客戶資料,規劃方式可參考會員系統與 CRM 開發指南。

訂閱制收費系統的難處,不在於會不會寫程式,而在於規則有沒有被完整想過。每一條沒有在開發前決定的規則,都會在上線後變成客訴、對帳差異或手動補救。

方案結構、金流商功能與發票流程,每家業者的組合都不一樣。如果你正打算把產品改成訂閱制,或是現有的定期扣款流程常出狀況,可以和 NETVANA 討論你的訂閱計費規則。我們的軟體服務一律採詢問報價制,會先和你一起把上面的決策表填完,再規劃金流、帳單與發票的串接方式;服務內容可參考軟體服務介紹。

延伸閱讀:信用卡定期扣款與金流商的選擇,先看台灣金流串接指南;每期扣款後的發票開立與折讓,讀台灣電子發票串接指南;訂閱要掛在會員資料上,參考會員系統與 CRM 開發指南;訂閱是 SaaS 產品的一部分時,可讀買現成 SaaS 還是客製開發;要先用最小範圍驗證訂閱模式,看 MVP 開發指南。

覺得有幫助?分享給更多人