Financial

Expenses

Track business expenses to understand your true costs and profitability. Expenses are available to admins and can be categorized, assigned to jobs, and exported.

Logging an expense

Go to Expenses in the sidebar. Click + Add Expense and fill in:

Mileage tracking

Mileage expenses are calculated from miles driven. Set your vehicle's average MPG and the current gas price under Tickets > Settings > Mileage Tracking. Servelo automatically pulls the national average gas price from the US Energy Information Administration (EIA) daily.

When logging a mileage expense, enter the distance in miles. The fuel cost is calculated automatically based on your MPG and gas price settings.

Importing expenses

Click Import CSV on the Expenses page to import expenses from a CSV file. Servelo detects the file type automatically and uses one of two flows:

Bank / credit card statement import

If your CSV has a Description column and an Amount column (typical of bank and credit card exports), Servelo shows a preview modal before importing. From there you can:

Servelo supports exports from American Express, Chase, and other banks that follow a similar format. Chase exports use a Transaction Date column (instead of Date) and negative amounts for charges โ€” Servelo handles both automatically.

Supported columns (case-insensitive, tab or comma delimited):

ColumnNotes
Date / Transaction DateRequired. MM/DD/YYYY format. Chase exports use Transaction Date.
DescriptionRequired. Used as the expense item name.
AmountRequired. Amex: positive = charge. Chase: negative = charge. Both are handled correctly.
ReferenceOptional. Used for exact duplicate detection across imports.
Extended DetailsOptional. Saved as the expense note.

Auto-categorization: Servelo recognizes common vendors by name and pre-fills the category. Recognized patterns include Thumbtack, Google Ads, Facebook/Meta (marketing), AWS (cloud services), Anthropic/OpenAI/Cursor (AI software), GitHub/Twilio/Slack/Notion (software), and Amazon/AMZN non-AWS (equipment). All other rows are left uncategorized for you to assign.

Category memory: When you manually assign a category to a row during import, that choice is saved by merchant description. The next time the same description appears in a future import, the category is pre-filled automatically. This means common recurring merchants (like your internet provider or a regular supplier) get the right category without you touching them each time. Memory is stored locally in your browser and persists across imports on the same device.

Duplicate detection: If a row's Reference value already exists in Servelo, it is flagged as a duplicate and skipped. Rows without a reference are checked by date and amount. A possible duplicate warning is shown if a match is found.

Generic expense CSV import

If your CSV doesn't match the bank format above, Servelo imports all rows directly with no preview step. Use these column headers:

ColumnRequiredNotes
item or descriptionYesExpense name
price or amountYesUnit cost
quantityNoDefaults to 1
total_costNoDefaults to price ร— quantity
categoryNoUse underscored slugs, e.g. cloud_services
dateNoYYYY-MM-DD format
account_paid_fromNoe.g. Business Amex, Cash
notesNoFree-text note

Rows with no item name are skipped silently. A toast confirms how many rows were imported out of how many were found.

Tip: Use Export CSV on the Expenses page to download your existing expenses. The exported file uses the generic format above, so it can be re-imported or used as a template.

Exporting expenses

Click Export CSV to download the currently filtered expense list. The file includes: date, item, category, price, quantity, total cost, account, and notes. Apply month/year filters before exporting to get a specific period.

Expense categories

Categories help you group and analyze spending. Preset categories include common business expense types. You can add custom categories under Settings > Categories > Expense Categories.

Payment accounts

The Account paid from field tracks which card or account was used for each expense. Manage your payment accounts under Settings > Categories > Payment Accounts. Default accounts (Business Amex, Business Prime, Personal, Cash, Check, Other) are pre-loaded and can be renamed, deleted, or added to. The account field is left blank by default โ€” select the appropriate account when logging each expense.

Reimbursed Expenses

Some expenses are paid out-of-pocket by the technician but covered by the client โ€” equipment ordered for a specific job, for example. These are called reimbursed expenses. Marking an expense as reimbursed lets you link it to a ticket so it appears in that ticket's cost breakdown and P&L summary.

Marking an expense as reimbursed

From the Expenses list, click the three-dot menu on any expense row and choose Mark as Reimbursed. The edit modal opens with the Reimbursed toggle pre-checked. You can then search for and link the expense to a specific ticket using the ticket search field that appears. Save to apply.

You can also open any expense for editing and check the Reimbursed toggle manually, then search for the ticket.

Reimbursed expenses on the ticket

When one or more expenses are linked and marked reimbursed for a ticket, a Reimbursed Expenses section appears on that ticket's detail page showing each item, date, and amount with a running total. This section is read-only on the ticket; to change a link, edit the expense directly.

The total from these expenses feeds into the ticket's P&L Summary as the Equipment / Parts cost line. If the ticket has a linked accepted quote with a deposit, the deposit is shown as a credit that offsets the equipment cost, since the client pre-funded that amount.

Reimbursed expenses and dashboard totals

Reimbursed expenses are excluded from the Expenses and Net stat cards on the dashboard, and from the category totals on the Expenses page. Because the client funded these costs, they are not your business expenses. Only non-reimbursed expenses count toward your expense totals.

Who can do what

ActionAdminTechnicianViewer
View expensesYesYesNo
Add expenseYesYesNo
Edit expenseYesYesNo
Delete expenseYesNoNo
Import CSVYesNoNo
Export CSVYesNoNo