A firm that bills time sells hours, delivers work, and invoices a number that was agreed months earlier. Between those three facts sits the only figure that decides whether the practice is profitable: how many hours actually went into the fee. Most firms find out at the end of the engagement, and some never do.
Software for a professional firm here means a time-to-fee ledger: hours recorded against an engagement, the engagement carrying its own basis — retainer, fixed fee or time and materials — so unbilled work in progress is a figure you can open and a write-off is a decision somebody made rather than a number that appeared.
A monthly retainer is a fixed number on one side and an open-ended one on the other. The first three months are comfortable. The client learns what you will absorb without complaint, and by month nine the retainer covers roughly half of what leaves the studio. No single request in that sequence was unreasonable, which is exactly why nobody stopped it. The drift only exists as hours against fee, and if the hours were never recorded then it does not exist anywhere at all — it just shows up as a firm that is busier every quarter and no more profitable.
Work in progress is the second problem and the largest asset most firms cannot see. Work delivered and not yet invoiced is real money, and under milestone billing it can be six weeks of the team's output sitting in nobody's ledger. When the fee note finally goes out it is almost always for less than the hours at standard rate, and that difference is either a discount somebody decided to give or a loss nobody noticed. Firms that do not record write-offs are not firms without write-offs; they are firms that are cheaper than they think and cannot say by how much.
Time recording fails for one reason, and it is not discipline. It is dead work for the person doing it — effort that benefits the practice and costs the individual their Friday. A timesheet filled in on Friday for the whole week is fiction written from a calendar, and fiction costed at three hundred ringgit an hour produces confident wrong answers. Entry has to take seconds, default to the engagement the person is already working in, and live in the same place they see their tasks, or you will be buying a reporting layer over invented data.
Then the overseas side, which is where a small firm loses money without ever seeing a transaction. A fee invoiced in dollars and settled six weeks later at a different rate produces a real gain or loss that usually lands nowhere in particular. Foreign clients in some jurisdictions deduct withholding tax at source, so the payment arrives short and the shortfall gets recorded as an underpayment rather than as tax paid on your behalf. Whether it is recoverable depends on the country and the treaty and is your tax agent's question — but if the system never recorded that the deduction happened, the question never gets asked.
Generic invoicing software models a customer and a document. A professional firm needs the thing in between: the engagement, which has a basis, a duration and a budget, and against which both hours and money accumulate.
Your actual documents, plus the client everyone in the office already knows is under water. We work out what the system would have had to record to make that drift visible in month three, and build backwards from there.
Retainer, fixed fee and time and materials modelled properly, with rates by role and dated. Before any timesheet exists, because the basis determines what a recorded hour means.
Defaulted to the engagement the person is already in, keyboard-driven, editable for the last few days and closed after that. If entering a day of time takes longer than a minute, the data will be invented on Friday and everything built on it will be wrong.
Chargeable hours at rate against what has been billed, per engagement and per client, correct at the moment it is opened. This is the screen a partner or principal checks before deciding whether the firm is actually busy.
Raise the fee, relieve the WIP, and record the difference with a reason. Rendered as a PDF in your own layout and numbering, because a fee note is a document a client keeps.
Fee currency and rate on the document, settlement recorded against it, withholding recorded as withholding. Disbursements marked rebillable at capture rather than at billing.
Your Supabase project, your Vercel account, your GitHub. Time and fee history is the record of what your practice actually did, and it should not need our cooperation to reach.
Billing a client outside Malaysia does not put you outside e-invoicing. The buyer has no Malaysian TIN, and LHDN publishes a general TIN for exactly this situation — EI00000000020 for foreign buyers — so the document is still issued and still validated. What the system has to hold is the buyer's country, address and identification, because a general TIN is a placeholder for one field rather than permission to leave the buyer block empty.
An invoice in a currency other than ringgit has to carry the original currency, the exchange rate used and the ringgit equivalent, with the rate taken on the invoice date from an acceptable source. That makes the rate part of the document rather than something the accounts department applies afterwards, and it means a fee note reproduced two years later has to show the rate it was validated at, not today's. A system that recalculates on reprint will quietly disagree with LHDN's copy of the same document.
The buying side is where professional firms are most exposed, because their cost base is mostly things bought from abroad: software subscriptions, a foreign specialist on a project, an overseas partner doing part of the work. A foreign supplier will never issue you a Malaysian e-invoice, and acquisition from a foreign supplier is one of LHDN's named self-billed situations. For a firm like this, self-billing is not an edge case to handle later — it is a monthly routine that needs a screen, and it is the capability most tools bought for the sales side simply do not have.
Retainers are recurring documents, and the period each one covers has to be legible on the face of it. A client's accounts payable receiving twelve near-identical invoices in a year pays the ones it can tell apart and queries the rest, which is a cash-flow problem dressed as a formatting detail. On tax, professional services sit in the service tax net where the firm is registered, at the standard rate — which went to 8 per cent while F&B stayed at 6 — with a business-to-business exemption designed to stop the same service being taxed twice down a chain of suppliers. Whether you are registered, and whether that exemption reaches what you buy and sell, is your tax agent's call. The last e-invoice mandate band came into force on 1 January 2026 for turnover up to RM5 million, with those under RM1 million exempt.
Published tiers, seen from a firm that sells hours. Fixed price from scope, on your own accounts, with no per-seat licence when the team grows from six to twelve.
Engagements with their bases, time entry, rates by role, WIP, fee notes that relieve WIP with the write-off recorded, roles and audit trail.
Enterprise tier. The above plus retainer periods and drift, disbursements, multi-currency with settlement and withholding, payroll on the same login, MyInvois including self-billed documents, migration and training.
Published add-on rate. Fee notes generated from data you already hold, in your own layout and numbering, where a full ledger is more than the practice needs right now.