服務

會員點數與集點系統怎麼做?從點數帳本、退貨回沖到點數負債的完整建置指南

2026.09.01 · 44 次瀏覽
會員點數與集點系統怎麼做?從點數帳本、退貨回沖到點數負債的完整建置指南

一點值多少錢要先寫進試算表再寫進資料庫;免費贈點與花錢買的儲值點在法律上是兩種東西,混在同一張表就等著出事

分享:

一家開三間門市的手搖飲品牌帶著一個 Excel 找上我們:兩年發出 480 萬點,兌換掉 62 萬點,剩下 418 萬點掛在店長私下記的表格裡。他們以為線上化只是把紙卡搬上手機,第一週就冒出三種客訴——退貨後點數沒扣回、同一支手機綁了兩個會員、A 店給的點在 B 店不能用。集點系統難的從來不是「集點」,是點數發出去之後那條帳的正確性。

適用情境 × 不適用情境

這套系統對回購週期短、客單價低、通路多的生意最有效;對一年成交一次的生意幾乎沒幫助。

適合做:

  • 回購週期在 30 天內的零售、餐飲、美容美髮、寵物用品
  • 已有 3 家以上門市或「線上+門市」雙通路,需要點數跨點通用
  • 月交易筆數 800 筆以上,人工記點已經明顯出錯
  • 想把 LINE 好友名單轉成可辨識的會員身分
  • 已經在做折扣,想把「無差別打折」換成「回購才給」

不適合做:

  • 客單價高、一生買一次的產業(婚攝、裝潢、留學代辦)——做推薦獎金比集點有效
  • 月交易筆數低於 300 筆:點數池太小,統計上看不出行為改變
  • 毛利率低於 15%:點數成本會直接吃掉利潤,改做加價購
  • 還沒有 POS 或訂單系統:沒有交易來源,點數無從產生
  • 只想「發點刺激一波業績」的短期活動——用一次性優惠碼就好,不必蓋系統

替代方案矩陣:四條路的真實代價

方案導入成本年成本優點致命限制
紙本集點卡約 NT$3,000 印刷NT$5,000 內零學習成本、長輩接受度高無名單、無行為資料、偽卡與人情章無法稽核
LINE 官方帳號內建集點卡0月費 NT$800–1,200 起當天可上線、綁在既有好友名單點數不能跨活動累計、無法接 POS、資料拿不出來做分析
電商/POS 平台內建點數0–NT$20,000平台月租 NT$3,000–15,000與訂單天然連動、退貨自動回沖規則只能照平台給的樣板;跨平台(官網+門市)點數不互通
自建點數服務(Laravel)NT$150,000–450,000維護 15–20% 建置費規則、通路、資料全掌握,可接任何 POS 與電商前期投入高,規則書沒寫完就開工必定重工

判斷式很簡單:只有一個通路 → 用平台內建;兩個以上通路要共用同一份點數餘額 → 自建。中間地帶(想跨通路又不想花錢)通常最後會花兩次錢。

完整流程拆解:8 到 10 週

  • 階段一|規則書(第 1–2 週):定義發點事件、點數面額、到期政策、兌換品項、退貨回沖規則、人工調整權限。交付 Notion 規則書+Google Sheets 成本試算。這階段沒定死,後面全部重寫。
  • 階段二|資料模型與流程圖(第 2–3 週):用 Figma 畫綁定、發點、兌換、退貨四條流程;用 dbdiagram.io 定出帳本結構。交付可審核的 ERD 與狀態機圖。
  • 階段三|後端點數服務(第 3–6 週):Laravel 建立不可變帳本(每筆異動一列,餘額由帳本推導),扣點以 Laravel 的 lockForUpdate 悲觀鎖包在交易內,避免兩台收銀機同時扣同一筆餘額。交付 API 文件與壓測報告。
  • 階段四|前台與後台(第 5–8 週):會員端點數明細與兌換頁(LINE Login 綁定)、Filament 後台規則設定與補點稽核。門市核銷用 Flutter 做一次性 QR,token 有效期 30 秒。
  • 階段五|對帳與試營運(第 8–10 週):先開一家店試跑兩週,每天比對「POS 交易筆數 vs 發點筆數」,差異為零才全店上線。

真實成本完整拆解

以下為 ScriptWalker 實際專案區間(估算值,依規則複雜度變動):

項目金額(NT$)
規則書與成本試算(3–5 人日)18,000–30,000
點數帳本後端(發點/扣點/凍結/回沖)60,000–110,000
會員前台(明細、兌換、綁定)35,000–60,000
Filament 後台與稽核報表40,000–70,000
門市核銷 App(Flutter,選配)60,000–120,000

容易被忘記的隱藏成本:

三種預算級距:

  • 入門 NT$150,000 起:單通路線上發點與兌換、LINE 綁定、後台手動補點。適合 1–2 家店先驗證規則。
  • 標準 NT$280,000 起:加門市 QR 核銷、POS 串接、退貨自動回沖、稽核報表。多數 3–10 家店的客戶落在這一級。
  • 進階 NT$450,000 起:加儲值購點金流與電子發票、分店分潤結算、會員分級與自動化行銷觸發。

實施真相 vs 客戶想像

