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.
| Field | Aliases |
|---|---|
| Ticket # | ticket, ticket #, ticket number |
| Client | client, customer, name |
| Company | company |
| Description | description, desc |
| Work Type | category, work type, type |
| Payment Method | payment method, payment, paid via, payment type |
| Hours | hours, hours worked |
| Lead Fee | lead fee |
| Payment Fee | payment fee |
| Amount | amount |
| Date | date |
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:
payment method != cashpayment method: !cash-payment method: cash
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 this | To see |
|---|---|
-refund | Every entry that doesn't mention "refund" in its description, client, or ticket number. |
payment method != cash | Everything that wasn't paid in cash. |
category != repair | Everything except the Repair work type. |
payment method != cash & payment method != paypal | Everything paid some other way than cash or PayPal. |
payment method != cash & smith | Entries for Smith that weren't paid in cash. |
-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:
| Card | What it shows |
|---|---|
| Revenue | Total of all revenue entries in the period |
| Costs | Total logged expenses in the period |
| Net Profit | Revenue minus Costs. Green means profit, red means costs exceeded revenue. |
| Work type cards | One 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:
| Field | Notes |
|---|---|
| Description | Required. What the payment was for. |
| Amount | Required. Dollar amount received. |
| Date | Required. When the revenue was received. |
| Payment Fee | Optional. 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. |
| Category | Optional. Revenue category, customizable in Settings > Categories. |
| Client | Optional. 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:
- Square Transactions export (Reports > Transactions in Square): preferred when detected, since it includes Square's own Gross Sales, Fees, and Net Total columns. The processing fee comes directly from Square instead of being estimated.
- Generic bank/card statement CSV: needs
Date,Description, andAmountcolumns. Deposits from a known processor (Square, Stripe, PayPal, Venmo) are grossed up using the processing fee rates configured in Settings > Processing Fees, so the fee can be split out into its own expense.
For each credited row, you can:
- Uncheck it to skip importing that row
- Toggle whether a processing fee applies, and correct the estimated fee amount if it's off. When checked, the fee is imported as a separate Payment Fees expense alongside the revenue entry
- Adjust the category before import
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.
| Option | Description |
|---|---|
| Weekly | One entry every 7 days |
| Bi-weekly | One entry every 14 days |
| Monthly | Same day each month |
| Quarterly | Same day each quarter |
| Custom | Every 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.
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
| Action | Admin | Technician | Viewer |
|---|---|---|---|
| View revenue | Yes | Yes | Yes |
| Add revenue | Yes | Yes | No |
| Edit revenue | Yes | Yes | No |
| Delete revenue | Yes | No | No |