# Expense Reimbursement

> Expense Reimbursement

- Skill: `cherryhq/expense-reimbursement` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add cherryhq/expense-reimbursement`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cherryhq/expense-reimbursement/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: CherryHQ (https://skillmd.com/u/cherryhq)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cherryhq/expense-reimbursement

---


# Expense Reimbursement

## Overview

```
Single invoice intake (staging) → Batch aggregation (draft + approval) → Ledger & Dashboard (reports)
```

## Interaction Principles

- **Default to execute, ask only on error**: after receiving an invoice, auto-complete parsing, writing, and uploading. Only interrupt if critical fields are missing or config is missing.
- **Results-oriented**: after completion, show a "saved" summary directly. No intermediate "pending confirmation" states.
- **Config-first**: use the Base token already configured in reference files. Do not ask user for it repeatedly.

---

## Built-in Scripts

All invoice intake Base operations are handled by `scripts/invoice_intake.py`. **Do not manually construct lark-cli commands.**

- **AI handles:** parsing invoice, determining expense type, generating reason description
- **Script handles:** user identity, Base location, timestamp conversion, dedup, writing, attachment upload

See `references/invoice-intake.md` Step 4 for details.

---

## Routing Rules

| User Scenario | Read File |
|---------------|-----------|
| Submit an invoice, stage it first | `references/invoice-intake.md` |
| End-of-month batch aggregation, generate reimbursement draft, initiate approval | `references/batch-reimbursement.md` |
| View ledger, summary reports, budget analysis | `references/ledger-dashboard.md` |

When intent is unclear, ask: "Do you want to stage an invoice first, or organize and submit a reimbursement form for approval now?"

