Skip to content
Development
Skill

/expenses

Autotask expense report and expense item structure - the report/item parent-child relationship, approval status workflow, expense categories, payment types, and the billable vs reimbursable distinction for MSP operational expenses.

From plugin
msp-claude-plugins
52200 skills146 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill expenses --agent claude-code

SKILL.md

expenses.SKILL.md
name: "Autotask Expenses"
description: >
  Autotask expense report and expense item structure - the report/item parent-child
  relationship, approval status workflow, expense categories, payment types, and the
  billable vs reimbursable distinction for MSP operational expenses.
when_to_use: >-
  When creating expense reports, adding line items, searching reports by status or submitter, or
  managing expense approval workflows. Use when: autotask expense, expense report, expense item,
  reimbursement, mileage, travel expense, receipt, expense approval, billable expense, expense
  category, create expense, or submit expense.

Autotask Expense Report Management

Overview

Expense reports track out-of-pocket costs incurred by technicians and staff during service delivery. Unlike time entries (which track labor hours), expense reports capture material costs like mileage, meals, equipment purchases, and travel expenses. Each report contains one or more expense items, and follows an approval workflow before reimbursement or client billing.

Anti-triggers

  • **A cost charged to the customer on a ticket** — that is a ticket

charge, a different entity on a different approval path; use `autotask-ticket-notes-attachments`.

  • **Labour hours rather than out-of-pocket cost** — use

`autotask-time-entries`.

  • **Whether an approved expense reached an invoice** — use

`autotask-billing`.

Key Concepts

Expense Report vs Expense Item

| Entity | Purpose | Relationship | |--------|---------|-------------| | **Expense Report** | Container/header for a group of expenses | Parent - groups items by period or purpose | | **Expense Item** | Individual expense line item | Child - belongs to exactly one report |

Approval Status Codes

| Status ID | Name | Description | |-----------|------|-------------| | **1** | New | Report created, not yet submitted | | **2** | Submitted | Sent for manager approval | | **3** | Approved | Manager approved, ready for processing | | **4** | Paid | Reimbursement processed | | **5** | Rejected | Manager rejected, needs correction | | **6** | InReview | Under review by approver |

Approval Workflow

NEW (1) ──────────> SUBMITTED (2) ──────────> IN REVIEW (6)
                                                   │
                                       ┌───────────┴───────────┐
                                       ▼                       ▼
                                 APPROVED (3)            REJECTED (5)
                                       │                       │
                                       ▼                       ▼
                                   PAID (4)              Back to NEW

Field Reference

Expense Report Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | int | System | Auto-generated unique identifier | | `name` | string | No | Report name (e.g., "Feb 2026 Travel") | | `description` | string | No | Report description | | `submitterId` | int | Yes | Resource ID of the person submitting | | `weekEndingDate` | date | No | Week ending date (YYYY-MM-DD) | | `status` | int | System | Current approval status (1-6) |

Expense Item Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | `expenseReportId` | int | Yes | Parent expense report ID | | `description` | string | Yes | Line item description | | `expenseDate` | date | Yes | Date expense was incurred (YYYY-MM-DD) | | `expenseCategory` | int | Yes | Expense category picklist ID | | `amount` | decimal | Yes | Expense amount | | `companyID` | int | No | Associated company ID (0 for internal) | | `paymentType` | int | No | Payment type picklist ID | | `isBillableToCompany` | boolean | No | Whether billable to client | | `isReimbursable` | boolean | No | Whether reimbursable to employee | | `haveReceipt` | boolean | No | Whether receipt is attached |

Expense Categories (Common)

Use `autotask_get_field_info` with entityType `ExpenseItem` to get the full picklist for your instance. Common categories include:

| Category | Typical Use | |----------|-------------| | Mileage | Driving to client sites | | Meals | Client meetings, travel meals | | Lodging | Overnight travel | | Airfare | Flight costs | | Parking/Tolls | On-site parking fees | | Equipment | Small equipment purchases | | Supplies | Office or project supplies | | Other | Miscellaneous expenses |

Payment Types (Common)

| Type | Description | |------|-------------| | Cash | Out-of-pocket cash payment | | Personal Credit Card | Employee's own card | | Company Credit Card | Corporate card (usually not reimbursable) | | Check | Payment by check |

MCP Tool Reference

Create an Expense Report

Tool: autotask_create_expense_report
Args: {
  "submitterId": 29744150,
  "name": "Feb 2026 Client Travel",
  "description": "Travel expenses for on-site visits",
  "weekEndingDate": "2026-02-28"
}

**Notes:**

  • `submitterId` is the only required field
  • `name` defaults to auto-generated if omitted
  • `weekEndingDate` helps organize reports by period

Add an Expense Item

Tool: autotask_create_expense_item
Args: {
  "expenseReportId": 12345,
  "description": "Mileage to Contoso Ltd - server migration",
  "expenseDate": "2026-02-15",
  "expenseCategory": 1,
  "amount": 45.50,
  "companyID": 67890,
  "isBillableToCompany": true,
  "isReimbursable": true,
  "haveReceipt": false
}

**Required fields:** `expenseReportId`, `description`, `expenseDate`, `expenseCategory`, `amount`

Search Expense Reports

Tool: autotask_search_expense_reports
Args: {
  "submitterId": 29744150,
  "status": 1,
  "pageSize": 25
}

**Filters:**

  • `submitterId` - Filter by who submitted
  • `status` - Filter by approval status (1=New, 2=Submitted, 3=Approved, 4=Paid, 5=Rejected, 6=InReview)
  • `pageSize` - Results per page (default 25, max 100)

Get an Expense Report

Tool: autotask_get_expense_report
Arg
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

52200 skills146 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills13d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react4d252k
@facebook@facebookInstall Skill

Questions about expenses.

Which coding agents can use expenses?
expenses installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.