Expense Tracker
expense-tracker
Creates an expense tracking and categorization system in Notion with transaction records, category breakdowns, monthly summaries, and tax-deduction flagging for freelancers and small businesses. Use when a user needs to track business expenses, wants to replace spreadsheet-based bookkeeping, or needs to organize receipts and transactions for tax time.
- This skill, packaged and ready to upload. expense-tracker.zip
- In claude.ai or Claude desktop: Customize → Skills (+) → Create skill → Upload a skill, select the zip and toggle it on. Greyed out? Enable code execution under Settings → Capabilities.
- It’s live in your chats — no code, no setup. Want every Business skill at once? Add the whole plugin from the Business page (Customize → Personal plugins → Create plugin → Upload plugin).
/plugin marketplace add Salah-XD/equipt
/plugin install equipt-business Installs the whole equipt-business plugin — this skill included.
npx @equipt/cli init
npx @equipt/cli add expense-tracker Adds just this skill to your Claude Code project.
When to Use This Skill
Use this skill when you need to:
- Build a business expense tracking database in Notion from scratch
- Replace a spreadsheet, shoebox of receipts, or mental math system for tracking expenses
- Categorize expenses by IRS Schedule C categories for tax preparation
- Flag tax-deductible purchases so nothing gets missed at year-end
- Import existing transactions from a bank statement export, CSV, or manual list
DO NOT use this skill for:
- Personal budgeting or household expense tracking (this is for business expenses)
- Invoicing or accounts receivable (use an invoice-template skill instead)
- Payroll processing or tax filing (requires dedicated software and professionals)
- Full double-entry bookkeeping or chart of accounts (use QuickBooks or Wave)
Quick Reference: Expense Tracker Features
| Feature | Details |
|---|---|
| Properties | 12 fields per expense record |
| Expense categories | 15 IRS Schedule C aligned categories |
| Payment methods | 6 options (Cash, Credit Card, Debit, Bank Transfer, PayPal, Other) |
| Tax deduction flags | Full, Partial, None, Verify |
| Database views | 5 pre-built filtered views |
| Seeding | Bulk import from CSV, bank statement, or manual list |
Quick Reference: Database Schema
| Property | Type | Purpose | Default |
|---|---|---|---|
| Expense Name | Title | Short description of the purchase | Required |
| Date | Date | Transaction date | Required |
| Amount | Number (USD) | Total amount spent | Required |
| Category | Select | IRS Schedule C classification | See category table |
| Vendor | Rich text | Business or person paid | Empty |
| Payment Method | Select | How the expense was paid | Credit Card |
| Tax Deductible | Select | Deduction qualification | Verify |
| Receipt | URL | Link to receipt image or file | Empty |
| Notes | Rich text | Context, purpose, or client association | Empty |
| Client/Project | Rich text | Related client or project | Empty |
| Recurring | Checkbox | Monthly recurring expense | false |
| Tags | Multi-select | Labels for filtering | See below |
Payment Methods
Credit Card, Debit, Cash, Bank Transfer, PayPal, Other
Default Tags
monthly, quarterly, annual, client-billable, reimbursable, pending-receipt, large-purchase, subscription, one-time
Quick Reference: Expense Categories (IRS Schedule C Aligned)
THESE CATEGORIES ARE FOR TRACKING PURPOSES ONLY. CONSULT A TAX PROFESSIONAL FOR DEDUCTION ELIGIBILITY AND COMPLIANCE.
| Category | Typical Deductibility | Examples |
|---|---|---|
| Advertising | Full | Google Ads, Facebook Ads, business cards, sponsored posts |
| Car & Truck | Partial (business % only) | Gas, maintenance, tolls, parking for business trips |
| Contractors | Full (1099 over $600) | Freelance designers, virtual assistants, subcontractors |
| Education | Full | Online courses, certifications, workshops, books |
| Insurance | Full | Liability, E&O, health (self-employed), equipment |
| Legal & Professional | Full | CPA fees, legal consultation, business coaching |
| Meals | Partial (50%) | Client lunches, meals during business travel |
| Office Expenses | Full | Printer ink, paper, cleaning supplies, coffee for office |
| Rent & Lease | Full | Coworking space, office lease, equipment rental |
| Software & Subscriptions | Full | Adobe Creative Cloud, Notion, Slack, Zoom, hosting |
| Supplies | Full | Packaging materials, raw materials, inventory supplies |
| Taxes & Licenses | Full | Business license, state registration, professional dues |
| Travel | Full | Flights, hotels, rental cars, rideshare for business |
| Utilities | Partial (business %) | Internet, phone plan, electricity (home office portion) |
| Other | Varies | Bank fees, postage, miscellaneous business costs |
Tax Deduction Flags
| Flag | Meaning | Action |
|---|---|---|
| Full | 100% deductible | No adjustment needed at tax time |
| Partial | Only a percentage is deductible | Record business-use % in Notes |
| None | Not deductible | Do not include on Schedule C |
| Verify | Uncertain | Flag for review with your accountant |
DEFAULT: Set Tax Deductible to "Verify" when deductibility is not obvious. Let the user's accountant make the final call.
Core Workflow
EVERY EXPENSE TRACKER STARTS BY GATHERING BUSINESS DETAILS AND CREATING THE DATABASE WITH THE FULL SCHEMA BEFORE ADDING ANY TRANSACTIONS -- NEVER ADD PAGES TO A DATABASE THAT IS MISSING PROPERTIES.
Step 1: Gather Requirements
- Business type -- sole proprietorship, LLC, S-corp, partnership
- Notion parent page -- where should the expense database live
- Fiscal year -- calendar year (Jan-Dec) or custom fiscal year
- Currency -- USD default; confirm or change
- Custom categories -- any additions to the 15 defaults
- Existing expenses -- transactions to import (CSV, list, or dictated)
- Tax situation -- any known deduction rules or accountant preferences
If the user provides only items 1 and 2, proceed with all defaults.
Brief template for vague requests:
I'll build your expense tracker in Notion. Quick answers needed:
1. What type of business entity? (sole prop, LLC, S-corp)
2. Which Notion page should I create the tracker under?
3. Fiscal year? (default: January - December)
4. Currency? (default: USD)
5. Any expense categories beyond the 15 defaults?
6. Do you have existing expenses to import?
Step 2: Locate the Parent Page in Notion
- Call
notion-searchwith the page name or keywords the user provided - Confirm the page ID with the user if multiple matches exist
IF THE PAGE IS NOT FOUND: Ask for exact title or URL, retry with shorter keyword. After 3 failed searches, stop: "I cannot find that page. Check Settings > Connections in Notion and verify the integration has access."
Step 3: Create the Database in Notion
- Call
notion-create-databasewith the parent page ID and full schema:
Database title: Business Expenses
Properties to create:
Expense Name -> title
Date -> date
Amount -> number (format: dollar)
Category -> select
options: Advertising (blue), Car & Truck (brown), Contractors (purple),
Education (pink), Insurance (orange), Legal & Professional (yellow),
Meals (red), Office Expenses (gray), Rent & Lease (green),
Software & Subscriptions (blue), Supplies (orange),
Taxes & Licenses (yellow), Travel (pink), Utilities (gray),
Other (default)
Vendor -> rich_text
Payment Method -> select
options: Credit Card (blue), Debit (green), Cash (yellow),
Bank Transfer (purple), PayPal (orange), Other (gray)
Tax Deductible -> select
options: Full (green), Partial (yellow), None (red), Verify (gray)
Receipt -> url
Notes -> rich_text
Client/Project -> rich_text
Recurring -> checkbox
Tags -> multi_select
options: monthly (blue), quarterly (purple), annual (orange),
client-billable (green), reimbursable (pink),
pending-receipt (red), large-purchase (yellow),
subscription (brown), one-time (gray)
- Verify with
notion-fetchon the returned database ID - Confirm creation with a summary of all configured properties
IF DATABASE CREATION FAILS: Verify parent page ID with notion-fetch, retry once. If it fails again: "Please go to the parent page > three-dot menu > Connections and ensure the integration has 'Can edit' access."
Step 4: Seed with Existing Expenses
SKIP THIS STEP if the user has no existing expenses to import.
Parse the user's expense data (CSV, bank statement, bullet list, or natural language)
Map each expense to the schema:
- Expense Name -- short, descriptive (e.g., "Adobe Creative Cloud - January")
- Date -- transaction date from the data
- Amount -- dollar amount; NEVER guess amounts
- Category -- match to the closest IRS category
- Vendor -- extract business name
- Payment Method -- infer from context, default to "Credit Card"
- Tax Deductible -- set from category rules; default "Verify" when uncertain
- Recurring -- check true for subscriptions and monthly services
- Tags -- infer from context (e.g., subscription =
monthly+subscription)
Call
notion-create-pagesto add expenses in batchesReport seeding results with category breakdown and totals
IF EXPENSE DATA IS AMBIGUOUS: Present interpretation before creating pages. IF BATCH CREATION PARTIALLY FAILS: Report successes/failures, retry individually, provide manual entry details if retries fail.
Step 5: Set Up Views and Deliver
Notion MCP does not support creating views programmatically. Provide exact instructions:
RECOMMENDED VIEWS (create these in Notion):
1. ALL EXPENSES (Table) — Sort: Date descending. No filter.
2. THIS MONTH (Table) — Filter: Date is "This month". Group by: Category.
3. BY CATEGORY (Table) — Group by: Category. Sort: Amount descending.
4. TAX DEDUCTIONS (Table) — Filter: Tax Deductible is "Full" OR "Partial".
Group by: Category. Sort: Date ascending.
5. NEEDS ATTENTION (Table) — Filter: Tax Deductible is "Verify" OR Tags
contains "pending-receipt". Sort: Date ascending.
USAGE GUIDE (deliver to every user):
ADDING AN EXPENSE (same day as purchase):
1. Click "+ New" in "All Expenses"
2. Enter Expense Name, Amount, Date, Category, Vendor, Payment Method
3. Set Tax Deductible: Full (clearly business), Partial (mixed use),
None (personal), Verify (unsure — flag for accountant)
4. Paste receipt link if available; check "Recurring" for subscriptions
MONTHLY REVIEW (30 min, end of month):
1. Open "This Month" — check totals by category
2. Open "Needs Attention" — resolve "Verify" items, upload missing receipts
TAX TIME PREP (annually):
1. Open "Tax Deductions" — filter by tax year
2. Group by Category to match Schedule C line items
3. Resolve remaining "Verify" items
4. Share database with your accountant via Notion sharing
PARTIAL DEDUCTIONS: Set to "Partial", record business-use % in Notes
(e.g., "Home internet — 40% business use")
IMPORTANT DISCLAIMER (include in every delivery):
DISCLAIMER: This expense tracker is for record-keeping and organization
purposes only. It does not constitute tax advice. Consult a qualified
tax professional for deduction eligibility, compliance, and filing.
Example 1: Freelance Web Developer
User request: "I'm a freelance web developer, sole prop. Track my expenses in Notion under 'Freelance Finances'. I have some recent expenses to add."
Execution:
- Requirements: Sole prop, parent "Freelance Finances", calendar year, USD, 8 expenses
- Search:
notion-searchfor "Freelance Finances" ->pg_fin456. Confirmed. - Create:
notion-create-databasewith full schema ->db_exp789 - Seed 8 expenses:
Expenses imported: 8 of 8 successful
SOFTWARE & SUBSCRIPTIONS:
Adobe Creative Cloud - January $54.99 Credit Card Full
GitHub Pro - January $4.00 Credit Card Full
Notion Team Plan - January $10.00 Credit Card Full
AWS Hosting - January $127.43 Credit Card Full
CONTRACTORS:
Logo redesign - Sarah Kim Design $750.00 PayPal Full
Copywriting - Jake Torres $400.00 Bank Transfer Full
OFFICE EXPENSES:
Standing desk riser $189.99 Debit Full
USB-C hub and cables $67.50 Credit Card Full
Total: $1,603.91 | Recurring: $196.42/mo (4 subscriptions) | All fully deductible
- Delivered: Views + usage guide + disclaimer. Next steps: create views, add February subscriptions, log expenses same-day, schedule monthly review.
Example 2: E-Commerce Store Owner
User request: "I run a small e-commerce shop selling handmade candles. LLC. My Notion page is 'Candle Biz Operations'. I have about 10 recent expenses."
Execution:
- Requirements: LLC, parent "Candle Biz Operations", calendar year, USD, 10 expenses
- Search:
notion-searchfor "Candle Biz Operations" ->pg_candle321. Confirmed. - Create:
notion-create-databasewith full schema ->db_candle654 - Seed 10 expenses:
Expenses imported: 10 of 10 successful
SUPPLIES:
Soy wax bulk order (50 lbs) $189.00 Credit Card Full
Fragrance oils assortment (12 pk) $84.50 Credit Card Full
Wicks and labels bundle $42.00 Debit Full
Glass jars (case of 48) $156.00 Credit Card Full
ADVERTISING:
Instagram Ads - January $250.00 Credit Card Full
Etsy Promoted Listings - January $87.30 Debit Full
Facebook Ads - January $150.00 Credit Card Full
TRAVEL:
Craft fair booth rental - Portland $175.00 Cash Full
CAR & TRUCK:
Gas and tolls for Portland trip $63.20 Cash Partial
SOFTWARE & SUBSCRIPTIONS:
Shopify Basic Plan - January $39.00 Credit Card Full
Total: $1,236.00 | Recurring: $526.30/mo | Full (9), Partial (1)
Tip: Tag inventory with "one-time" and ad spend with "monthly" to separate
cost of goods from operating expenses at tax time.
- Delivered: Views + usage guide + disclaimer. Next steps: create views, upload 2 cash receipts, record business-use % for Car & Truck, log expenses same-day.
Pre-Delivery Checklist
Run this before delivering. DO NOT SKIP ANY ITEM.
| Check | What to Verify |
|---|---|
| Database exists | notion-fetch with database ID succeeds |
| All 12 properties | Every schema property configured |
| Category options | All 15 categories exist as select options |
| Payment methods | All 6 methods exist as select options |
| Tax Deductible options | Full, Partial, None, Verify all present |
| Amount format | Number formatted as dollar |
| Date + Recurring | Date is date type, Recurring is checkbox |
| Tags configured | All 9 default tags exist as multi-select options |
| Expenses seeded | All provided expenses created, no duplicates |
| Amounts accurate | Dollar amounts match user data exactly |
| Disclaimer delivered | Tax disclaimer included in delivery |
| Views + usage guide | All 5 views and operations guide delivered |
| Parent page correct | Database under requested page |
Pre-Delivery Checklist:
[x] Database created and accessible
[x] All 12 properties configured
[x] Category options correct (15 IRS-aligned)
[x] Payment methods present (6)
[x] Tax Deductible options correct (4)
[x] Amount formatted as dollar
[x] Date and Recurring properties configured
[x] Tags configured (9 defaults or custom)
[x] All expenses seeded, no duplicates, amounts verified
[x] Tax disclaimer delivered
[x] View instructions and usage guide delivered
[x] Database under correct parent page
Recovery and Troubleshooting
Notion Search Returns No Results
- Ask for exact page title (case-sensitive)
- Try shorter keyword (e.g., "Finance" instead of "Business Finance Dashboard")
- Confirm the page is shared with the Notion integration
- After 3 failures: "Check Settings > Connections in Notion and verify integration access."
Database Creation Fails
- Verify parent page ID with
notion-fetch - Check for permission errors
- Retry once
- If still fails: "Go to parent page > three-dot menu > Connections > ensure 'Can edit' access."
Expense Seeding Partially Fails
- Report which expenses succeeded and which failed
- Retry failed expenses individually
- If retries fail, provide details for manual entry
Notion API Rate Limits
- Pause 10 seconds between batches, reduce to 5 per call
- DO NOT skip expenses due to rate limits -- slow down and retry
User Is Unsure About Categories
- Present the category table
- Map to most likely category
- If ambiguous, default to "Other" with Tax Deductible = "Verify"
- Add Note: "Category uncertain -- review with accountant"
User Wants to Modify Schema Later
Notion MCP does not support modifying schemas. Instruct the user: click "+" to add property, click column header > "Edit property" to modify, or add new category options via "Edit property" on the Category column.
Large CSV Import
- Parse headers and present mapping for confirmation
- Process in batches of 10-15 per
notion-create-pagescall - Report progress after each batch
- 50+ rows: Warn that import takes several minutes due to API limits
Anti-Patterns
- DO NOT provide specific tax advice -- this is a tracking system, not a tax advisory service
- DO NOT assume deductibility without flagging -- when in doubt, set to "Verify"
- DO NOT mix personal and business expenses -- advise separate tracking
- DO NOT guess or fabricate dollar amounts -- only record what the user provides
- DO NOT create the database without the full property schema
- DO NOT skip the tax disclaimer -- every delivery must include it
- DO NOT categorize car expenses as 100% deductible -- almost always partial
- DO NOT promise IRS compliance -- this organizes records, not guarantees audits
- DO NOT create views programmatically -- provide manual instructions
- DO NOT deliver without the usage guide -- the tracker requires daily operation knowledge