客戶以為實際發生
就是把紙卡數位化,兩週能上線光規則書就要 1–2 週;規則沒定死寫的程式一定重來
主要工作是「發點」功能約 80% 工時花在退貨回沖、跨店合併、每日對帳這三件事
點數發大方一點,客人才愛用發點成本一旦超過營收 3%,毛利立刻見紅,而且點數縮水必定引發客訴
LINE 綁定很簡單,掃個碼就好一人多帳號、換手機、重複綁定的解綁流程,是上線後最大宗的客服工單
點數折抵直接扣金額就好折抵方式會影響銷售額與發票金額認定,開工前要先問過會計師

常見陷阱 × 怎麼避開

  • 用 members.balance 欄位直接加減:出錯就無法追溯。改用不可變帳本,每筆異動一列,餘額由帳本加總並快取。
  • 兩台收銀機同時扣同一筆餘額:會扣成負數。扣點務必包在資料庫交易內並加悲觀鎖。
  • 退貨不回沖:把點數事件掛在訂單狀態機上,退貨自動回扣;餘額不足就記為負數再補,不要靜默略過。
  • 免費贈點與儲值購點放同一張表:兩者法律性質不同,必須分帳本、分報表、分到期政策。
  • 沒有人工調整稽核:所有手動補點強制填寫原因與操作者,Filament 開 activity log,離職爭議時只有這份紀錄能講話。
  • 核銷 QR 可被重放:改用一次性 token、30 秒有效期、核銷後立即作廢。截圖轉傳是門市最常見的盜用手法。

成功指標與上線後 90 天路線圖

  • 第 30 天|技術面:發點成功率 ≥ 99.5%、POS 交易筆數與發點筆數差異為零、會員綁定率(綁定會員數/交易筆數)達 25%。這階段不談營收。
  • 第 60 天|行為面:首次兌換率(發點後 60 天內至少兌換一次的會員比例)目標 20% 以上;開始追蹤點數負債餘額,超過營收 5% 就調降發點率。
  • 第 90 天|商業面:比較會員與非會員的回購間隔與客單價;跑一輪兌換品項 A/B 測試換掉最低的;清理沉睡點數並於到期前 14 天推播。

決策清單:12 個是非題

  • ☐ 我的客人平均 30 天內會回購一次
  • ☐ 月交易筆數超過 800 筆
  • ☐ 毛利率高於 15%,能吸收 1–3% 的點數成本
  • ☐ 我有兩個以上通路需要共用同一份點數餘額
  • ☐ 我已經有 POS 或訂單系統可以提供交易資料
  • ☐ 我能明確說出「一點等於多少錢」
  • ☐ 我已決定發點成本占營收的上限百分比
  • ☐ 我知道退貨時點數要怎麼處理
  • ☐ 我打算開放用現金購買點數或儲值
  • ☐ 我有人可以每天花 10 分鐘看對帳差異
  • ☐ 我願意把未兌換點數認列為負債
  • ☐ 我接受第一版只做一家店試營運兩週

勾選 8 項以上:可以開工。勾 5–7 項:先用平台內建方案跑三個月。勾不到 5 項:先把 POS 與規則整理好再談系統。

常見問題 FAQ

免費送的點數需要受禮券法規規範嗎?

經濟部「商品(服務)禮券定型化契約應記載及不得記載事項」前言,該事項不包括發行人無償發行的抵用券與折扣(價)券——單純消費回饋的免費點數通常不在適用範圍。但只要客人是花錢買點數或儲值,性質就接近有價的禮券,涉及至少一年的履約保障機制、且不得記載使用期限。兩種點數請分開設計,上線前請律師或會計師確認。

一點應該值多少錢?

先定成本上限再回推面額。公式是:點數成本率 =(單期發點價值 ÷ 單期營收)。零售與餐飲抓 1–3% 是安全帶,超過 5% 幾乎必然壓縮毛利。決定好 2%,客單價 150 元、消費 1 元給 1 點,那 100 點兌換的商品成本就不能超過 3 元。

可以先用現成 SaaS,之後再搬到自建嗎?

可以,但要先確認匯出格式。簽約前就問清楚能不能匯出「每一筆點數異動」而不只是「目前餘額」——只拿得到餘額的話,搬家後所有歷史行為分析都會歸零,退貨回沖也對不起來。

點數可以設到期日嗎?

免費贈點通常可以,但要在會員條款寫清楚,並採先進先出批次到期、到期前推播提醒。實務上建議 12 個月而不是 6 個月:太短會讓低頻客直接放棄,反而失去集點的意義。付費取得的點數則要另行評估法規限制。

一定要做 App 嗎?

不一定。會員端用 LINE Login 加網頁就夠,多數人不會為了集點裝 App。真正需要原生 App 的是門市端核銷——需要相機、離線暫存與快速掃描時,Flutter 做一支店員 App 比讓店員在瀏覽器操作穩定得多。

下一步

ScriptWalker 的「會員點數與集點系統建置」NT$150,000 起,含規則書、點數帳本、會員前台與後台稽核。我們提供一次免費 30 分鐘規則診斷:帶著月交易筆數、毛利率與現行優惠方式,現場算出點數成本率與建議面額,就算最後選平台內建方案也能直接拿去用。

分享: