Start your free 14-day trial Open the demo account Search the whole site
Product DomesticCommercialEnd of tenancyHoliday letsAirbnbWindowsCarpets and upholsteryOne-off and specialistFacilities managementCleaner appRAMSYour websiteInvoicing Everything CleanFlo does →
Compare Cleaning software comparedCleanFlo vs JobberCleanFlo vs ZenMaidCleanFlo vs GetCleanFlowCleanFlo vs ConnecteamCleanFlo vs SweptCleanFlo vs BigChangevs a spreadsheet and WhatsAppCleanFlo vs SqueegeeCleanFlo vs ServiceM8CleanFlo vs Cleenie
Free tools Cleaning Quote CalculatorPrice Per m² CalculatorUK VAT CalculatorProfit Margin CalculatorTrue Cost of a CleanerHoliday Entitlement CalculatorPer-Seat Cost CalculatorContract Tender Calculator All 17 free tools → 16 printable templates →

Recording expenses and reimbursements

Labour has always had a rate. CleanFlo has priced a clean from it since the beginning. Everything else a clean actually costs, from the chemicals to the van to the insurance, had nowhere to go. Expenses is where it goes: what the business bought, and what it owes somebody who paid for something themselves.

In the app: Expenses Open CleanFlo
On this page

Expenses is a company-level module, on by default and off for a business that would rather not track this yet (Modules). Switching it off hides the screen and refuses new spend at the database, not only on screen; nothing already recorded is deleted, and switching it back on restores the ledger exactly as it was left.

It is also owner-only. Expenses is money-out: the company’s whole cost base, its suppliers, its insurance premium, its rent. CleanFlo keeps money and the sales pipeline off a supervisor’s reach the same way Invoicing already is. A supervisor’s sidebar never shows this screen at all.

One ledger, two kinds of spend

Every row is one of two things, and they differ only in who is owed money at the end. A company purchase is the business paying directly, by card, transfer or direct debit, and nobody is owed anything: it is simply recorded. A staff reimbursement is a cleaner spending their own money on the business’s behalf, and it carries a status that walks through WaitingApproved or RejectedPaid, the last of those set once it rides out on that person’s next pay run.

app.cleanflo.io/expenses
Expenses Search everything… ⌘K
Expenses

What the business bought this period, and the VAT split behind it.

Record an expense
LedgerReimbursements
£1,248.60 Recorded costs £1,090.50 Net £158.10 VAT
By category
Consumables 6 expenses £412.30
Vehicle 2 expenses £290.00
Insurance 1 expense £340.00
Every expense
Cleaning chemicals from CleanCo 28 Aug 2026 · Consumables · CleanCo £86.40
Annual public liability renewal 14 Aug 2026 · Insurance £340.00
Vacuum cleaner bags · reimbursed to Marek Kowalski 10 Aug 2026 · Consumables £18.50
The Ledger tab: every purchase, plus a reimbursement once it has been decided. A reimbursement still only waiting on you lives in the Reimbursements tab instead, so it is never counted twice.

Recording a company purchase

Record an expense opens one sheet for both kinds of row. Type defaults to Company purchase, so the common case (the business bought something) needs nothing extra: a date, a category, what it was, an optional supplier, and the net amount.

Record a purchase
The business paid this directly, so nothing is owed to anybody.
Type Company purchase
When 29/08/2026
Category Consumables
What it was e.g. Cleaning chemicals from CleanCo
Supplier Optional
Net amount £ 86.40
VAT £ 17.28
Total £103.68
Vehicle registration Optional
Attach a receipt
CancelAdd the expense
Recording a purchase. The total updates as you type, and a receipt is optional: the field is there for the record, not a gate on saving.

A company that is not VAT registered never sees a VAT field at all: it enters the full amount paid as the net figure, and the database refuses a VAT amount from that company outright rather than trusting the screen alone to keep it off. A registered company may still record zero VAT, for a zero-rated or exempt purchase; that is a real answer, not a missing one.

Filing a reimbursement

Switch Type to Staff reimbursement and a Who spent it field appears. There is no reimbursement screen in the cleaner app yet, so v1’s route is the same one mileage claims use: the owner files it on the person’s behalf, exactly as it would arrive by text message in a small firm. The self-service policy that will let a cleaner file their own is already built into the database, ready for the screen that will use it.

Approving or rejecting a reimbursement

Every reimbursement still submitted sits in the Reimbursements tab, under Waiting on you, with the amount they claimed and what it was for. Nothing is owed until you decide.

Waiting on you
1 to decide
Marek Kowalski 10 Aug 2026 · Consumables · Vacuum cleaner bags £18.50 Approve
The queue. Rejecting asks for a one-line reason so the person knows why; approving needs nothing more: the amount was typed and evidenced at submission, so there is no rate left to resolve.

Approving stamps who decided it and when, and the reimbursement rides out on that person’s next pay run, the same mechanism a mileage claim uses. A reimbursement cannot be approved twice, and a company purchase cannot be approved at all: it was never a request in the first place.

Categories

A fixed list rather than one you edit. A settings screen and a migration for a list almost nobody touches was not worth building. It runs: Consumables, Equipment, Fuel, Vehicle, Staff costs, Insurance, Subscriptions, Professional, Marketing, Premises, and Other.

Receipts

A receipt is optional and attaches as a JPEG, PNG, HEIC or PDF up to 20MB, held in a private store, never a public link, so nobody with the address alone can open a document with your bank details on it. You see your own company’s receipts; a cleaner sees only their own. A cleaner who filed a reimbursement cannot remove the receipt behind it once it is in (the same reason they cannot edit or withdraw the claim itself), but you can, which is what clears an upload nothing ever came to reference.

Getting it out

Export CSV on the Ledger tab downloads every row in the period you have set (type, date, category, supplier, net, VAT, gross, who it was reimbursed to), ready for a bookkeeper or an accounting import, the same shape every other export in CleanFlo uses.

Turning Expenses off

From Modules. It hides Expenses from the sidebar and stops any new purchase or reimbursement being recorded: the database itself refuses the write, not only the screen. Nothing already entered is deleted, and every receipt stays exactly where it was. Switch it back on and the ledger reappears precisely as you left it.

Common questions

What is the difference between a purchase and a reimbursement?
A purchase is the business paying directly, by card payment or supplier invoice, and nobody is owed anything. A reimbursement is a cleaner spending their own money on the business’s behalf, and it moves through a waiting, approved or rejected, then paid status until it rides out on their pay run.
Can a cleaner file their own expense yet?
Not in v1. There is no expenses screen in the cleaner app yet, so today the owner files a reimbursement on somebody’s behalf. The database policy that will let a cleaner self-serve is already built, ready for that screen.
Can I claim mileage and reimburse fuel for the same trip?
No. The HMRC mileage rate already covers the fuel, so a fuel-category reimbursement is refused outright: the category is not even offered while filing one. Claim mileage for the journey, or record fuel for a company vehicle as an ordinary purchase.
What happens to VAT if my company is not VAT registered?
The VAT field does not appear. Enter the full amount paid as the net figure. The database refuses a VAT amount from a company that is not registered, because it has nothing to reclaim it against.
Can I turn Expenses off if I do not want to track it yet?
Yes, from Modules, under Account in the sidebar. It hides the screen and stops new spend being recorded; nothing already entered is deleted, and switching it back on restores everything exactly as it was.