/install receipt-auditor
Receipt & Expense Auditor
Overview
The Receipt & Expense Auditor turns raw bill and receipt text into organized, categorized expense reports. It supports three modes:
| Mode | Description |
|---|---|
| 📋 Report | Categorize expenses and generate a ready-to-submit reimbursement report |
| 🔪 AA Split | Calculate per-person payment splits for group dining, travel, or shared expenses |
| 🔍 Audit | Detect duplicate charges, suspicious entries, and amount anomalies |
Who Is This For?
| User | Pain Point | This Skill Solves |
|---|---|---|
| Office worker | Monthly expense report pileup | Categorizes everything instantly |
| Freelancer | No accounting tools | Generates clean expense reports in seconds |
| Group diners | Splitting bills is awkward | Fair AA split with per-person breakdown |
| Credit card user | Suspicious charges | Detects duplicates and unusual amounts |
| Family finance | Tracking monthly spending | Summarizes by category for budgeting |
Workflow (7 Steps)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. │ │ 2. │ │ 3. │ │ 4. │ │ 5. │ │ 6. │ │ 7. │
│ Input │ → │ Extract │ → │ Classify │ → │ Anomaly │ → │ AA Split │ → │ Report │ → │ Summary │
│ Reading │ │ Info │ │ │ │ Detection│ │ │ │ Generate │ │ Report │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
Step 1: Input Reading
- Accept pasted bill text, file path, or JSON config
- Support multiple input formats: plain text lines, structured JSON
Step 2: Information Extraction
- Parse each line to extract: date, merchant name, amount, quantity
- Recognize common patterns: "6/1 北京-上海高铁 553元", "380元x2晚"
Step 3: Intelligent Classification
- Match merchant/description against category keywords
- Categories: Transportation, Accommodation, Food & Beverage, Office, Healthcare, Entertainment, Shopping, Communication, Other
Step 4: Anomaly Detection
- Duplicate detection: Same date + same merchant + same amount
- Amount check: Entries significantly higher than expected range
- Missing info: Lines missing date, amount, or description
Step 5: AA Split Calculation (AA Mode Only)
- Separate shared items from personal items
- Shared amount ÷ people count = per-person share
- Per-person total = personal items + shared share
- Cross-verify total matches original bill
Step 6: Report Generation
- Output formatted expense report table (Markdown)
- Category summary with counts and totals
Step 7: Summary Report
- Monthly/yearly spending overview
- Per-category breakdown with percentages
Sample Prompts (with Expected Output)
Sample 1: Business Trip Reimbursement — Report Mode
Prompt:
Mode: report
Items:
6/1 北京-上海高铁 553元
6/1 上海汉庭酒店 380元x2晚
6/2 客户午餐 268元
6/2 上海-北京机票 820元
6/2 机场打车 156元
Expected Output:
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|---------------------|
| 6/1 | 交通 | 553 | 北京-上海高铁 |
| 6/1 | 住宿 | 760 | 上海汉庭酒店2晚 |
| 6/2 | 餐饮 | 268 | 客户午餐 |
| 6/2 | 交通 | 820 | 上海-北京机票 |
| 6/2 | 交通 | 156 | 机场打车 |
| **合计** | | **2557** | |
=== 类别汇总 ===
交通:2笔 — 1529元
住宿:1笔 — 760元
餐饮:1笔 — 268元
异常提醒:无
可报销金额:2557 元
Sample 2: Group Dining AA — AA Split Mode
Prompt:
Mode: aa-split
Config:
Restaurant: 海底捞
Total: 468元
People: 4 (张三, 李四, 王五, 赵六)
Personal orders:
- 张三: 毛肚 68元
- 李四: 虾滑 58元
- 王五: 饮料 18元
- 赵六: 牛肉 88元
Shared: 锅底+蔬菜+主食 236元
Expected Output:
=== AA 分摊结果 ===
公共部分:锅底+蔬菜+主食 = 236元
公共人均:236 ÷ 4 = 59元
| 人员 | 个人点单 | 公共分摊 | 应付 |
|------|----------|----------|---------|
| 张三 | 68 | 59 | 127 元 |
| 李四 | 58 | 59 | 117 元 |
| 王五 | 18 | 59 | 77 元 |
| 赵六 | 88 | 59 | 147 元 |
合计验证:127+117+77+147 = 468元 ✅
Sample 3: Credit Card Anomaly Detection — Audit Mode
Prompt:
Mode: audit
Items:
6/1 超市 128.50
6/1 超市 128.50
6/2 咖啡店 35.00
6/3 健身房 299.00
6/3 健身房 299.00
6/5 加油站 420.00
Expected Output:
=== 账单核对报告 ===
| 日期 | 商家 | 金额 | 状态 |
|--------|--------|--------|------------|
| 6/1 | 超市 | 128.50 | ⚠️ 重复消费 |
| 6/1 | 超市 | 128.50 | ⚠️ 重复消费 |
| 6/2 | 咖啡店 | 35.00 | ✅ 正常 |
| 6/3 | 健身房 | 299.00 | ⚠️ 重复消费 |
| 6/3 | 健身房 | 299.00 | ⚠️ 重复消费 |
| 6/5 | 加油站 | 420.00 | ✅ 正常 |
=== 异常提醒 ===
1. 6/1 超市 128.50元 — 疑似重复消费(同一日期同一商家)
2. 6/3 健身房 299.00元 — 疑似重复消费(同一日期同一商家)
建议:请核实是否为扣款两次或输入重复。
本月总支出:1310.00 元
Sample 4: Monthly Expense Summary — Report Mode
Prompt:
Mode: report
Items:
6/3 盒马生鲜 326.50
6/5 中国石化加油 420.00
6/7 美团外卖 45.00
6/10 星巴克 36.00
6/12 滴滴打车 28.00
6/15 淘宝 - 办公室用品 128.00
6/18 电影票 120.00
6/20 海底捞 368.00
6/25 手机话费充值 100.00
6/28 京东 - 书籍 236.00
Expected Output:
=== 月度支出报告(6月)===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|---------------------|
| 6/3 | 餐饮 | 326.50 | 盒马生鲜 |
| 6/5 | 交通 | 420.00 | 中国石化加油 |
| 6/7 | 餐饮 | 45.00 | 美团外卖 |
| 6/10 | 餐饮 | 36.00 | 星巴克 |
| 6/12 | 交通 | 28.00 | 滴滴打车 |
| 6/15 | 办公 | 128.00 | 淘宝办公室用品 |
| 6/18 | 娱乐 | 120.00 | 电影票 |
| 6/20 | 餐饮 | 368.00 | 海底捞 |
| 6/25 | 通讯 | 100.00 | 手机话费充值 |
| 6/28 | 办公 | 236.00 | 京东书籍 |
=== 类别汇总 ===
餐饮:4笔 — 775.50 (44.7%)
交通:2笔 — 448.00 (25.8%)
办公:2笔 — 364.00 (21.0%)
娱乐:1笔 — 120.00 (6.9%)
通讯:1笔 — 100.00 (5.8%)
本月总支出:1,807.50 元
Sample 5: Freelancer Invoice Collection — Report Mode
Prompt:
Mode: report
Currency: USD
Items:
5/1 Adobe Creative Cloud 52.99
5/3 WeWork Coworking 350.00
5/5 Google Cloud Hosting 89.50
5/10 LinkedIn Premium 29.99
5/15 Notion Team Plan 18.00
5/20 Zoom Pro 14.99
5/25 Figma Professional 12.00
Expected Output:
=== Expense Report (May) ===
| Date | Category | Amount | Description |
|---------|----------------|--------|----------------------------|
| 5/1 | Office | 52.99 | Adobe Creative Cloud |
| 5/3 | Office | 350.00 | WeWork Coworking |
| 5/5 | Office | 89.50 | Google Cloud Hosting |
| 5/10 | Communication | 29.99 | LinkedIn Premium |
| 5/15 | Office | 18.00 | Notion Team Plan |
| 5/20 | Communication | 14.99 | Zoom Pro |
| 5/25 | Office | 12.00 | Figma Professional |
| **Total** | | **567.47** | |
=== Category Summary ===
Office: 5 items — $522.49 (92.1%)
Communication: 2 items — $44.98 (7.9%)
Anomaly Warning: None
Real-World Task Examples
Task 1: Sales Rep Monthly Reimbursement
Scenario: A sales representative needs to submit a monthly expense report for travel and client entertainment.
Input:
Items:
6/3 北京-深圳高铁 944元
6/3 深圳万豪酒店 680元x2晚
6/4 客户公司拜访 打车 45元
6/4 客户晚餐 西贝莜面 320元
6/5 深圳-北京机票 1280元
6/6 办公室停车费 60元
6/8 上海客户会议 打车 35元
6/8 上海午宴 856元
6/9 上海-北京高铁 626元
Execution Steps:
- Mode set to "report" — input is raw bill lines
- Each line is parsed for date, merchant, amount, quantity
- Items classified: 高铁→交通, 酒店→住宿, 打车→交通, 晚餐→餐饮, etc.
- Duplicate check: no duplicates found
- Report generated with category summaries
Expected Output:
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|-------------------------|
| 6/3 | 交通 | 944 | 北京-深圳高铁 |
| 6/3 | 住宿 | 1360 | 深圳万豪酒店2晚 |
| 6/4 | 交通 | 45 | 客户公司拜访打车 |
| 6/4 | 餐饮 | 320 | 客户晚餐西贝莜面 |
| 6/5 | 交通 | 1280 | 深圳-北京机票 |
| 6/6 | 交通 | 60 | 办公室停车费 |
| 6/8 | 交通 | 35 | 上海客户会议打车 |
| 6/8 | 餐饮 | 856 | 上海午宴 |
| 6/9 | 交通 | 626 | 上海-北京高铁 |
| **合计** | | **5526** | |
=== 类别汇总 ===
交通:5笔 — 2990元
住宿:1笔 — 1360元
餐饮:2笔 — 1176元
异常提醒:无
提示:交通类支出占比较高(54%),可考虑提前购票折扣。
可报销金额:5526元
Task 2: 8-Person Dinner Party AA
Scenario: 8 friends went to a Chinese restaurant. 3 people brought their own wine. Need to calculate a fair split.
Input:
Restaurant: 花胶鸡火锅
Total: 1286元
People: 8
Personal orders:
- 小明: 毛肚58, 鹅肠48
- 小红: 虾滑52, 蔬菜拼盘38
- 大伟: 自带红酒(免费)
- 小美: 牛肉98
- 阿杰: 蟹柳32, 墨鱼丸28
- 阿丽: 蘑菇拼盘42
- 老林: 自带红酒(免费)
- 小雅: 三文鱼88, 甜虾68
Shared: 锅底288, 调料56, 饮料128, 纸巾18
Wine brought: 3 people (including the two who brought wine, but the third 自带红酒 person is not listed — assume they brought wine)
Execution Steps:
- Separate personal orders from shared items
- Note: 大伟 and 老林 brought their own wine — their share of "饮料" should be excluded (or adjusted)
- Calculate shared total: 288+56+128+18 = 490元
- Adjust: 2 people (自带红酒) don't share 饮料 128元 → shared-饮料 = 362元 ÷ 8 + 128÷6
- Or simpler: total shared = 490, divide evenly unless specified
- Per-person = personal + shared share
Expected Output:
=== AA 分摊结果 ===
餐厅:花胶鸡火锅 | 人数:8人 | 总金额:1286元
公共项目(8人分担):
锅底288 + 调料56 + 饮料128 + 纸巾18 = 490元
公共人均(8人):490 ÷ 8 = 61.25元
注:大伟、老林自带红酒,不参与饮料分摊
修正后公共人均(6人):饮料128÷6=21.33,其余362÷8=45.25 → 饮料部分除外
| 人员 | 个人点单 | 公共分摊 | 应付 |
|------|----------|----------|-------------|
| 小明 | 106 | 61.25 | 167.25 元 |
| 小红 | 90 | 61.25 | 151.25 元 |
| 大伟 | 0 | 50.00 | 50.00 元 |
| 小美 | 98 | 61.25 | 159.25 元 |
| 阿杰 | 60 | 61.25 | 121.25 元 |
| 阿丽 | 42 | 61.25 | 103.25 元 |
| 老林 | 0 | 50.00 | 50.00 元 |
| 小雅 | 156 | 61.25 | 217.25 元 |
合计验证:1019.50 + 大伟老林修正... ❌ 总金额不匹配,请核实。
推荐方案(简化:公共不分饮料):
全部公共(不含饮料)362÷8=45.25
饮料128÷6=21.33
大伟/老林实付=45.25
其他人实付=45.25+21.33+个人点单
修正合计确认:略(由用户最终确认)
Note: In practice, the assistant should handle the complex AA logic and present the simplest correct split.
Task 3: Monthly Family Budget Review
Scenario: A family wants to review June spending across all categories and identify areas to cut back.
Input:
Items:
6/1 永辉超市 385.20
6/2 美团买菜 128.50
6/3 支付宝 - 水电费 312.00
6/5 滴滴打车 42.00
6/5 京东 - 打印机墨盒 89.00
6/7 美团外卖 56.00
6/8 星巴克 38.00
6/10 物美超市 256.80
6/12 顺丰快递 23.00
6/13 中国石化加油 380.00
6/15 海底捞 425.00
6/16 美团买菜 112.30
6/18 联通话费 99.00
6/20 滴滴打车 35.00
6/22 永辉超市 298.50
6/25 京东 - 书籍 156.00
6/27 美团外卖 68.00
6/28 支付宝 - 燃气费 86.00
6/30 物美超市 198.00
Execution Steps:
- All 19 items classified by category
- Generate category breakdown with percentages
- Detect spending patterns and provide suggestions
Expected Output:
=== 家庭支出报告(6月)===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|-------------------|
| 6/1 | 购物 | 385.20 | 永辉超市 |
| 6/2 | 餐饮 | 128.50 | 美团买菜 |
| 6/3 | 其他 | 312.00 | 水电费 |
| 6/5 | 交通 | 42.00 | 滴滴打车 |
| 6/5 | 办公 | 89.00 | 京东打印机墨盒 |
| ... | ... | ... | ... |
| **合计** | | **3188.30** | |
=== 类别汇总 ===
| 类别 | 笔数 | 金额 | 占比 |
|--------|------|----------|------|
| 购物 | 4 | 1,138.50 | 35.7% |
| 餐饮 | 5 | 799.80 | 25.1% |
| 交通 | 3 | 457.00 | 14.3% |
| 其他 | 3 | 497.00 | 15.6% |
| 办公 | 2 | 245.00 | 7.7% |
| 通讯 | 1 | 99.00 | 3.1% |
=== 财务建议 ===
📌 购物类支出占比最高(35.7%),可考虑减少非必需购物
📌 外卖/餐饮频次较高(6次),可增加家中做饭频率
📌 建议设定每月购物预算上限为800元
📌 无异常重复消费记录 ✅
First-Success Path (30 Seconds)
# ──────────────────────────────────────────────────
# 30-SECOND FIRST SUCCESS
# ──────────────────────────────────────────────────
# Step 1 (5s): Run with a few expense lines
receipt-auditor --mode report --items "6/1 北京-上海高铁 553元"
# Step 2 (10s): Read the categorized output
# Step 3 (10s): Add more items or switch modes
receipt-auditor --mode audit --items $'6/1 超市 128.50\
6/1 超市 128.50'
# Step 4 (5s): Copy the formatted report to your reimbursement system!
Quick-start for AI Assistants
Process the following expenses and generate a categorized report:
{mode: report, items: "6/1 北京-上海高铁 553元\
6/1 酒店 380元x2晚"}
Include: date, category, amount, description, category summary, total, and anomaly warnings.
Verification Checklist
After running the skill, confirm:
- Mode matches the intended use case
- All line items parsed correctly (date, merchant, amount)
- Categories assigned correctly (verify 2-3 items manually)
- Total calculation is accurate
- Anomalies flagged (if any) are legitimate
- AA split totals verify against original amount
- Output is formatted as a clean Markdown table
Error Handling
| Issue | Resolution |
|---|---|
| Item missing date | Flag as "missing info" and still process |
| Amount format unclear | Flag as "amount unclear — verify manually" |
| Negative amount | Mark as refund/credit, separate from expenses |
| AA split totals don't match | Warn user: "Total mismatch by X元 — adjust manually" |
| Unrecognized category | Default to "Other" and log for user review |
| Empty input | Return: "No items to process — please provide bill text" |
Key Differentiators
- Semantic classification: Understands Chinese merchant names and descriptions, not just keywords
- Three specialized modes: Report (reimbursement), AA Split (social), Audit (security) in one skill
- Smart anomaly detection: Catches duplicates, unusual amounts, and missing info automatically
- Ready-to-submit output: Markdown tables formatted for corporate reimbursement systems
- AA logic: Handles complex scenarios (shared items, personal items, exclusions like "brought own wine")
- Privacy-first: No data storage — process and forget
License
MIT-0 — No attribution required.
Changelog
- v1.0.0 (2026-06-15): Initial release — three-mode expense auditor with intelligent classification, anomaly detection, and AA split calculation.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install receipt-auditor - After installation, invoke the skill by name or use
/receipt-auditor - Provide required inputs per the skill's parameter spec and get structured output
What is Receipt Auditor?
Extract, categorize, and audit receipts and bills to generate expense reports and spot discrepancies. It is an AI Agent Skill for Claude Code / OpenClaw, with 33 downloads so far.
How do I install Receipt Auditor?
Run "/install receipt-auditor" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Receipt Auditor free?
Yes, Receipt Auditor is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Receipt Auditor support?
Receipt Auditor is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Receipt Auditor?
It is built and maintained by haidong (@harrylabsj); the current version is v1.0.0.