From autotask
Manages Autotask expense reports: create reports, add line items, search by status/submitter, track reimbursable vs billable expenses, and manage approval workflows.
How this skill is triggered — by the user, by Claude, or both
Slash command
/autotask:expensesWhen to use
When creating expense reports, adding line items, searching reports by status or submitter, tracking reimbursable vs billable expenses, and 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.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.
| 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 |
| 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 |
NEW (1) ──────────> SUBMITTED (2) ──────────> IN REVIEW (6)
│
┌───────────┴───────────┐
▼ ▼
APPROVED (3) REJECTED (5)
│ │
▼ ▼
PAID (4) Back to NEW
| 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) |
| 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 |
Use autotask_get_field_info with entity 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 |
| 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 |
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 fieldname defaults to auto-generated if omittedweekEndingDate helps organize reports by periodTool: 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
Tool: autotask_search_expense_reports
Args: {
"submitterId": 29744150,
"status": 1,
"pageSize": 25
}
Filters:
submitterId - Filter by who submittedstatus - Filter by approval status (1=New, 2=Submitted, 3=Approved, 4=Paid, 5=Rejected, 6=InReview)pageSize - Results per page (default 25, max 100)Tool: autotask_get_expense_report
Args: { "reportId": 12345 }
autotask_create_expense_report: {
"submitterId": <your_resource_id>,
"name": "Client Visit - Contoso Ltd",
"weekEndingDate": "2026-02-28"
}
autotask_create_expense_item: {
"expenseReportId": <report_id>,
"description": "Round trip to Contoso - 45 miles @ $0.67/mi",
"expenseDate": "2026-02-15",
"expenseCategory": <mileage_category_id>,
"amount": 30.15,
"companyId": <contoso_company_id>,
"isBillableToCompany": true,
"isReimbursable": true
}
autotask_create_expense_item: {
"expenseReportId": <report_id>,
"description": "Parking at Contoso office",
"expenseDate": "2026-02-15",
"expenseCategory": <parking_category_id>,
"amount": 12.00,
"companyId": <contoso_company_id>,
"isBillableToCompany": true,
"isReimbursable": true,
"haveReceipt": true
}
autotask_search_expense_reports: { "status": 2 }
Returns all submitted reports awaiting approval.
autotask_search_expense_reports: {
"submitterId": 29744150,
"status": 1
}
Returns draft reports for a specific employee.
| Scenario | Billable | Reimbursable | Example |
|---|---|---|---|
| Client site mileage | Yes | Yes | Driving to customer office |
| Company card purchase | Yes | No | Equipment on company card |
| Internal travel | No | Yes | Conference attendance |
| Company event | No | No | Team lunch on company card |
Key distinction:
isBillableToCompany) = Charge to the client's accountisReimbursable) = Pay back the employeeTo find valid expense category and payment type IDs for your instance:
Tool: autotask_get_field_info
Args: { "entity": "ExpenseItem", "field": "expenseCategory" }
Tool: autotask_get_field_info
Args: { "entity": "ExpenseItem", "field": "paymentType" }
| Error | Cause | Resolution |
|---|---|---|
| Invalid expenseCategory | Wrong picklist ID | Use autotask_get_field_info to get valid IDs |
| Invalid paymentType | Wrong picklist ID | Use autotask_get_field_info to get valid IDs |
| ExpenseReportId required | Missing parent report | Create a report first, then add items |
| Invalid submitterId | Resource not found | Verify with autotask_search_resources |
| Cannot modify approved report | Report already approved | Only NEW/REJECTED reports can be edited |
haveReceipt helps auditing; attach receipts in Autotask UIisBillableToCompany for client-recoverable costsautotask_get_field_info before creating items to get valid category/payment IDsnpx claudepluginhub wyre-technology/msp-claude-plugins --plugin autotaskCreates, searches, and manages QuickBooks Online expenses, purchases, bills, and vendor payments with per-client cost tracking for MSP profitability analysis.
Retrieves Autotask billing items, checks approval levels, and searches invoices for MSP finance teams reconciling billable work and approving charges.
Aggregates expense receipts from email by time period, categorizes by project or client, and outputs structured JSON schema for expense tools or accountants. Use for building reports from email receipts like 'what did I spend this month'.