09 — The second gap
What an Australian payout run owes, and what ours does not know
The section above is the gap everybody expects. This one is less obvious and matters more,
because it sits under the part of the platform we are proudest of.
When a payout cycle closes, the software writes one bill per practitioner from
amounts frozen at the moment each booking was made, under the contract version that was in force
then. That is genuinely unusual and it is why groups buy us. In Australia, that document
and that payment carry four obligations the engine does not know about, and there are two
more that never reach it at all.
One worked example, used for every item below
Northside Psychology, Melbourne. Fifty contractor practitioners, mostly
private-pay with some WorkCover work, paid on a fortnightly cycle.
Dr Sarah Chen sees 40 sessions a fortnight at a
A$180 client fee on a 65% revenue share — so
A$117 a session, A$4,680 a fortnight, A$121,680 a year. Across fifty
practitioners at that rate the practice pays out about A$6.08 million a year in
practitioner fees.
Every number below is worked against Sarah and then scaled. They show the size of each
question, not the answer to it — see the note at the end of this section.
Superannuation, and the seven-day clock
What happens now. The fortnight closes. The run creates a bill for Sarah for
A$4,680. Nothing else happens.
What the law expects. Section 12(3) of the Superannuation Guarantee (Administration)
Act treats a contractor as an employee for superannuation when they are engaged
wholly or principally for their own labour and must do the work personally.
A psychologist paid per session — who plainly cannot send somebody else to see the client — is
very likely inside that test. Quoting an ABN does not take her out of it, and
neither does the contract calling her a contractor. The rate is 12%, so
A$561.60 a fortnight — A$14,601.60 a year for Sarah, about
A$730,000 a year across fifty practitioners, none of which we calculate.
And since 1 July 2026 the contribution must reach her fund within
seven business days of the payment. The old habit of batching super up and paying it
after the quarter has ended is gone. Getting it wrong is expensive in an unusual way: the
superannuation guarantee charge is not tax-deductible, and carries a penalty
of up to 60% of the shortfall plus daily interest. Size of the fix: the largest here.
A design change, not a setting.
GST on the payout lines
What happens now. Sarah's line reads Session — A$117.00, with
no tax code at all.
Why that is wrong either way. There are two possible treatments and the software has
picked neither. The clinic's supply to the patient is generally GST-free
as a recognised health service. Sarah's supply to the clinic is a different supply and
is commonly taxable at 10%, though it depends how the arrangement is written.
A blank tax field is not the safe middle — it is an unanswered question copied
onto every line of every bill. If the taxable treatment is right, her fortnight should be
A$5,148, not A$4,680: she is short A$468, and the practice
never claims that back on its BAS — about A$608,000 a year of input tax
credits across fifty practitioners. Size of the fix: small. Odoo Community's Australian
module already ships every code needed, including GST-free and a no-ABN variant. The run has to
choose one and stamp it.
Recipient created tax invoices
What happens now. Sarah does not invoice the practice — the practice invoices
itself on her behalf, because it is the system that holds the session data. That is
exactly what an RCTI arrangement is, and our document is an ordinary vendor bill headed
"Bill".
What the ATO requires. Four things, and we have none of them: a written RCTI
agreement with that practitioner in which she agrees not to issue her own tax invoices
for the same work; the recipient registered for GST; the document carrying the words
"Recipient created tax invoice"; and both ABNs on its face. A worked failure:
Sarah leaves in March, the practice is reviewed in November, and the input tax credits on her
first three months can be denied because the document was never a valid tax invoice — the same
A$608,000, arriving a second time by another route. The agreement cannot be signed
retrospectively by somebody who has left. Size of the fix: small to medium, and we
already own the hard part — our e-signature layer signs practitioner contracts on the clinic's
own instance, so the agreement is a template and a link.
No-ABN withholding
What happens now. Michael starts on the 3rd, sees clients immediately, and has not sent
his ABN through. The fortnight closes and the run pays him A$2,000.
What the law expects. Where a supplier does not quote an ABN, the payer must
withhold 47% and remit it. Michael should receive A$1,060 and
the ATO A$940. Because we paid him the full amount, the practice now
owes that A$940 out of its own pocket, plus penalties — it does not get to recover it
from him, because failing to withhold makes the payer liable. Where it bites is onboarding:
a practitioner who starts before the paperwork is finished, which in a growing group is the
normal case rather than the exception. Size of the fix: small, and the pattern is
already in the product — we withhold pay automatically when a contract is unsigned. This is the
same mechanism pointed at a different field.
The ABA batch payment file
What happens now. The cycle closes and the run produces fifty approved bills. Then
somebody opens the bank and keys fifty payments by hand — a BSB, an account number, an amount
and a reference each. At a realistic ninety seconds apiece that is seventy-five minutes
every fortnight, about thirty-two hours a year, and
1,300 chances a year to transpose a digit and pay the wrong practitioner.
What an ABA file is. A plain text file — one header, one line per payee, one trailer
with a total the bank checks. Every Australian bank accepts one. Upload it once and all fifty
are paid. Odoo Community does not include it; it is an Enterprise module.
Size of the fix: medium and mechanically simple — the format is published and short. This is
the gap an operations manager notices on day one, which makes it worth more in a demonstration
than its engineering cost suggests.
Compensable schemes — and our qualifying question is wrong
What happens now. A session is billed to a client or to a company. That is the whole
model.
What Australian allied health actually looks like. A Melbourne practice treats somebody
injured at work. The payer is neither the patient nor Medicare — it is the
employer's WorkSafe insurer. That engagement needs a claim number, an
approved provider, a treatment plan approved before the sessions
happen, scheme item codes on a scheme fee schedule rather than the
practice's own fee, and a receivable tracked against the claim because insurers pay slowly. And
it differs in every state: WorkSafe Victoria, icare NSW, WorkCover Queensland, ReturnToWorkSA,
WorkCover WA, plus TAC for Victorian transport accidents and CTP insurers in NSW and
Queensland. Nine schemes, not one rail. This is the strategically important
one, because it is a different gap from Medicare and we have been treating it as the same gap.
We qualify on "are Medicare rebates your revenue model?" — a private-pay Melbourne physiotherapy
group answers no, buys, and then finds the quarter of its revenue coming through WorkSafe has
nowhere to live. Size of the fix: large, and it is a market-entry decision. But the
qualifying question is a sales fix available today, before any code is written.
Single Touch Payroll — the one to decline
What this is. Northside has fifty contractors and six employees — reception, a
practice manager, a bookkeeper. For those six, the practice must report to the ATO
on or before every payday: gross, tax withheld and super liability per person,
split under Phase 2 into ordinary time, overtime, bonuses and allowances as separate components
rather than one figure.
Where we stand, and the recommendation. Odoo Community carries no Australian payroll at
all. We should decline this rather than build it, and say so early. Groups in
this segment already run Xero, MYOB or a dedicated payroll product for their handful of
employees, and replacing that is not a fight worth having. What we should do instead is make
the contractor side above genuinely correct, so the boundary between the two systems is clean —
employees over there, practitioners here.
Already shipping
Australian accounts, GST codes and the BAS report
The Australian accounting module installs automatically alongside accounting in Odoo Community.
It brings the Australian chart of accounts, the full tax set — 10% GST, GST-free
sales, input-taxed, export and the contractor-reporting variants — and
the BAS report itself, with its labels already wired to the tax codes.
Worked example. At quarter end the practice opens the BAS. G1 total
sales, 1A GST on sales, 1B GST on purchases are filled from the transactions
themselves, with no spreadsheet in between. Which is exactly why the GST item above
matters: the report is already there and already correct — it is the payout lines arriving with
no tax code that leave a hole in it.
Already shipping
Peppol eInvoicing on the A-NZ profile
Peppol support and the Australia–New Zealand invoice profile are both in Odoo Community.
Worked example. Northside invoices a corporate EAP client, or a government
department that requires eInvoicing. Instead of emailing a PDF that somebody re-keys into their
accounts-payable system, the invoice travels over the Peppol network and lands directly
in the buyer's payables queue — nothing re-typed, no lost attachment, and materially
faster payment. Australian government agencies are required to be able to receive these.