# Accounting

> Process bank statements, credit card statements, invoices, and bookkeeper financials into a beautiful HTML report with subscription audits, expense categorization, and actionable insights.

- Skill: `tenfoldmarc/accounting` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tenfoldmarc/accounting`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tenfoldmarc/accounting/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: tenfoldmarc (https://skillmd.com/u/tenfoldmarc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tenfoldmarc/accounting

---


# Accounting Skill

Process financial documents and generate a comprehensive, beautiful HTML report with subscription audits, expense categorization, bookkeeper cross-referencing, and actionable insights.

## When to Use This Skill

- End of year financial review
- Monthly bookkeeping catch-up
- Subscription audit (find what to cancel)
- Preparing documents for your accountant
- Cross-referencing bookkeeper work against raw statements
- Understanding where your money is going
- Flagging personal expenses on business cards

## What This Skill Produces

A single, self-contained HTML report with:

1. **Executive Dashboard** — KPI cards with revenue, expenses, profit, cash position
2. **Monthly Spending Trend** — Visual bar chart of monthly spend
3. **Expense Categories** — Horizontal bar breakdown by category
4. **Subscription Audit** — Every recurring charge with monthly/annual cost and keep/review/cancel verdict
5. **Contractor Summary** — Who got paid what, when, and for what
6. **Revenue Sources** — Where income comes from with concentration risk flags
7. **Bookkeeper Categorization Audit** — Flags miscategorized expenses (if bookkeeper data provided)
8. **Personal Expense Flags** — Items on business card that should be personal draws
9. **Cash Dividend / Owner Draw Tracker** — Monthly visualization
10. **Tax Position** — Outstanding items, refunds owed, payables
11. **Year-over-Year Comparison** — If prior year data available

## How to Use

### Step 1: Gather Your Documents

Create a folder with your financial documents. The skill works with:

**Bank Statements (PDF or CSV)**
- Checking/chequing account statements
- Credit card statements
- Multi-currency accounts (Wise, PayPal, etc.)

**Invoices (PDF)**
- Contractor invoices
- Vendor receipts
- Payment confirmations

**Bookkeeper Files (optional but powerful)**
- Profit & Loss statement (PDF)
- Balance Sheet (PDF)
- General Ledger (XLSX/CSV)
- Trial Balance (PDF)

### Step 2: Tell Claude Where to Find Them

```
/accounting

My financial docs are in ~/Documents/Accounting/2025/
- Bank statements in /Statements/
- Credit card statements in /Credit Card/
- Invoices in /Invoices/
- Bookkeeper package: ~/Downloads/financials.pdf
- General ledger: ~/Downloads/general-ledger.xlsx
```

Or for a quick subscription audit:
```
/accounting

