小型零售 POS 系統
一家獨立門市靠的是微薄的利潤、現金與刷卡混雜的收款,以及老闆打烊後能對上的那點帳。大多數現成的 POS 套裝按每台收銀終端收租,把你的商品硬塞進泛泛的分類裡,還把你的資料留在他們的子網域上;而「表格加讀卡機」這種湊合的做法,則會悄無聲息地把稅、收款方式和庫存都算亂。本文將帶你走一遍一家小零售商真正需要的收銀台,以及如何把它當成一個運行中、託管的應用程式建置在 ybuild 上、透過你自己的網域對外提供服務。
痛點
- 銷售稅不是一個數字。在許多州,服飾、食品雜貨和某些商品是免稅或減徵的,而持有有效證書的轉售商則一分不繳,所以對整個購物車套用一個統一稅率,會向顧客多收錢,也會把你該繳的稅報錯。
- 現金是會憑空消失的真金白銀。拆分收款、找零、從錢箱裡付款整天都在發生,如果沒有開機備用金、也沒有「應有金額對點數金額」的收班對帳,晚上的長款或短款就只會隱形,而不會被追查。
- 庫存數字一週之內就會漂移。每一筆銷售、退貨和作廢都必須以同樣的方式影響庫存,否則螢幕上的數字和貨架上的數字會在下一次進貨之前就分道揚鑣。
- 你在向一個掌控著你商品目錄的供應商按台繳租。價格、分類、收據和報表都住在他們的盒子裡、他們的網域上,想改動其中任何一項,都得等他們的產品路線圖。
你能打造什麼
一個適合觸控操作的收銀台:掃描條碼或搜尋商品、組建購物車、套用行項或整單折扣,看著稅額按每一行的稅種、以你門市的稅率逐行計算。收款可在現金與刷卡之間拆分,自動算出找零,收據可列印或以電子郵件寄送。從第一次建置起,它就在 ybuild 上以線上託管的方式運行,跑在你自己的網域上。
一套商品目錄,每件商品都帶有成本、售價、稅種、在手數量和補貨點。一筆銷售扣減庫存,一次退款把它加回來,一次作廢則從不觸碰它,而低庫存檢視會標出所有低於補貨點的商品,讓你在週末之前就下單,而不是等缺貨之後。
一套班次模型:收銀員以點好的備用金開出一個錢箱,整天收銀,到收班時系統會顯示應有現金對點數現金,並記錄長款或短款。一張 Z 報表會彙總當天以及整個納稅期的銷售額、已收稅額和每一種收款方式,可隨時匯出給你的記帳員,全部都在你那個線上運行的 ybuild 應用程式裡完成。
數據模型
系統裡的一天
- 開班:收銀員登入並以點好的開機備用金開出一個錢箱班次,比如 150 美元的小面額鈔票。收銀台現在上線,本班次的每一筆銷售都綁定到這個班次上。
- 第一筆銷售:你掃描條碼,商品以各自的價格和稅種落入購物車,一張 10% 的折價券作為行項折扣套用,稅額只在應稅行項上、按你門市的稅率計算,然後彙總並只四捨五入一次。
- 收款:顧客一部分付現金、一部分刷卡。刷卡這一筆走你的支付處理商,回來的只有一個代碼、卡號後四位和卡組織品牌;找零在現金那一筆上計算,收據以電子郵件寄送,每一行都扣減對應的商品數量。
- 退貨:有人拿著收據把商品退回來。你按收據號把它調出來,以一條新的、相互關聯的記錄發起退款,精確沖銷原來的稅額和收款方式,並把商品放回貨架。
- 更正:一次掃錯在收款前作廢,從不觸碰庫存;一筆已完成但開錯的銷售是退款、而不是刪除,於是稽核軌跡和庫存數字都保持完整。
- 免稅銷售:持有轉售證書的轉售商免稅購買。你把整單標記為免稅、錄入證書編號,任何一行都不收稅。
- 補貨檢查:下午過半,低庫存檢視列出所有低於補貨點的商品,讓你在週末高峰之前就向供應商下單,而不是等賣光之後。
- 收班:收銀員清點錢箱。系統顯示應有現金(開機備用金加現金銷售,減去現金退款和付款)對點數現金,記錄長款或短款,並列印一張彙總銷售額、已收稅額和各收款方式合計的 Z 報表,全部託管在 ybuild 上。
AI 容易出錯的地方
- 儲存完整卡號。粗糙的做法會把整張卡號存下來,好讓退款或補印收據更方便,可這會讓你直接落入 PCI DSS 的合規範圍,把門市變成一場資料外洩的連帶責任。應用程式必須把卡交給支付處理商,只保留一個代碼、卡號後四位和卡組織品牌,永遠看不到原始卡號。
- 用一個稅率對整個小計徵稅。稅額必須按每一行的稅種、只對應稅商品逐行計算,然後彙總並只精確到分四捨五入一次。對整個購物車套用一個統一稅率,你就會在免稅商品上多收、在別處少收,也會把該上繳的數額報錯——而這恰恰會觸發一次稽查。
- 編輯或刪除已完成的銷售。作廢和退款都必須是關聯到原始記錄的新記錄,絕不是編輯或刪除。已完成的銷售一旦可以被改動,你的 Z 報表、你的稅額合計和你的庫存就再也對不上,你也熬不過一次稽查。銷售是只可追加的。
- 給刷卡建了模,卻忘了現金。真實的門市會拆分收款、找零,還會從錢箱裡付款,然後在收班時對帳長款或短款。沒有錢箱班次和「應有對點數」的核算,現金就這麼消失,還無從查起。
- 任由庫存在邊角處漂移。退款必須把商品加回來,作廢絕不能扣減,數量也絕不該悄悄變成負數。這裡面漏掉一樣,庫存一週之內就成了虛構,補貨點也就成了瞎猜。
- 收銀台加庫存這個核心:一套帶有價格、稅種和數量的商品目錄,一個能掃描商品的購物車,按門市稅率的逐行計稅,現金與刷卡的拆分收款,以及銷售即扣減的庫存。
- 只可追加的銷售,退款與作廢都作為關聯的沖銷記錄,於是每一筆已完成的銷售、退貨和更正都是一條能夠對帳的不可變記錄。
- 帶有日終收班的錢箱班次:開機備用金、應有對點數現金、長款或短款,以及一張彙總銷售額、已收稅額和各收款方式合計的 Z 報表。
- 一套完整的會計總帳。把每日合計和已收稅額匯出成 CSV 給你的記帳員或 QuickBooks,而不是在收銀台裡重建一套複式記帳。
- 多門市、按地址計算的稅務引擎。v1 是一家門市、一張按稅種索引的稅率表;日後再加上不同稅區和按地址查詢稅率。
- 電商、會員積分和行銷自動化。先把櫃台做出來,等收銀台可信之後,再掛上線上商店或積分計畫。
常見問題
我可以存下顧客的卡號,好讓退款和收據更方便嗎?
不行。儲存完整卡號會讓你落入 PCI DSS 的合規範圍,是一項嚴重的連帶責任。把卡交給你的支付處理商,只保留一個代碼、卡號後四位和卡組織品牌。退款引用處理商的交易 ID,所以你永遠不需要原始卡號,而你的資料庫即便被攻破,也不會外洩任何可用的卡資料。
系統怎樣把免稅商品的銷售稅算對?
每件商品都帶有一個稅種,比如標準、免稅或減徵。稅額按每一行、只在應稅行項上、以你門市的稅率計算,然後彙總並只精確到分四捨五入一次。對於像持有有效證書的轉售商這樣的免稅顧客,你把整單標記為免稅並錄入證書編號,於是萬一日後被問起,憑證也在。
顧客退貨時會發生什麼?
你按收據號把原始銷售調出來,以一條新的、相互關聯的記錄發起退款。它精確沖銷原單的稅額和收款方式、把商品加回庫存,並作為一筆退款出現在你的 Z 報表上。原始銷售從不被編輯或刪除,於是這一天依然對得上帳。
它能處理現金,還是只能刷卡?
都能,包括在一筆銷售裡拆分收款。收銀員以點好的備用金開出一個錢箱班次,系統在整個班次裡追蹤現金銷售、退款和付款,到收班時會顯示應有現金對你點出的現金,並記錄任何長款或短款。這套每日對帳,正是一台真正的 POS 與一個只能刷卡的玩具之間的分界線。
我怎樣擺脫現有 POS 的按台租金和子網域?
你描述想要的收銀台、商品目錄、稅種和報表,ybuild 就會把這個運行中的應用程式建置出來,並託管在你自己的網域上。你的商品、價格和銷售歷史都存放在一個歸你所有的託管資料庫裡,而不是被鎖在某個供應商的終端裡;而且為了敲一筆銷售,你也不必再按台繳租。
參考來源
- PCI 安全標準委員會:PCI DSS — 發布 PCI DSS 的機構——這套支付卡資料安全標準適用於任何受理銀行卡的商戶,也正是 POS 必須對卡資料做代碼化、絕不儲存完整卡號的原因。
- NRF 全美零售安全調查 — 美國零售聯合會(NRF)關於零售損耗的基準報告,在其 2022 財年資料中,損耗率達到銷售額的 1.6%(約 1120 億美元)——一份準確、與銷售相關聯的庫存盤點正是要把這部分損失控制住。
- Sales Tax Institute:經濟聯結與 South Dakota v. Wayfair 常見問答 — 一份被廣泛引用的銷售稅科普資料,解釋零售商在何時必須代收並上繳銷售稅——一旦門市開始做線上或跨州銷售,這一點就變得至關重要。
描述它,一次上線到你自己的網域——託管、全端、免伺服器。免費開始。