Expense Docs
Expensify alternative — import bank CSVs, auto-categorize expenses, generate reports and monthly summaries as DOCX.
Plugin ID
pf-expense-docs
Category
finance
Version
v1.1
Downloads
pf-expense-docs
Expensify alternative — import bank CSVs, auto-categorize expenses with IRS Schedule C mapping, generate tax-aware reports and monthly summaries as DOCX with GAAP/SOX guidance.
pf-expense-docs is a Cowork plugin that automates expense tracking workflows as an alternative to $60-216/user/year SaaS tools like Expensify and Zoho Expense with zero-cost local document generation. Import your bank statement CSV, get auto-categorization with AI fallback mapped to IRS Schedule C line items, and generate professional reports with tax-deductibility tracking, monthly summaries with CIMA variance analysis, policy compliance audits with fraud detection, accounting system exports, and receipt matching — all in standard DOCX format with data staying local and informed by SOX guidelines audit trails.
Installation
- Install the plugin in your Cowork environment
- Run
/expense-docs:expense-docs-setupto initialize workspace folders and configuration - Customize expense categories and policy rules in
.expense-docs/config.json(optional)
No additional software required beyond Python 3.7+ (pre-installed in Cowork) and the python-docx package (installed automatically by setup).
Quick Start
1. Initialize Workspace
/expense-docs:expense-docs-setup
Creates folders: inbound/, processing/, outbound/, archive/, .expense-docs/, .expense-docs/logs/
Default categories map to IRS Schedule C (Form 1040) line items with tax-deductibility classifications.
2. Import Bank CSV
/expense-docs:expense-docs-import
Place your bank CSV in inbound/ folder with naming: BANK-YYYY-MM.csv (e.g., chase-2026-01.csv)
Supported formats: Chase, Bank of America, Wells Fargo, Citi, Capital One, American Express, or generic with auto-detection.
3. Generate Reports
Single command (generate all reports):
/expense-docs:expense-docs-full
Or generate individually:
/expense-docs:expense-docs-report # Detailed transaction report with tax-deductibility
/expense-docs:expense-docs-summary # Monthly analysis with CIMA variance methodology
/expense-docs:expense-docs-policy-check # Policy compliance with fraud detection
/expense-docs:expense-accounting-export # Export to QuickBooks/Xero/FreshBooks
/expense-docs:expense-receipt-matcher # Match receipts per IRS §274(d) requirements
/expense-docs:expense-docs-dashboard # Interactive visual dashboard ("show me")
4. Review Output
Find DOCX files in outbound/:
expense-report-YYYY-MM.docx— Formatted report with tax-deductibility column and SOX metadataexpense-summary-YYYY-MM.docx— Budget analysis with CIMA variance and tax savings estimatesexpense-policy-report-YYYY-MM.docx— Compliance violations with fraud detection and severity classification
Command Reference
| Command | Purpose | Output |
|---|---|---|
/expense-docs:expense-docs-setup |
Initialize workspace with IRS-mapped categories | Directory structure + config.json |
/expense-docs:expense-docs-import |
Import CSV, categorize with Schedule C mapping | processing/expense-docs-transactions.json |
/expense-docs:expense-docs-report |
Generate tax-aware expense report | outbound/expense-report-YYYY-MM.docx |
/expense-docs:expense-docs-summary |
Generate monthly CIMA variance analysis | outbound/expense-summary-YYYY-MM.docx |
/expense-docs:expense-docs-policy-check |
Policy compliance with fraud detection | outbound/expense-policy-report-YYYY-MM.docx |
/expense-docs:expense-accounting-export |
Export to QuickBooks/Xero/FreshBooks | outbound/accounting-export-YYYY-MM.csv |
/expense-docs:expense-docs-dashboard |
Interactive visual dashboard — "show me" | outbound/expense-dashboard.jsx (artifact) |
/expense-docs:expense-receipt-matcher |
Match receipts per IRS §274(d) | Receipt matching report |
/expense-docs:expense-docs-full |
Run complete pipeline | All reports and exports |
/expense-docs:expense-docs-status |
Show workspace status | Console output |
AI-Powered Features
- IRS Schedule C Auto-Categorization: Transactions auto-mapped to Schedule C line items (Lines 8–27a) with tax-deductibility flags (full, partial 50% per IRC §274(n), conditional per IRC §162) using keyword rules and AI fallback
- GAAP-Compliant Expense Reports: Reports include SOX Section 404 metadata (timestamp, data hash, preparer ID per PCAOB AS 2201), tax-deductible summary with IRC §274(n) footnotes, and SEC Regulation S-X aligned presentation
- CIMA Variance Analysis: Monthly summaries use Chartered Institute of Management Accountants methodology with favorable/unfavorable variance terminology and materiality thresholds (>10% or >$500)
- Fraud Detection Engine: Policy checks flag split transactions, round-number amounts, weekend transactions, and sequential patterns per ACFE Report to the Nations and AICPA AU-C Section 240
- Multi-Format Accounting Export: Generate QuickBooks Desktop IIF, QuickBooks Online CSV, Xero CSV, or FreshBooks CSV with GAAP chart of accounts mapping (6000-6999 expense codes)
- IRS Substantiation Matching: Receipt matcher enforces IRC §274(d) requirements (receipts ≥$75) with Levenshtein/Jaro-Winkler merchant matching and NACHA ACH timeline awareness
- Tax Savings Estimation: Summary reports calculate estimated tax savings from deductible expenses with IRS protective language patterns rule awareness (de minimis $2,500 per Treas. Reg. §1.263(a)-1(f))
- Regulatory Policy Framework: Policy rules reference GSA per-diem rates, IRS gift limits ($25 per IRC §274(b)), accountable plan requirements (IRC §62(c)), and violation severity per IAS 8 materiality
- SOX Audit Trail: All operations logged with immutable timestamps, configuration change tracking, and export reconciliation per SOX Section 404
- 6-Bank CSV Auto-Detection: Parse Chase, BofA, Wells Fargo, Citi, Capital One, and American Express with exact column header matching and format-specific conventions
Feature Comparison
| Feature | Expensify | Zoho Expense | pf-expense-docs |
|---|---|---|---|
| Bank CSV import & categorization | Full | Full | Full ✓ |
| IRS Schedule C category mapping | Partial | Partial | Full ✓ |
| Tax-deductibility tracking | Partial | None | Full ✓ |
| Expense report generation | Full | Full | Full ✓ |
| Monthly spending summary | Full | Full | Full ✓ |
| CIMA variance analysis | None | None | Full ✓ |
| Policy compliance checking | Full | Full | Full ✓ |
| Fraud detection indicators | Partial | None | Full ✓ |
| Accounting system export | Full | Full | Full ✓ |
| Receipt matching (IRS §274(d)) | Full | Full | Full ✓ |
| SOX audit trail compliance | Partial | None | Full ✓ |
| Tax savings estimation | None | None | Full ✓ |
| Receipt photo OCR | Full | Full | None |
| Real-time bank sync | Full | Partial | None |
| Multi-user submission | Full | Full | Limited (1-5 users) |
| Corporate card management | Full | None | None |
| Data privacy (local only) | None | None | Full ✓ |
| Customizable categories/rules | Partial | Partial | Full ✓ |
| No per-user pricing | None | None | Full ✓ |
| Offline operation | None | None | Full ✓ |
| Error recovery & partial processing | None | Partial | Full ✓ |
| Annual cost (10 users) | $600-2,160 | $600-1,080 | included with your subscription ✓ |
Configuration
Customizing Expense Categories
Edit .expense-docs/config.json and modify the categories array:
{
"categories": [
"Travel",
"Meals & Entertainment",
"Office Supplies",
"Software & Subscriptions",
"Professional Services",
"Utilities",
"Marketing & Advertising",
"Insurance",
"Transportation",
"Miscellaneous"
],
"category_rules": {
"Travel": {
"keywords": ["hotel", "airline", "flight", "uber", "taxi"],
"schedule_c_line": "24a",
"deductibility": "full",
"description": "Travel expenses (IRS Schedule C Line 24a)"
}
}
}
Categories map to IRS Schedule C line items with tax-deductibility classifications. The import skill uses keyword rules for fast, auditable categorization, with AI fallback for unmatched transactions (typically 10-20%).
Configuring Spending Limits & Budget Caps
Set policy rules in .expense-docs/config.json:
{
"policy_rules": {
"per_transaction_limit": 500,
"de_minimis_threshold": 2500,
"monthly_category_caps": {
"Travel": 2000,
"Meals & Entertainment": 500,
"Software & Subscriptions": 300
}
}
}
The policy-check skill flags violations with severity classification (Critical >200%, Major 100-200%, Minor 1-10%) per IAS 8 materiality principles. The de minimis threshold follows IRS protective language patterns (Treas. Reg. §1.263(a)-1(f)).
Company Information
Customize company name and preparer in config:
{
"company_info": {
"name": "Your Company Name",
"prepared_by": "Finance Team",
"fiscal_year_start": "01",
"accounting_method": "cash"
}
}
Supported Bank CSV Formats
The import skill auto-detects these formats by examining column headers:
Chase
Transaction Date,Post Date,Description,Category,Type,Amount,Memo
01/15/2026,01/15/2026,AMAZON.COM,Uncategorized,Purchase,-42.99,
Bank of America
Date,Description,Amount,Running Bal.
01/15/2026,AMAZON PURCH,-42.99,5234.67
Wells Fargo
Date,Amount,*,*,Description
01/15/2026,-42.99,,,AMAZON.COM
Citi
Status,Date,Description,Debit,Credit
Posted,01/15/2026,AMAZON.COM,42.99,
Capital One
Transaction Date,Posted Date,Card No.,Description,Category,Debit,Credit
01/15/2026,01/16/2026,1234,AMAZON.COM,Shopping,42.99,
American Express
Date,Description,Amount
01/15/2026,AMAZON.COM,42.99
Note: American Express uses positive=charges convention (opposite of Chase).
If your bank is not in this list, export as CSV and the plugin will attempt generic parsing with auto-detection of columns.
Regulatory Framework
This plugin references the following regulatory sources:
- IRS Schedule C (Form 1040): Expense category line item mapping (Lines 8–27a)
- IRC §162: Ordinary and necessary business expense standard
- IRC §274(n): 50% meals deduction limitation
- IRC §274(d): Substantiation requirements for travel, entertainment, gifts
- IRC §274(b): $25 per-person gift deduction limit
- IRC §62(c): Accountable plan requirements for employee reimbursement
- IRS Publication 463: Travel, Gift, and Car Expenses
- IRS Publication 535: Business Expenses
- IRS Publication 538: Accounting Periods and Methods
- Treas. Reg. §1.263(a)-1(f): De minimis protective language patterns ($2,500)
- Treas. Reg. §1.62-2: Accountable plan requirements (60-day/120-day rules)
- GSA CONUS Per-Diem Rates: Domestic travel and M&IE rate tables
- ASC 720: GAAP general expense recognition
- ASC 220: GAAP comprehensive income presentation
- SOX Section 404: Internal control audit trail requirements
- PCAOB AS 2201: Audit of internal controls
- CIMA: Management accounting variance analysis methodology
- COSO Framework: Internal control environment assessment
- ACFE Report to the Nations: Occupational fraud detection indicators
- AICPA AU-C Section 240: Fraud considerations in audit context
Workflow: Weekly + Monthly
Weekly:
- Download CSV from bank website (2 minutes)
- Save to
inbound/BANK-YYYY-MM.csv - Run
/expense-docs:expense-docs-import(auto-categorizes with Schedule C mapping, flags issues)
Monthly:
- Run
/expense-docs:expense-docs-fullto generate all reports (1-2 minutes) - Review expense report with tax-deductibility column for approval
- Check monthly summary for CIMA variance analysis and tax savings estimates
- Audit policy violations and fraud indicators in compliance report
- Run
/expense-docs:expense-accounting-exportto export to your accounting system
Archiving:
Monthly snapshots auto-saved to archive/YYYY-MM-DD/ containing transactions.json, all generated reports, and audit trail metadata referencing SOX guidelines.
Estimated Cost per Use
Disclaimer: Token estimates are approximate and based on typical usage patterns measured from skill prompt sizes. Actual costs vary with input data size, conversation length, and complexity. Estimates use Claude Sonnet 4.6 pricing ($3/1M input, $15/1M output). Cowork and Claude Desktop subscription users (Pro/Max/Team) are not charged per-token — these estimates apply only to direct Anthropic API usage. Running stages individually in fresh sessions uses fewer input tokens than running the full pipeline sequentially, because pipeline mode accumulates conversation history across stages.
Per skill (run individually in a fresh session):
| Stage | Skill Prompt | User Input | Total Input | Output | Est. Cost |
|---|---|---|---|---|---|
| expense-docs-dashboard | ~2.3K | ~500 | ~6.0K | ~8.0K | ~$0.14 |
| receipt-matcher | ~10.2K | ~800 | ~14.1K | ~6.0K | ~$0.13 |
| expense-docs-policy | ~8.5K | ~800 | ~12.7K | ~6.0K | ~$0.13 |
| expense-docs-summary | ~7.8K | ~800 | ~12.0K | ~6.0K | ~$0.13 |
| expense-docs-report | ~8.4K | ~800 | ~12.6K | ~6.0K | ~$0.13 |
| accounting-export | ~8.7K | ~800 | ~12.5K | ~6.0K | ~$0.13 |
| expense-docs-import | ~10.9K | ~2.0K | ~16.3K | ~2.0K | ~$0.08 |
| Standalone total | ~86.2K | ~40.0K | ~$0.86 |
Full pipeline (all stages in one session — context accumulates):
| Stage | Base Input | + History | Total Input | Output | Est. Cost |
|---|---|---|---|---|---|
| expense-docs-dashboard | ~6.2K | 0 | ~6.2K | ~8.0K | ~$0.14 |
| receipt-matcher | ~14.5K | ~8.5K | ~23.0K | ~6.0K | ~$0.16 |
| expense-docs-policy | ~12.7K | ~15.3K | ~28.0K | ~6.0K | ~$0.17 |
| expense-docs-summary | ~12.0K | ~22.1K | ~34.1K | ~6.0K | ~$0.19 |
| expense-docs-report | ~12.7K | ~28.9K | ~41.6K | ~6.0K | ~$0.21 |
| accounting-export | ~12.9K | ~35.7K | ~48.6K | ~6.0K | ~$0.24 |
| expense-docs-import | ~16.4K | ~42.5K | ~58.9K | ~2.0K | ~$0.21 |
| Pipeline total | ~240.4K | ~40.0K | ~$1.32 |
Running the full pipeline once typically costs $0.92–$1.72 in API tokens (Claude Sonnet 4.6).
Known Limitations
No real-time receipt OCR: Cannot photograph receipts and auto-extract data like Expensify SmartScan. Workaround: Use bank/credit card CSV exports — covers 90% of transaction capture. Receipt matcher skill handles matching by amount, date, and merchant similarity.
No persistent database: Transactions stored as JSON files, not queryable database. Historical analysis requires loading files each session. Workaround: Use lifecycle folders with dated JSON files and monthly archives.
No real-time API integrations: Cannot pull transactions directly from bank APIs or sync with QuickBooks/Xero. Workaround: Download CSV export from bank website (a 2-minute task) and place in inbound/ folder. Accounting export skill generates import-ready files for QuickBooks/Xero/FreshBooks.
Team size limit: 1-5 users: No multi-user collaboration like Expensify. Workaround: Single administrator imports all expenses from consolidated bank CSV.
Session-based operation: No automatic reminders for expense submission deadlines. Workaround: Users run the plugin on their own schedule. Monthly summary skill naturally creates a regular cadence.
Handling Edge Cases
Refunds (Positive Amounts)
Transactions with positive amounts are treated as refunds/credits. The skill flags them with is_refund: true, prefixes category with "Refund: ", and includes them in totals.
Tax-Deductibility for Meals
Meals expenses are automatically classified as 50% deductible per IRC §274(n). The tax-deductible summary separates fully deductible from partially deductible amounts.
IRS Substantiation ($75 Threshold)
The receipt matcher flags any expense ≥$75 without a matched receipt, per IRC §274(d) and IRS Publication 463 Chapter 5 requirements.
Duplicate Transactions
Detected by matching date + description + amount. Flagged as potential fraud indicators per AICPA AU-C Section 240.
Float Precision
All amounts use banker's rounding to 2 decimal places per IEEE 754. Category totals validated to sum within $0.01 of grand total.
File Structure
.expense-docs/
├── config.json # Configuration: IRS-mapped categories, rules, policies
├── logs/
│ ├── setup.log # informed by SOX guidelines initialization logs
│ ├── import.log # Import operation audit trail
│ └── ...
└── (project metadata)
inbound/ # User-provided CSV files
├── chase-2026-01.csv
├── bofa-2026-02.csv
└── ...
processing/ # Intermediate parsed data with tax mapping
└── expense-docs-transactions.json
outbound/ # Generated DOCX reports and exports
├── expense-report-2026-01.docx
├── expense-summary-2026-01.docx
├── expense-policy-report-2026-01.docx
└── accounting-export-2026-01.csv
archive/ # Monthly snapshots with audit metadata
├── 2026-01-31/
│ ├── expense-docs-transactions.json
│ ├── expense-report-2026-01.docx
│ └── ...
└── ...
Cost Comparison
10-person SMB team, annual costs:
- Expensify: $600-2,160/year ($5-18/user/month)
- Zoho Expense: $600-1,080/year ($5-9/user/month)
- pf-expense-docs: Included with your subscription ✓
Monthly time savings: ~5 hours/month on expense entry, categorization, and report generation = $1,000-2,000/month labor value.
Legal Note
This plugin generates financial reports for internal expense tracking and policy compliance. It is not a alternative to professional accounting, tax preparation, or legal services. Tax-deductibility classifications are for informational purposes only — consult a qualified tax professional (CPA or Enrolled Agent) regarding deduction eligibility per your specific circumstances. All IRS references are to U.S. federal regulations; state and local tax treatment may differ.
Troubleshooting
"No CSV file found in inbound/"
- Ensure your CSV is saved in the inbound/ folder with naming format: BANK-YYYY-MM.csv
- Example: chase-2026-01.csv, bofa-2026-02.csv
"Python 3.7+ is required"
- Check Python version:
python3 --version - Install Python 3.7 or later if needed
"python-docx not installed"
- The setup skill attempts to install it automatically
- Manual install:
pip install python-docx --break-system-packages
"Configuration file is invalid JSON"
- Check
.expense-docs/config.jsonfor syntax errors - Run
/expense-docs:expense-docs-setup --resetto regenerate defaults
"Uncategorized transactions detected"
- Add keywords to category_rules in config.json for merchant descriptions
- Or let the system use AI categorization (marked as
category_rule: ai_classified)
"Policy violations detected"
- Review the expense-policy-report-YYYY-MM.docx for details
- Adjust per_transaction_limit or monthly_category_caps in config.json if needed
Support & Feedback
For issues, feature requests, or questions, please refer to the factory documentation or reach out to the Cowork community.
Version: 1.2 License: Provided as-is for use in Cowork Last Updated: 2026-03-16
Commands
/expense:expense-accounting-export— expense-Accounting Export/expense:expense-docs-full— Expense Docs Full/expense:expense-docs-import— Expense Docs Import/expense:expense-docs-policy-check— Expense Docs Policy Check/expense:expense-docs-report— Expense Docs Report/expense:expense-docs-setup— Expense Docs Setup/expense:expense-docs-status— Expense Docs Status/expense:expense-docs-summary— Expense Docs Summary/expense:expense-receipt-matcher— expense-Receipt Matcher/expense:expense-setup— Expense Setup
Important Disclaimers
- AI-Generated Content: This plugin uses AI (LLM) technology which can produce inaccurate or incomplete outputs. All content should be treated as a starting point and reviewed for accuracy before use.
- Not Professional Advice: Outputs do not constitute legal, financial, tax, medical, or other professional advice. Consult qualified professionals before making decisions based on generated content.
- No Compliance Guarantee: References to industry standards, regulations, or guidelines are for informational purposes only. This plugin does not guarantee compliance with any law or regulation. Users are responsible for verifying all outputs meet their specific regulatory requirements.
- No Endorsement or Affiliation: Mention of third-party products, standards, or organizations does not imply endorsement, partnership, or certification by those entities.
- Not Financial or Tax Advice: Financial calculations, tax estimates, and related outputs are for informational purposes only. Consult a qualified CPA or financial advisor for tax and financial decisions.
Ready to use Expense Docs?
Download this free plugin and start using it in Claude today.
Need something different?
We build custom plugins tailored to your exact workflow.