Just audit my subscriptions from these credit card statements:
~/Documents/CC-Statements/
```

### Step 3: Get Your Report

The skill generates a single HTML file you can open in any browser. No dependencies, no server needed.

## Instructions

When the user triggers this skill, follow this workflow:

### Phase 0: First-Time Setup

Check if `~/.claude/skills/accounting/config.json` exists.

**If it exists:** Load settings and proceed to Phase 1.

**If it does NOT exist:**

1. Greet the user:
   ```
   Welcome to /accounting! Let's do a quick setup. This takes 30 seconds and only happens once.
   ```

2. Ask for:
   - Business name (for the report header)
   - Business entity type (Corporation, Sole Prop, LLC, etc.)
   - Primary currency (USD, CAD, EUR, GBP, etc.)
   - Fiscal year end (Dec 31, Mar 31, etc.)

3. Save to `~/.claude/skills/accounting/config.json`:
   ```json
   {
     "businessName": "Acme Corp",
     "entityType": "Corporation",
     "currency": "USD",
     "fiscalYearEnd": "Dec 31",
     "setupComplete": true,
     "setupDate": "2026-04-01"
   }
   ```

4. Confirm and proceed:
   ```
   Setup complete! Running /accounting now...
   ```

### Phase 1: Discovery

1. **Locate all financial documents** in the folder(s) the user specified
2. **Identify document types** — bank statements, credit card statements, invoices, bookkeeper files
3. **Report what you found** before processing:
   ```
   Found:
   - 12 bank statements (PDF, Jan-Dec)
   - 12 credit card statements (PDF, Jan-Dec)
   - 28 invoices across 9 months
   - 1 bookkeeper P&L (PDF)
   - 1 general ledger (XLSX, 2100+ rows)
   
   Processing all of these. This will take a few minutes.
   ```

### Phase 2: Data Extraction

Process all documents in parallel where possible using Agent subagents:

**Bank Statements**
- Read every page of every PDF
- Extract: date, description, withdrawal, deposit, balance
- Handle multiple account types on same statement
- Handle French/English bank formats (Desjardins, TD, RBC, BMO, Chase, BofA, Wells Fargo, etc.)
- Handle CSV exports from online banking

**Credit Card Statements**
- Read every page — statements are often 3+ pages
- Extract: transaction date, posting date, vendor name, amount
- Handle multiple cards on same statement
- Identify credits/refunds (marked CR or negative)
- Capture statement-level totals for cross-checking

**Invoices**
- Read page 1 of each PDF
- Extract: date, invoice number, vendor, line items, subtotal, tax, total, currency
- Handle various invoice formats (formal invoices, transfer confirmations, receipts)

**Bookkeeper Data (if provided)**
- Parse P&L for official revenue, expense categories, and profit
- Parse Balance Sheet for cash position, liabilities, equity
- Parse General Ledger (XLSX) for transaction-level detail:
  - Extract all account categories (the "Split" or "Account" column)
  - Sum by category
  - Identify what's in each category for the audit

### Phase 3: Analysis

**Transaction Categorization**

Assign every credit card transaction to a category based on vendor name patterns:

| Pattern | Category |
|---------|----------|
| HIGHLEVEL, GOHIGHLEVEL | CRM |
| SLACK, ZOOM, GSUITE, GOOGLE*WORKSPACE, TEAMS | SaaS - Communication |
| STRIPE, PAYPAL, SQUARE | Payment Processing |
| FACEBOOK, FACEBK, INSTAGRAM, META, GOOGLE*ADS | Advertising |
| OPENAI, CLAUDE.AI, ANTHROPIC, MIDJOURNEY | AI Tools |
| SPOTIFY, NETFLIX, YOUTUBE PREMIUM, APPLE.COM/BILL | Personal - Entertainment |
| GYM, ATHLETIC, FITNESS, PELOTON | Personal - Fitness |
| UBER, LYFT, AIRBNB, AIRLINE, HOTEL | Travel |
| AMAZON | Review Individually |
| GODADDY, NAMECHEAP, CLOUDFLARE | Domains / Hosting |
| CANVA, ADOBE, FIGMA | Design Tools |
| ZAPIER, MAKE.COM | Automation |
| QUICKBOOKS, XERO, FRESHBOOKS | Accounting Software |
| MAILCHIMP, CONVERTKIT, ACTIVECAMPAIGN | Email Marketing |
| SHOPIFY, WOOCOMMERCE | E-Commerce |
| AWS, GOOGLE CLOUD, AZURE, HEROKU, VERCEL | Cloud / Infrastructure |

Build a vendor mapping as you go — learn from the data. When you encounter a vendor not in this table, categorize it based on context clues in the description.

**Subscription Detection**

A charge is a subscription if:
- Same vendor appears 3+ months
- Amount is within 20% of average (allows for FX fluctuation)
- Not a one-time purchase

For each subscription, calculate:
- Average monthly cost
- Annual total
- Number of months active out of 12
- Trend (increasing, decreasing, stable)

**Subscription Verdicts**

Assign each subscription a verdict:
- **Keep** — Core business tool, actively used, no overlap
- **Review** — Expensive (>$100/mo), overlapping with another tool, or unclear value
- **Cancel** — Redundant (e.g., Zapier AND Make.com), barely used, or clearly not needed
- **New** — Started in last 3 months, too early to judge

Rules for verdicts:
- If two tools overlap in function, flag the less-used or more expensive one as Cancel
- If a tool costs >$100/mo, default to Review unless it's clearly core (CRM, email, main platform)
- Gym, entertainment, personal items should be flagged as personal, recommend moving to personal card
- AI tools that overlap — review which ones are actually being used vs. forgotten

**Bookkeeper Cross-Reference (if GL provided)**

This is the most valuable part. Compare the bookkeeper's categorization against what the raw data actually shows:

1. For each expense category in the P&L, pull the underlying transactions from the GL
2. Check if vendors are in the right category:
   - Is a SaaS platform categorized as "Training"?
   - Are contractor payments categorized as "Travel"?
   - Are personal expenses mixed into business categories?
   - Are recurring subscriptions categorized as one-time expenses?
3. Flag any category where >20% of the amount seems miscategorized
4. Calculate the corrected P&L if miscategorizations were fixed
5. Explain the tax risk of each miscategorization (inflated deductions, audit flags, etc.)

**Personal Expense Detection**

Flag transactions that appear personal on a business card:
- Gym/fitness memberships
- Entertainment subscriptions (Spotify, Netflix, etc.)
- Clothing stores
- Medical expenses
- Personal travel (hotels, airlines without business context)
- Food delivery / restaurants (unless clearly client meetings)
- Personal grooming / dry cleaning

**Revenue Analysis (if data available)**

- Identify revenue sources from bank deposits, Wise/PayPal incoming, etc.
- Calculate concentration (what % comes from top source)
- Flag if >50% from single source (concentration risk)
- Show revenue trend by month
- Compare to prior year if available

### Phase 4: Report Generation

Generate a single self-contained HTML file with these design requirements:

**Design Standards**
- Dark theme (bg: #0a0e17, cards: #111827)
- Font: Clash Display (headings) + JetBrains Mono (numbers)
- Load from Google Fonts via `<link>` tag
- Accent color: cyan (#22d3ee) with warm amber (#f59e0b) and green (#10b981)
- No purple gradients on white backgrounds
- Atmospheric backgrounds with subtle gradients
- CSS-only animations (staggered card reveals)
- Fully responsive (mobile-friendly grid)
- Self-contained — no external JS dependencies

**Report Sections (in order)**

1. **Header** — Business name, date range, entity info
2. **KPI Cards** — 4-8 cards with key metrics (revenue, profit, expenses, subscriptions, cash, dividends, tax position)
3. **Monthly Spending Trend** — Bar chart (pure CSS/HTML, no JS library needed)
4. **Expense Category Breakdown** — Horizontal bar chart with amounts
5. **Subscription Audit Table** — Full table with service, category, monthly cost, annual cost, months active, verdict badge (Keep/Review/Cancel/New)
6. **Subscription Savings Summary** — Two boxes: "Recommended Cancellations" (with total savings) and "Worth Reviewing" (with potential savings)
7. **Contractor/Invoice Summary** — Table of vendors, services, invoice counts, totals, active periods
8. **Revenue Sources** — If data available, horizontal bar chart of income sources with concentration risk flag
9. **Official P&L + Year-over-Year** — If bookkeeper data provided, show official P&L with YoY comparison
10. **Bookkeeper Categorization Audit** — If bookkeeper data provided, flag miscategorized expenses with corrected amounts
11. **Contractor Deep Dive** — Full breakdown of contractor payments with amounts, payment counts, active periods
12. **Personal Expense Flags** — Table of items that should be reclassified as personal draws
13. **Cash Dividend/Owner Draw Tracker** — Monthly grid visualization with total and average
14. **Tax Position** — Cards for outstanding tax items (refunds owed, payables, GST/HST position)
15. **Key Insights & Recommendations** — 4-6 insight/alert cards with actionable advice
16. **Footer** — Generation date, sources used, disclaimer

**Styling Details**

Status badges for subscription verdicts:
- Keep: green background (#10b981), green text
- Review: amber background (#f59e0b), amber text
- Cancel: red background (#ef4444), red text
- New: purple background (#a78bfa), purple text

Category pills with colored backgrounds matching the category.

Amount formatting:
- Green for positive/income
- Red for large expenses or losses
- Amber for medium concern
- Cyan for neutral highlights

Use `font-family: 'JetBrains Mono', monospace` for all numbers and amounts.

Tables should have:
- Hover effect on rows
- Alternating subtle backgrounds
- Sticky headers on long tables
- Sort-friendly column alignment

### Phase 5: Delivery

1. Save the HTML report to the user's specified folder or `~/Documents/Accounting/[year]-annual-report.html`
2. Open it in the browser with `open` (macOS) or `xdg-open` (Linux) command
3. Provide a concise summary of key findings:
   - Total revenue and profit (if available)
   - Number of subscriptions found and total annual cost
   - Potential savings from recommended cancellations
   - Number of bookkeeper issues flagged (if applicable)
   - Personal expenses that need reclassification
   - Any critical alerts (concentration risk, tax issues, etc.)

## Multi-Currency Handling

- Track transactions in their original currency
- Note currency for each amount in the report
- Don't convert currencies — the user's accountant handles that
- If statements have multiple currencies, show each separately
- Note exchange gain/loss if visible in the data

## Statement Format Support

The skill handles these common formats:

**Canadian Banks (often French)**
- Desjardins (Caisse) — "RELEVE DE COMPTE", "CARTE AFFAIRES VISA"
- TD Canada Trust
- RBC Royal Bank
- BMO Bank of Montreal
- Scotiabank
- CIBC

**US Banks**
- Chase
- Bank of America
- Wells Fargo
- Citi
- Capital One

**UK/EU Banks**
- Barclays
- HSBC
- Revolut
- N26

**International / Fintech**
- Wise (TransferWise) statements
- PayPal statements
- Stripe payouts
- Mercury
- Relay

**CSV/Excel**
- Any CSV with date, description, amount columns
- QuickBooks exports
- Xero exports
- Wave exports
- FreshBooks exports

## Error Handling

- If a PDF can't be read, note it in the summary and continue with others
- If a transaction can't be categorized, put it in "Uncategorized" and flag for manual review
- If the bookkeeper GL has unexpected columns, try to detect the right ones by looking for date, description, and amount patterns
- Always show what was processed vs skipped in the final summary
- If no statements are found in the specified folder, ask the user to confirm the path

## Examples

### Example 1: Full Year-End Review
```
/accounting

