Expenses
proLog costs with an approval queue, monthly category budgets, separate recurring templates, and bulk clean-up — all manager-controlled.
Expenses is where every cost your business incurs gets recorded, reviewed, and tracked against a plan. Instead of scattered receipts, spreadsheets, and a shoebox of paper, every outlay lives in one place tied to the right site (location) and category, so you always know where the money went and whether you are on budget.
This page covers logging an expense, the approval queue, monthly budgets, recurring-expense templates, bulk clean-up, and a critical caution about payroll-linked expenses.
Who can do this
Expenses uses a simple two-level model. There is no per-feature expense privilege in the main Expenses module — approval, editing, deletion, budgets, and recurring templates are all reserved for a domain manager (an employee with the manager flag, is_manager).
| Action | Who can do it |
|---|---|
| Log a new expense (main Expenses module) | Any signed-in employee |
| Log an expense from the employee portal (Caja) | Manager, or staff with the Submit expenses privilege (can_submit_expense) |
| Approve / reject an expense | Manager only (is_manager) |
| Edit / delete an expense | Manager only |
| Bulk-delete expenses | Manager only |
| Create / edit / delete budgets | Manager only |
| Create / edit / delete recurring templates, and run them | Manager only |
"Manager" here means the domain-manager flag, not a job title. A non-manager — even one who can manage other privileges — cannot approve expenses or manage budgets/recurring templates unless they also have the manager flag. See Users & privileges.
Log an expense
- Open Expenses from the sidebar and click New expense.
- Pick a category and the site the cost belongs to.
- Enter the amount and the date the cost was incurred, and a short description.
- Choose the payment method — cash, card, check, transfer, or other (card is the default).
- Attach a receipt: there are two attachment fields — a receipt image (photo) and a generic receipt file that also accepts PDFs and scans.
- Add optional notes for context, then Save.
What happens next depends on who you are:
- Managers: the expense is auto-approved immediately — its status is set to approved, stamped with you as the approver and the approval time.
- Non-managers: the expense is created as pending and waits in the approval queue. You will see a "submitted for approval" confirmation.
Attaching the receipt at the moment you log the expense saves hours at month-end and makes approvals and audits painless.
Categories
Categories are a fixed list, not free text. The available categories are:
| Category | Used for |
|---|---|
| Supplies & Inventory | Consumables, retail/back-bar stock |
| Equipment | Tools, furniture, machines |
| Rent & Utilities | Rent plus electricity, water, internet, etc. |
| Marketing & Advertising | Ads, promotions, design |
| Insurance | Business/liability cover |
| Maintenance & Repairs | Upkeep and fixes |
| Other Expenses | Anything that does not fit above |
| Payroll & Benefits | System-generated only — see the warning below |
The Payroll & Benefits category is reserved. Rows in it are created automatically by Payroll, not by hand. Do not use it for normal costs, and read Payroll-linked expenses before deleting anything in it.
Approval workflow
Every expense has a status: pending, approved, or rejected. This keeps spending controlled without slowing anyone down.
- Non-manager staff log expenses, which are submitted as pending.
- A manager reviews the pending queue, opens each entry, checks the receipt, and clicks Approve or Reject.
- When rejecting, the manager can include a reason so the submitter knows what to fix and resubmit.
Only approved expenses count toward budgets, dashboards, and financial reports — pending and rejected expenses count nowhere, so your numbers always reflect real, vetted spending.
Budget tracking and reports only count approved expenses. Leaving a large cost stuck in pending can hide a budget overrun, so keep the approval queue current. Conversely, because a manager's own expenses are auto-approved, they hit budgets and reports the instant they are saved.
Budgets
Set a monthly spending limit per category, optionally scoped to a single site, so overspending surfaces before it becomes a surprise.
- Open the Budgets area within Expenses.
- Click to add a budget, choose a category, optionally pick a site (leave the site blank to budget across all sites), and enter the monthly amount.
- Optionally set the alert threshold — the percentage of the budget at which the page starts warning you (default 80%).
Budgets are monthly only; there is no weekly or yearly budget option. Each budget is unique per category and site, so you cannot create two budgets for the same category-and-site combination — Apolaris AI will tell you one already exists.
How the warnings work: as approved expenses for the current month accumulate, the Budgets page compares the spend against each limit and flags each row visually:
- Warn — spend has reached the alert threshold but is still under 100% of the budget.
- Over — spend has reached or passed 100% of the budget.
These flags are visual indicators on the Budgets page only. There is no email, SMS, or push alert, and the matching is not done by AI — it is a straightforward percentage comparison computed each time you open the page. Check the page periodically; it will not notify you on its own.
Example. You set a Supplies & Inventory budget of $10,000/month for the Downtown site with an 80% alert threshold. Once approved supplies expenses for Downtown reach $8,000 this month, the row shows a warn state; at $10,000 it flips to over. A separate Supplies budget with no site set would track every site's supplies combined.
Recurring expenses
Fixed costs that repeat — rent, software subscriptions, insurance — are managed as recurring expense templates, which live in their own area, separate from one-off expenses.
A recurring expense is not a checkbox on the normal expense form. There is no "recurring" option when you log a single expense. Recurring expenses are a distinct entity with their own list and add/edit pages under Expenses → Recurring (/expenses/recurring/).
Create a recurring template
- Open Expenses → Recurring and add a new recurring expense.
- Fill in the site, category, description, and amount — the same fields as a normal expense.
- Choose a frequency: weekly, monthly, quarterly, or yearly.
- Set the next date — the date the next expense will be generated.
- Save. The template now sits in the recurring list, marked active.
Generating the actual expenses
This is the part most people get wrong, so read carefully:
Recurring expenses are not generated automatically. There is no background scheduler or cron job that creates them for you. A manager must open Expenses → Recurring and click Run due. That action creates an (already-approved) expense for every occurrence due on or before today, then advances each template's next date. If you never click Run due, no recurring expenses are ever created.
The recurring list shows a count of how many templates are currently due, so you know when there is work to run. Generated expenses are created as approved, so they count in budgets and reports immediately. Set a template to inactive (or delete it) to stop it generating.
Make running due recurring expenses part of your monthly-close routine so nothing is missed. See Monthly close & payroll.
Bulk clean-up
When you need to remove many expenses at once — for example after correcting an import — managers can bulk-delete.
- Open the Expenses list and apply any filters you want.
- Either tick the specific rows you want to remove, or use Select all to target every expense matching the current filters.
- Confirm the bulk delete.
When you choose Select all, the set is re-derived on the server from the same filters the list is using, so the deletion always matches exactly what the filtered list shows.
Bulk delete is permanent and manager-only. Double-check your filters before confirming — "Select all" can target far more rows than are visible on the current page.
Payroll-linked expenses (read before deleting)
This is the single most important caution on this page.
When Payroll is processed, it writes a mirror expense in the Payroll & Benefits category for visibility on the Expenses list. That mirror is loosely linked back to the payroll entry, and that link is not a database foreign key — it is a plain reference.
Two consequences follow:
- Deleting a payroll mirror expense does NOT lower your profit-and-loss. Analytics and P&L source payroll cost directly from the payroll entries (gross), and reporting deliberately excludes the Payroll & Benefits category from operating-expense totals to avoid double-counting. So removing the mirror row changes what you see on the Expenses list but does not de-inflate the P&L — to change payroll cost you must fix the payroll data itself.
- The link must be detached on delete. Apolaris AI automatically detaches the back-link when you delete a payroll mirror expense (singly or in bulk). This is what stops the month-sheet sync from seeing a "missing" expense and silently recreating the row you just removed.
Do not try to "fix" payroll figures by deleting Payroll & Benefits expenses — it will not work and risks confusing your records. Correct payroll in the Payroll module instead. For the full picture of how sales, expenses, payroll, loyalty, and discounts stay aligned in reports, see Payroll and Analytics & Data Explorer.
Expenses dashboard and expense-vs-revenue
The Expenses dashboard summarizes spending by category, site, and period, and pairs it with the expense-vs-revenue view so you can see margins, not just costs. Because sales and expenses share the same platform, this comparison is live and accurate — no exporting and reconciling two disconnected tools.
For deeper slicing, profitability, and exportable reports, see Analytics & Data Explorer. To close the books and pay the team, follow Monthly close & payroll.
Tips
- Use consistent categories so dashboards and budgets stay meaningful over time.
- Always attach a receipt; it turns a number into proof.
- Review the pending queue regularly so budgets and reports stay current.
- Set up recurring templates for every fixed cost — then remember to click Run due each period, since they do not generate themselves.