Install
openclaw skills install receipt-auditorExtract, categorize, and audit receipts and bills to generate expense reports and spot discrepancies.
openclaw skills install receipt-auditorThe 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 |
| 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 |
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. │ │ 2. │ │ 3. │ │ 4. │ │ 5. │ │ 6. │ │ 7. │
│ Input │ → │ Extract │ → │ Classify │ → │ Anomaly │ → │ AA Split │ → │ Report │ → │ Summary │
│ Reading │ │ Info │ │ │ │ Detection│ │ │ │ Generate │ │ Report │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
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 元
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元 ✅
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 元
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 元
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
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:
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元
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:
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.
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:
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元
📌 无异常重复消费记录 ✅
# ──────────────────────────────────────────────────
# 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\n6/1 超市 128.50'
# Step 4 (5s): Copy the formatted report to your reimbursement system!
Process the following expenses and generate a categorized report:
{mode: report, items: "6/1 北京-上海高铁 553元\n6/1 酒店 380元x2晚"}
Include: date, category, amount, description, category summary, total, and anomaly warnings.
After running the skill, confirm:
| 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" |
MIT-0 — No attribution required.