RIFT - billing leak detection RIKO - the AI front desk RISE - social media (coming soon) Is it for me? Security Philanthropy Blog Login Cart Free leak report
← Back to Blog Guide

The Practice Billing Audit: How to Check Your Clinic Isn't Losing Money

12 Aug 2026 · 7 min read

A practice billing audit is a systematic cross-check between the work your clinic has delivered and the money it has actually collected. It takes about an hour with reports that already exist in your practice management system, and it answers six questions: was every appointment invoiced, was every invoice finalised, was every invoice paid, did every claim come back, are your rates current, and does the diary agree with the ledger. Most practices that run it for the first time find something.

This guide is written for the person who actually does the books in a small healthcare or allied health practice - the practice manager, the receptionist who inherited billing, or the clinician-owner doing admin on Sunday night. It assumes no accounting background. Each check below says what to look for, why the money hides there, and where to find it in the two systems we know best, Zanda and Cliniko.

If you want the background on why these gaps exist at all - and how consistently the research finds them - we've covered that separately in Revenue Leakage in Private Practice. The short version: clinics lose money in many small, quiet gaps, not one dramatic hole, and none of the gaps show up on the screens anyone looks at day to day.

Check 1: Appointments that were never invoiced

This is the purest form of leakage: the session happened, the clinician did the work, and no invoice was ever raised. It happens on busy days, with squeezed-in appointments, after cancellation fees your policy allows but nobody raised, and whenever the person who invoices is also the person answering the phone.

The check: list every completed appointment for the period, and confirm each one has an invoice attached. Anything without one is either deliberately free (fine - a meet and greet, a rebook) or missed revenue. We've written step-by-step instructions for finding unbilled appointments in Cliniko and in Zanda.

Check 2: Invoices stuck in draft

A draft invoice is easy to mistake for a finished one. It exists, it has an amount on it, it shows up when you search for the client - but it has never been issued, so nobody has been asked to pay it. Drafts accumulate when invoicing gets interrupted: the phone rings mid-invoice, the amount needed checking, the funder details weren't confirmed yet.

The check: filter your invoice list to draft or unissued status. Every draft older than a few days needs a decision - finalise it and send it, or delete it deliberately. A draft that sits is money that has been counted in someone's head and never requested in the real world. (This check is system-dependent: Cliniko has a draft invoice status; Zanda does not - in Zanda an invoice is live the moment it is saved, so the equivalent gap is the appointment that never got an invoice at all, which is Check 1.)

Check 3: Invoices past your own payment terms

Sent is not paid. Australian small-business invoices settle late on average - the Xero data below is measured from real bank reconciliations, not surveys - and healthcare adds a complication most industries don't have: third-party payers. When an insurer, employer or plan manager owes the money, the person who received the care never feels the debt.

6.9 days late
The average lateness of small-business invoice payments in Australia in the March quarter of 2026 - and that average only counts invoices that did get paid.
Xero Small Business Insights, March quarter 2026

The check: run your aged receivables (money owed to you, grouped by how old it is) and chase everything older than your own stated payment terms. Not everything a year old - everything past your terms. The longer this check is skipped, the more awkward each individual conversation feels, which is exactly how balances age past the point anyone chases them. We've gone deeper on why this happens - and what actually fixes it - in Why Unpaid Invoices Pile Up in Allied Health.

Check 4: Claims that went out and never came back

Medicare, DVA, WorkCover, health funds, NDIS plan managers: every funder adds a failure mode that private billing doesn't have. A claim can be lodged and simply never return - bounced on a lapsed referral, a wrong item number, an expired plan - and the rejection lands in a portal nobody checks daily.

The check: reconcile what you lodged against what was actually paid, for each funder, and rework anything that bounced. This is the least fun check on the list and the one most practices skip, which is why rejected claims are such a reliable place to find money. If your remittances live in a payment terminal or funder portal rather than your practice software, this check has to happen there - it will not surface on its own.

Check 5: Are you billing this year's rates?

Fee schedules move. NDIS pricing arrangements are reissued every July, Medicare items are indexed, health funds revise their schedules - and practice software keeps billing whatever rate was typed into it last. A practice that set its NDIS line items in 2024 and hasn't touched them since may be quietly underbilling every funded session it delivers.

The check: once a year, compare the rates in your system against the current published schedules for every funder you bill. July changes make August and September the months this check pays best. We've written a dedicated walkthrough for NDIS providers in NDIS Price Guide 2026-27: Is Your Practice Still Billing Last Year's Rates?

Check 6: Does the diary agree with the ledger?

The last check is the least structured and catches what the others can't: money that was handled outside the system. "*paid $50 cash" written in an appointment note. A session marked attended with the fee waived by whoever was at the desk that day. A package of sessions sold once and never tracked down to the individual sessions it covered.

The check: skim the appointment notes and daily takings for the period and ask whether anything happened with money that never became a proper transaction. This one resists automation-by-report because the evidence is free text - which is exactly why it's worth a human skim once a month.

Making the audit actually happen

None of the six checks is hard. The honest problem is that they are nobody's job, and the research on what that costs is consistent:

6-12 working days a year
What one in five Australian small businesses spends chasing overdue payments - more than a week of full-time work, every year, asking to be paid for work already done.
GoCardless / YouGov survey, August 2025

If you run the audit manually, three habits make it stick:

The alternative is to make the cross-checking continuous instead of monthly. That is what we built RIFT for: it reads the billing side of your Zanda or Cliniko data - read-only, nothing clinical - runs these checks continuously, and drafts the chase for what it finds, so an uninvoiced session surfaces the week it happened rather than whenever someone next runs the report.

Run the whole audit in one upload

RIFT's first leak report is free: it reads your practice data and shows the money earned but never collected, by category, over the last 12 months. Read-only, and your first report is on screen in minutes.

Get your free leak report