如何建置發票 App
發票 App 會保存一份客戶列表,讓你建立含帳項明細與稅額的發票,為每張發票指派唯一編號,產生 PDF 或客戶可以開啟的連結,並追蹤是否已付款。第一版是一個直接的資料庫 App,用 AI 花一兩個下午就能建置完成。真正重要的細節,包括編號、稅額、鎖定的發票與付款狀態,正是區分玩具與能夠寄給客戶的工具的關鍵。
先決定你需要哪一種發票工具
「發票 App」涵蓋好幾種不同的東西。開始之前,請先選定一種:
| 類型 | 使用者 | 差異 |
|---|---|---|
| 個人發票產生器 | 自由工作者 | 一個事業體、快速產生 PDF、簡單的已付款清單 |
| 企業發票工具 | 小型團隊 | 多位使用者、共用客戶列表、報表 |
| 嵌入較大 App 的發票功能 | 你的客戶或員工 | 從你已經追蹤的案件、預約或工時自動產生發票 |
| 供其他企業使用的發票產品 | 許多企業 | 每個帳號只能看到自己的資料,這就是 SaaS |
第三種類型是自建最能發揮價值的地方:如果你已經記錄案件或工時,直接從這些資料產生發票,就能省下重複輸入的時間。第四種則是一個完整的 SaaS MVP,需要處理帳號與計費等議題。
資料模型
四個資料表涵蓋大多數需求:
- 事業設定:你的名稱、地址、統一編號或增值稅號、標誌、銀行資料、預設付款期限、預設稅率、幣別,以及下一個發票編號。
- 客戶:名稱、公司、電子郵件、帳單地址、必要時的稅籍編號,以及預設條件。
- 發票:編號、客戶、開立日期、到期日、狀態、幣別、備註,以及總計(小計、稅額、總額)。
- 帳項明細:所屬發票、說明、數量、單價、稅率與金額小計。
如果客戶分期或以多種方式付款,可以加入付款資料表:所屬發票、日期、金額、方式、參考編號。
真正重要的規則
如果你沒有特別要求,AI 建置工具通常不會做好這些部分:
- 連續且唯一的編號。 許多稅務制度要求發票編號唯一且連續。應在發票正式開立時,由伺服器產生編號,而不是在建立草稿時產生,這樣被放棄的草稿就不會造成號碼缺口。
- 鎖定已送出的發票。 發票送給客戶後,若被悄悄修改就會出問題。只允許編輯草稿;對已送出的發票,應作廢後重開,或開立折讓單/貸項通知單。
- 快照客戶資料。 如果客戶明年換了地址,去年的發票仍應顯示舊地址。開立發票時,就將客戶資料複製到發票上。
- 以最小貨幣單位的整數儲存金額。 以分(或便士)儲存,而不是小數,避免總計因四捨五入而偏差。稅額要依稅務機關要求的方式取捨,可以逐行計算,也可以逐張發票計算。
- 狀態要符合實際。 草稿、已送出、已付款、部分付款、逾期、已作廢。「逾期」應根據到期日計算,而不是手動設定。
PDF 還是發票頁面?
客戶通常期待 PDF,但網頁更容易保持同步。多數發票工具兩者都提供:
- 可分享的發票頁面:附有難以猜測的連結,讓客戶不需登入即可檢視並付款。
- PDF 下載:由同一份資料產生,附上你的標誌與資料。
請要求適合列印的版面,並確認 PDF 在紙張尺寸(A4 或 US Letter)上的呈現。帳項明細很長時,應能乾淨地跨頁。
線上收款
對許多企業來說,在發票上顯示銀行帳號就足夠了。如果你想接受信用卡付款,可以串接付款服務商:
- Stripe 結帳或付款連結,金額即為發票金額。客戶在發票頁面點擊「立即付款」。
- Webhook:付款服務商在付款成功時通知你的 App,App 再將發票標記為已付款。不要僅因客戶返回成功頁面就標記為已付款,因為該頁面可以在未付款的情況下被造訪。參見如何為你的 App 加入付款功能。
- 先在測試模式下運作。在整個流程都正常之前,使用付款服務商的測試金鑰與測試卡。
值得注意的是,Stripe 自 2026 年 9 月起也提供自家的發票產品,附有代管的發票頁面。如果你只需要寄出發票並收到款項,這可能就已足夠。
催繳提醒
「您的發票即將到期」之類的自動電子郵件,是最受重視的功能之一,也是最容易出錯的功能之一。你需要:
- 電子郵件服務(Resend、Postmark、SendGrid 等)。參見如何從你的 App 寄送電子郵件。
- 能定時執行、找出逾期發票的機制。閒置時會休眠的已發布網頁 App 不會自己醒來,因此請詢問建置工具如何觸發檢查,例如由外部的排程服務定時呼叫 App 中的端點。
- 已寄出提醒的紀錄,確保同一封提醒不會寄給同一人兩次。
先從手動的「寄送提醒」按鈕開始,之後再自動化。
一則可行的第一則提示
為我的網頁設計事業建置發票 App。我登入後管理客戶(名稱、公司、電子郵件、帳單地址、增值稅號)。我建立發票並加入帳項明細(說明、數量、單價),每一行可設定增值稅率,小計、增值稅與總額會即時計算。發票編號是連續的(INV-0001、INV-0002),在我把發票標記為已送出時才指派;草稿保持可編輯,已送出的發票則鎖定。每張發票都有狀態(草稿、已送出、已付款、逾期)與到期日;逾期根據到期日計算。每張發票會產生一個私人的可分享連結,以及附上我的標誌與銀行資料的 PDF 下載。儀表板顯示未收款總額與逾期總額。金額以便士儲存,僅使用英鎊。所有資料存入資料庫。
建置步驟
- 先設定事業資料與客戶。 每張發票都依賴它們,所以先讓這兩部分運作。
- 發票編輯器。 帳項明細、稅額與總計。用棘手的數字測試,例如 3 × £33.33 加 20% 增值稅,並用計算機核對總計。
- 編號與鎖定。 開立三張發票,刪除一張草稿,再開立一張。編號應維持連續,沒有缺口或重複。
- 發票頁面與 PDF。 在私密視窗中開啟分享連結,列印 PDF。
- 付款。 在測試模式中加入 Stripe,用測試卡支付一張發票,確認 Webhook 會把它標記為已付款。
- 安全檢查。 登出後,嘗試把網址中的 ID 改成另一位客戶的發票。只有私人的分享連結應該能開啟,而且不應洩漏其他發票。我們的安全檢查清單有更多可以嘗試的項目。
- 匯出。 新增發票與付款的 CSV 匯出,供會計師使用。
常見錯誤
- 金額使用浮點數。 0.1 + 0.2 不等於 0.3 是真實 App 中真實存在的錯誤。請儲存最小單位的整數。
- 已送出的發票仍可編輯。 客戶收到後再修改,會造成爭議與帳務問題。
- 在草稿階段就指派號碼。 會造成缺號與混淆。
- 可猜測的發票連結。
/invoice/42會讓人試試/invoice/43。請使用長的隨機權杖。 - 假設只有一種稅制。 稅率、反向課稅與必要的法定文字,會因國家與客戶類型而異。請詢問會計師,不要讓 AI 猜測。
- 沒有備份。 發票是你可能需要保存多年的紀錄。定期匯出,並在方案允許時,把程式碼保存到 GitHub。
成本與工具
| 項目 | 用途 | 說明 |
|---|---|---|
| App 建置工具/主機/資料庫 | 建置與運行 App | 在 Mythex,一份點數餘額即可涵蓋這些項目,請見定價 |
| 付款服務商 | 信用卡收款 | 每筆交易收取手續費;請查詢你所在國家的最新費率 |
| 電子郵件服務 | 寄送發票與提醒 | 許多服務在低用量時有免費方案 |
| 網域 | 專業的發票連結 | 選用,按年計費 |
何時現成的發票軟體是更好的選擇
當發票是你自己工作流程的一部分、當你希望工具完全依照你的計費方式量身打造,或當你要把發票功能加入已有的 App 時,就適合自建。以下情況則應選擇成熟的會計或發票軟體:
- 你需要在同一處處理記帳、銀行帳務同步、費用追蹤與報稅。
- 你所在的國家要求特定格式的電子發票,或必須透過認證管道開立。
- 你寧願讓會計師使用他們已經熟悉的工具。
一個常見的折衷做法,是自建針對你業務的部分(案件、工時,以及讓客戶查看發票的客戶入口),再把數字匯出到會計軟體。中小企業自建或購買軟體的比較會協助你做出決定。
用 Mythex 建置
在 Mythex 上,你可以在聊天中描述發票 App,並在即時預覽中看到它逐步成形。當 App 需要時,會加入資料庫,並把 Stripe 密鑰等 API 金鑰保存在專案機密中,然後把 App 發布到可立即使用的網址。文件中的 Stripe 範例說明了自備金鑰的設定方式。若想從已描述基本需求的提示開始,可以試用發票產生器或自由工作者發票範本。
常見問題
發票 App 需要哪些功能?
客戶列表、含帳項明細、稅額與總計的發票、不重複且連續的發票編號、PDF 或可分享的發票頁面,以及每張發票的狀態(草稿、已送出、已付款、逾期)。線上收款與催繳提醒是最實用的後續功能。
我的發票 App 可以接受信用卡付款嗎?
可以,透過 Stripe 等付款服務商即可。App 會為發票金額建立付款連結或結帳頁面,付款成功時,付款服務商透過 Webhook 通知 App,將發票標記為已付款。
使用自建的發票 App 合法嗎?
一般而言可以,但發票的法定內容要求因國家而異,例如賣方資料、稅籍編號、日期與稅額拆分,某些國家還要求使用特定格式的電子發票。在依賴之前,請先與會計師確認適用於你的規定。
我應該自建發票 App,還是使用會計軟體?
如果你需要記帳、報稅或銀行對帳,請使用會計軟體。當發票與你自己的工作流程綁在一起(案件、工時、專案),或你想要一個沒有每席位費用的簡單工具時,就適合自建。