Invoices: billing built into the field-service workflow
TLDR: Service businesses had to leave Menaia to invoice and chase payment. I designed a first-party billing system, built on a ledger, that laid the foundation for payments.
Menaia took a service business from first lead to finished job, but stopped short at the one step that pays the bills: invoicing.
Businesses had to leave Menaia entirely, dropping into QuickBooks, a spreadsheet, or paper to bill and chase payment.
Skip straight to the shipped design↓If billing lived inside Menaia, it could become the source of truth for the money side of the business too, not just the operational side.
- Bring invoicing into the app, connecting directly to Menaia's CRM.
- Automate manual tasks for administrators, freeing them from repetitive billing work.
- Surface clear balances and statuses across every project, so administrators always know what's owed.
- Lay the foundations for online payments and accounting integrations, so later phases extend the system rather than rebuild it.
Before sketching a single invoice, I wanted to see how these businesses actually bill today.
I ran sessions with office managers, bookkeepers, and accountants, the people who send invoices and chase payment every week, watching them work in QuickBooks, spreadsheets, and paper.
My live reaction after an Operations Manager shared their spreadsheet of daily cost tracking: there were a lot of opportunities for improvement!
I looked at the main competitors in the field service landscape to see how they handled invoicing, and where Menaia could land.
That research surfaced a real gap: SMB teams needed to move fast, enterprise teams needed a far more thorough process.
From Scratch
Smaller teams needed a quick invoice on the spot: a blank invoice, a few line items, send.
Pull from Estimate
Enterprise customers ran a stricter process: proposal signed, invoice generated straight from those exact line items. No re-keying, no mismatch.
Both paths, mapped from the first click through to paid.
The pull-from-estimate flow raised a harder question: how much should someone be able to edit, and where does the source of truth live?
Early versions buried the connection to the signed estimate behind a generic breakdown and placeholder line items. I iterated toward a simpler summary that kept the real line items front and center, linked directly to the source proposal.
After each round, I put the designs back in front of the same office managers and accountants from research.
Testing showed that even a thorough, locked-down process hit edge cases it didn't account for. Being too rigid just pushed enterprise teams back to workarounds outside Menaia.
- Over-recording payments. Accountants needed room to record more than the balance owed, like a tip, without the system fighting them.
- Who an invoice goes to. Sending only to the contact on file was too rigid; some invoices needed to reach someone else entirely, like a property manager or the client's own accountant.
Each became a deliberate exception, not a loophole: the thorough default stayed, with just enough flexibility for edge cases that were routine for them, if rare in the data.
Phase 1 shipped the core invoicing features: creation, payments, visibility, plus a settings area for custom automations.
Build a custom invoice on the fly, or import one straight from a signed proposal, the two paths in one clean step.
Adjust line items, net terms, and taxes, then preview exactly what the client will see before it goes out.
Easily track how much has been invoiced and what is outstanding or overdue.
Record a payment right from the project overview and allocate it across open invoices.
Each branch tailors its own invoice settings, including automations that create and send a deposit invoice the moment a proposal is signed.
Phase 2 brought online payments directly into Menaia, powered by Stripe Connect.
Each business is a connected account. Because statuses were already derived from transactions, Stripe webhooks slot into the same model, no rework needed.
Menaia Pay: payments, payouts, and account status live natively in the app, powered by Stripe Connect.