Process my 2025 financials:
- Bank statements: ~/Accounting/2025/Bank/
- Credit card: ~/Accounting/2025/CC/
- Invoices: ~/Accounting/2025/Invoices/
- Bookkeeper P&L: ~/Downloads/2025-PnL.pdf
- General Ledger: ~/Downloads/general-ledger.xlsx
```

### Example 2: Quick Subscription Audit
```
/accounting

Just find all my subscriptions and tell me what to cancel.
Credit card statements are in ~/Downloads/CC-2025/
```

### Example 3: Bookkeeper Verification
```
/accounting

My bookkeeper sent me the year-end package. I want to cross-reference
their categorization against my raw bank statements to make sure
everything is categorized correctly.

Bookkeeper files: ~/Downloads/2025-financials.pdf
Raw statements: ~/Accounting/2025/
```

### Example 4: Monthly Check-In
```
/accounting

Process just March 2025:
- Bank statement: ~/Downloads/march-2025.pdf
- Credit card: ~/Downloads/cc-march-2025.pdf
```

### Example 5: Multi-Currency Business
```
/accounting

I receive payments in USD via Wise and spend in CAD and EUR.
- Wise statements: ~/Accounting/Wise/
- Canadian bank: ~/Accounting/TD/
- Credit card: ~/Accounting/Visa/
- Invoices: ~/Accounting/Invoices/
```

## Tips for Best Results

1. **PDF statements work better than screenshots** — text extraction is more reliable
2. **CSV exports are fastest** — if your bank offers CSV downloads, use those
3. **Organize by type** — separate bank statements, CC statements, and invoices into different folders
4. **Include the bookkeeper package** — the cross-reference audit is the most valuable feature
5. **Run it quarterly** — don't wait until year-end to catch issues
6. **Keep the HTML report** — it's a useful reference for tax meetings with your accountant
7. **Name your files consistently** — `YYYY-MM` format helps the skill process them in order

## What This Skill Does NOT Do

- File your taxes
- Replace a CPA or bookkeeper
- Connect to your bank directly (no Plaid/API integration)
- Guarantee categorization accuracy (always review with your accountant)
- Handle payroll calculations
- Generate T4s, W2s, 1099s, or tax forms
- Provide tax advice (consult a professional)

---
Built by [@tenfoldmarc](https://instagram.com/tenfoldmarc). Follow for daily AI automation builds — real systems, not theory.

