Expenses
The Expenses page tracks all business costs that are not product purchases (rent, utilities, repairs, subscriptions, salaries, and any other outgoing payments). By recording expenses consistently, cafe owners get a clear picture of operating costs alongside revenue from sessions and orders, enabling accurate profit calculation.
Expense Record Fields
Each expense entry contains the following information:
| Field | Description |
|---|---|
title |
A short description of the expense (e.g., "Rent - April 2026", "Electricity Bill", "Router Repair", "Internet Subscription"). |
amount |
The expense amount in minor currency units (e.g., cents). |
currency |
The currency of the expense. Defaults to the system currency. |
paid_at |
The timestamp when the expense was actually paid. If this field is set, the expense is considered Paid. If null, the expense is Unpaid. |
due_date |
An optional date by which the payment is due. Useful for tracking upcoming obligations. |
vendor |
The name of the party you are paying (e.g., "Landlord", "Electric Company", "IT Services Co."). Optional but recommended for filtering and reporting. |
note |
A free-text field for additional details such as invoice numbers, reference codes, or context. |
Expense Status
Expenses have two possible statuses based on the paid_at field:
- Paid: The
paid_atfield contains a timestamp, indicating the expense has been settled. Paid expenses show a "Paid" badge and the payment date. - Unpaid: The
paid_atfield is empty. The expense is an outstanding obligation. If adue_dateis set, the system can highlight overdue items.
Date Filtering Presets
The Expenses page provides quick date filter presets to narrow the list to a specific period:
| Preset | Period |
|---|---|
| Today | Only expenses created or paid today |
| Yesterday | Only expenses from yesterday |
| Last 7 Days | Expenses from the past week |
| Last 30 Days | Expenses from the past month |
| This Week | Expenses from Monday through today (current week) |
| Last Week | Expenses from the previous full week (Monday to Sunday) |
| This Month | Expenses from the 1st of the current month through today |
| Last Month | Expenses from the entire previous calendar month |
| All Time | No date filter. Shows all expenses |
These presets update the list immediately, making it quick to review expenses for a specific reporting period.
Auto-Complete Suggestions
To speed up data entry and maintain consistency, the Expenses page offers auto-complete suggestions for two fields:
- Vendor: As you type in the vendor field, the system suggests vendor names from your previous expense entries. This prevents inconsistent naming (e.g., "Electric Co." vs. "Electric Company") and makes it easy to reuse common vendor names.
- Title: Similarly, the title field suggests previously used expense titles. Common recurring expenses like "Rent", "Internet", or "Electricity" can be entered with a single selection.
Search
The search bar at the top of the Expenses page performs a full-text search across all fields:
- Title
- Vendor
- Note
- Amount
Type any keyword to instantly filter the list. For example, searching "internet" would show all expenses with "internet" in the title, vendor name, or notes.
Creating a New Expense
To record a new expense:
- Navigate to the Expenses page from the sidebar.
- Click the Add Expense button.
- Enter the title describing what the expense is for.
- Enter the amount (in the system's currency minor units).
- Optionally set the vendor name (auto-complete suggestions appear as you type).
- Optionally set the due date if the payment has a deadline.
- Add any notes for additional context.
- Click Save.
The expense is created with an Unpaid status by default.
Marking an Expense as Paid
To record that an expense has been settled:
- Select the expense from the list.
- Click the Mark as Paid action (or toggle the paid status).
- The system records the current timestamp as the
paid_atvalue. - The expense status changes from Unpaid to Paid.
You can also mark an expense as paid at the time of creation if the payment has already been made.
Deleting an Expense
Select an expense and use the delete action to remove it from the system. Deleted expenses are permanently removed. This action requires appropriate permissions and should be used with care. Consider marking unwanted expenses as void in the notes field rather than deleting them to preserve the audit trail.
Permission Requirements
Access to expense management is controlled by cashier role permissions. Depending on the role configuration:
- Some roles may be able to view expenses but not create or modify them.
- The ability to mark expenses as paid may be restricted to owner-level roles.
- Deleting expenses typically requires elevated permissions.
Check the Cashier Roles page for details on configuring these permissions.