使用發票和費用資料庫中的 Claude Code 構建 VAT 退貨系統
我如何透過確定性數學、審計跟蹤和人工審批門從 Postgres 發票表和供應商 PDF 資料夾到 HMRC Box 1 到 9 個數字
簡短易讀的伴侶。有關程式碼、提示、架構、HMRC MTD 演練和邊緣案例的完整約 5,000 字的深入研究,請閱讀 長篇文章.
季度 VAT 是我這個月最糟糕的部分
每個季度,英國小企業必須生成 VAT 報表:九個框的數字(銷售、採購、VAT 到期、VAT 可回收、歐盟商品(如果您在北愛爾蘭)、總計、淨額),並透過 HMRC Making Tax Digital (MTD) 提交。多年來,我的流程是這樣的:在 Postgres 中開啟發票表,匯出 CSV,將其貼上到 Excel 中,手動對幾百行進行分類,執行公式,將九個數字複製到第三方 MTD 橋中,單擊“提交”,希望如此。
它有效,但速度慢且有損耗。收據不見了。季度中期的利率變化打破了公式。 VAT 分類中的一個拼寫錯誤可能會移動 Box 5 數百英鎊。審計跟蹤是“相信我,我有一個電子表格”。
今年,我將整個專案重建為一個小型 Claude Code 專案,該專案讀取我的發票 + 費用資料庫,對每一行進行分類,計算九個框,試執行 PDF,然後才透過人工審批門提交給 HMRC MTD。該部落格是簡短版本。這篇長文章包含提示、Python、HMRC OAuth 流程和陷阱。
觀看演練
針對真實(匿名)發票 + 費用資料庫端到端執行的 VAT 返回管道的簡短演練。
五步管道
- 連線。 Claude Code 獲得 只讀 與我的發票和費用表的資料庫連線。它永遠沒有對源資料的寫訪問許可權。來自 Stripe、Wise、Revolut 和一些銀行提要的 CSV 被放入
./imports/. - 正常化。 Claude 生成並執行一個小型 Python 指令碼,將每個源模式對映到一個規範檢視:
id, date, supplier_or_customer, gross, net, vat_amount, vat_rate, vat_treatment, country_code, currency, source, run_key。外幣使用 HMRC 月匯率轉換為 GBP。整個時期以冪等為關鍵run_key所以重新執行是安全的。 - 分類+協調。 Claude 將每條線分為 VAT 待遇 - 標準 20%、降低 5%、零、豁免、範圍外、反向收費、歐盟商品、歐盟服務、推遲進口 VAT - 使用小型
vat-rules.md我保留在回購協議中。它還可以根據付款核對發票並標記異常情況(負淨額、缺少供應商 VAT 編號、國家/地區程式碼不匹配、未註冊 VAT 的供應商)。 - 計算。 純函式 Python 模組 - 數學中沒有 LLM - 讀取分類行並生成 Box 1 到 Box 9,以及 Markdown 中的試執行報告。統一費率方案、現金會計和年度會計分支是明確的程式碼路徑,而不是提示指令。
- 提交。 只有在我(或我的會計師)簽署試執行後,管道才會呼叫 HMRC MTD API。 OAuth2 代幣。防欺詐標頭。
GET obligations找到開放時間。POST returns和finalised: true。然後GET liabilities確認我欠什麼以及何時欠。
為什麼選擇 Claude Code 而不是 Xero / QuickBooks / FreeAgent
老實說,對於大多數小型企業來說,打包的會計師 SaaS 是正確的答案。他們擁有 HMRC 認證、支援團隊,並且您的會計師已經瞭解他們。那麼我為什麼要這樣做呢?
- 我已經每天使用 Claude Code 用於軟體工作。使用它來組裝 VAT 管道的邊際成本也很小。
- 我的資料是本地的。 發票資料庫永遠不會離開我的機器。分類器在行上執行;數學是本地Python;只有最後九個數字進入 HMRC。沒有 SaaS 租戶,沒有第三方。
- 我想要完全控制分類規則。 我的一些供應商組合很尷尬(歐盟服務、推遲進口 VAT、一些零稅率的邊緣情況)。將這些規則編碼為
vat-rules.md+ 對我來說,Python 模組比配置 SaaS 更快。 - 審計線索是我的。 每個克勞德提示和每個差異都會與簽名的週期快照一起提交到僅附加日誌中。如果 HMRC 提出要求,我可以在幾秒鐘內完成精確的計算。
如果您還沒有使用 Claude Code 或者您不喜歡在午夜閱讀 Python,請使用 Xero / QuickBooks / FreeAgent。這並不是建議您部署自己的 VAT 系統。這是一個關於當你這樣做時一切皆有可能的故事。
LLM 在哪裡和不在哪裡
這是我想大聲說出來的部分。 克勞德不在 VAT 算術中。 Claude 對線條進行分類,提出協調建議,並生成和編輯執行數學運算的確定性 Python 模組。 Box 1 到 Box 9 的實際計算是帶有單元測試的純函式。 HMRC 提交需要人工審批。試執行報告是簽字的事實來源。如果我無法透過檢視程式碼和分類行來解釋為什麼某個數字是這樣的,我不會提交。
這是一條硬性規則,因為金融受到監管,而“人工智慧做到了”並不是 MTD 下的辯護理由。這 長文章 更詳細地介紹如何在您自己的實現中繪製這條線。
我的建造成本和運營成本
構建時間大約是一週的晚上——主要花在模式規範化、分類器規則和為引擎編寫測試上。 HMRC MTD OAuth 舞蹈是最慢的部分;首先在沙箱中執行是值得的。
為了執行,每個季度我的費用大約是:我的 Claude Code 訂閱(已經為其他工作付費)加上分類器的幾美分代幣使用量。 HMRC API 本身是免費的。 VAT 引擎和稽核日誌在我的 Mac 上本地執行。
重要免責宣告
我是一名工程師,不是特許會計師。 本文不是稅務建議。 在針對您的真實 HMRC 帳戶執行此類操作之前,請讓一位英國註冊會計師對您的第一份報表進行端到端稽核。使用 HMRC MTD 沙箱 直到你和你的會計師都滿意為止。糟糕的 VAT 提交的成本遠高於會計師一小時時間的成本。
閱讀長版本
如果您想要了解完整情況 - 確切的 CREATE TABLE 模式、Claude Code 提示、帶有單元測試的確定性 Python 引擎、HMRC MTD OAuth 流程、欺詐預防標頭以及有關邊緣情況的完整部分(Brexit / NI 協議、反向收費、部分豁免、統一費率方案、季度中期費率變化、多幣種發票、貸方票據、存款) - 請閱讀 長文章。這是我在開始之前就想閱讀的版本。
觀看 YouTube 演練,訂閱後續教程(自動匯入銀行資料、收據 OCR、預定 cron + Slack 批准),並記住:不是稅務建議,需要會計師簽字。