Financial

Revenue

Track all money coming into your business. Revenue entries can be added manually, linked to paid tickets, or set up as recurring entries for retainers and subscriptions. Pair with the Expenses page to see your net profit for any period.

Searching and filtering

The Search box matches description, client, and ticket number by default. To search one field specifically, prefix the query with the field name and a colon, e.g. payment method: cash or category: repair. As you type, a dropdown suggests matching field names, and once a field is chosen it suggests the real values seen for that field so you don't have to guess spelling. Combine multiple fields with &, e.g. payment method: cash & category: repair. To leave things out instead, see Excluding results below.

FieldAliases
Ticket #ticket, ticket #, ticket number
Clientclient, customer, name
Companycompany
Descriptiondescription, desc
Work Typecategory, work type, type
Payment Methodpayment method, payment, paid via, payment type
Hourshours, hours worked
Lead Feelead fee
Payment Feepayment fee
Amountamount
Datedate

Field names are case-insensitive. If the text before a colon isn't a recognized field, it's searched as plain text instead of returning no results. Searching for text that itself contains an &, like Smith & Sons or AT&T, still works: & only joins clauses when it has a space on each side and at least one side is a field or an exclusion.

Excluding results ("does not contain")

Sometimes it's easier to say what you don't want to see. Both the search box and the dropdown filters can leave rows out instead of narrowing to them.

In the search box

Put a - or ! in front of a word to hide every row that contains it. To exclude on a single field, use != instead of the colon. These three all mean the same thing:

Join several with & (a space on each side) and a row has to pass every one of them. Exclusions, field searches, and plain words can all be mixed. The suggestions dropdown keeps working too: type payment method != and it lists the real values in use.

Type thisTo see
-refundEvery entry that doesn't mention "refund" in its description, client, or ticket number.
payment method != cashEverything that wasn't paid in cash.
category != repairEverything except the Repair work type.
payment method != cash & payment method != paypalEverything paid some other way than cash or PayPal.
payment method != cash & smithEntries for Smith that weren't paid in cash.
๐Ÿ’ก Exclusions match partial text, the same way a normal search does. -smith also hides anything containing smithson. Use a field and more of the word to be precise, e.g. client != john smith.

In the dropdown filters

The All Work Types and All Payments dropdowns are checklists: tick as many values as you want. With Is (the small button on its left) you see every entry matching any ticked value. Click it and it turns red and reads Not: the list now shows every entry except the ticked values. You can click it before or after ticking. Click it again to go back to Is.

For example, tick Cash and Check in the payments dropdown, then click Is so it reads Not, to see every entry that wasn't paid in cash or by check.

Your ticked values and the Not setting are remembered along with your other filters. It switches back to Is when you click Clear inside the dropdown or Clear ร—, or click one of the work type summary cards.

Summary cards

The top of the Revenue page shows summary cards for the selected period:

CardWhat it shows
RevenueTotal of all revenue entries in the period
CostsTotal logged expenses in the period
Net ProfitRevenue minus Costs. Green means profit, red means costs exceeded revenue.
Work type cardsOne card per work type that has revenue in the period (e.g. Network, Hardware, Printer). Shows the total and entry count for that category.

Click any work type card to filter the table to that category. The active card is highlighted. Click it again to clear the filter. This is equivalent to selecting the same value in the Work Types dropdown below the cards.

Choosing and reordering columns

Click โŠž Columns above the Revenue list to show or hide Ticket, Client, Work Type, Payment Method, Hours, Lead Fee, Payment Fee, Job Costs, and Net. Date, Description, and Amount are always shown. Drag any column header left or right to put the columns in the order you want; open โŠž Columns and click โ†บ Reset column order to go back to the default. Both the order and the visible columns are remembered in your browser. The picker is available on desktop only.

Adding revenue manually

Click + Add Revenue to open the entry form. Fill in:

FieldNotes
DescriptionRequired. What the payment was for.
AmountRequired. Dollar amount received.
DateRequired. When the revenue was received.
Payment FeeOptional. If a processor (Square, Stripe, PayPal) took a fee, enter the amount here. Servelo automatically creates a Payment Fees expense entry for that amount so it appears in your cost totals.
CategoryOptional. Revenue category, customizable in Settings > Categories.
ClientOptional. Search for and link a client record.

Check the box next to one or more rows in the revenue table to select them, then click Delete Selected to remove multiple entries at once. Deleting a ticket-linked entry also marks that ticket unpaid, same as deleting one entry at a time.

Importing from a bank or card statement

Click Import CSV on the Revenue page to import deposits from a bank or payment processor export. Servelo shows a preview modal before importing anything, so you can review each row first.

Servelo detects the file type automatically:

For each credited row, you can:

The same import handles both directions of a generic bank/card statement: money in (credits) becomes revenue, money out (debits) becomes an expense, all reviewed in the one preview modal. Rows that look like duplicates of revenue or expenses already in Servelo are flagged and unchecked by default.

Recurring revenue

Check Recurring to create a recurring revenue plan โ€” useful for monthly retainers, subscriptions, or any predictable recurring income. Servelo creates one entry per period automatically as each period comes due, so your revenue list stays current without you having to do anything.

OptionDescription
WeeklyOne entry every 7 days
Bi-weeklyOne entry every 14 days
MonthlySame day each month
QuarterlySame day each quarter
CustomEvery N days (you specify)

Set the Start Date to the date of the first entry. If the start date is today or in the past, the first entry is created immediately when you save the plan. Future entries are added automatically by Servelo each day as they come due.

Active plans are shown in a Recurring Plans section below the revenue list. You can pause or cancel a plan at any time โ€” pausing stops new entries from being created, cancelling removes the plan entirely. Individual entries already created are not affected.

Example: A $500/month retainer starting June 1. Enter description "Monthly Retainer โ€” Acme Corp", amount $500, start date June 1, check Recurring, select Monthly. Servelo creates the June entry immediately and adds a new $500 entry on the 1st of each subsequent month.

Revenue from tickets

When you mark a ticket as Paid on the Revenue page or the ticket itself, Servelo automatically creates a revenue entry linked to that ticket. These entries appear in the revenue list alongside manual entries and show the ticket number in the # column. Clicking them navigates to the ticket.

Deleting a ticket-linked revenue entry removes the entry and marks the ticket as unpaid.

Categories

Revenue categories are fully customizable. Go to Settings > Categories > Revenue Categories to add, rename, or remove them.

Exporting

Click Export CSV to download the currently filtered revenue list. The export includes date, ticket number, client, description, category, and amount. Apply period filters first to scope the export.

Who can do what

ActionAdminTechnicianViewer
View revenueYesYesYes
Add revenueYesYesNo
Edit revenueYesYesNo
Delete revenueYesNoNo