The Taxable Payments Annual Report (TPAR) is an ATO return that lists the total payments your business made to contractors during the financial year, due each 28 August. If you operate in building and construction, cleaning, courier or road freight, IT, or security and surveillance services, and you pay subcontractors, you almost certainly have to lodge one. Odoo’s Australian fiscal localisation can produce a TPAR straight from the supplier bills already in your accounts — provided the contractor flags and account tags were set correctly from the start of the year. This guide covers how.

What the Taxable Payments Annual Report is and who must lodge it

TPAR exists for one reason: the ATO wants to match what businesses say they paid contractors against what those contractors declared as income. Building, cleaning and courier work is cash-heavy and contractor-heavy, so it’s where income quietly goes unreported. The rule of thumb we give clients is simple — if you pay people who aren’t on your payroll to perform services, and you’re in a listed industry, assume TPAR applies until your accountant tells you otherwise.

Which industries must lodge a TPAR

Six categories of business lodge a TPAR: building and construction; cleaning; courier and road freight; information technology; and security, investigation or surveillance services. A mixed business counts if it earns 10% or more of its income from one of these activities. A Perth landscaping firm that also lays paving, for instance, can be caught by the construction test without ever thinking of itself as a “builder”.

Why the ATO cross-checks TPAR data

Reporting to the ATO via TPAR means your contractor payments are matched, line by line, against the income those contractors lodge in their own returns. A discrepancy flags the contractor, not you — but a business that lodges late, or not at all, draws its own attention. The data-matching is automated and unforgiving, which is exactly why the report has to be accurate, not approximate.

Which contractor payments you actually report — and the exclusions that trip businesses up

This is where most TPAR mistakes happen, and where a generic accounting setup quietly over- or under-reports. You report the gross amount paid to each contractor for their services across the financial year, including GST. You do not report several things that look reportable at first glance, and getting these wrong is the difference between a clean lodgement and an ATO query.

Payments purely for materials — the timber, not the carpentry — sit outside TPAR. Where a contractor’s invoice bundles labour and materials and isn’t itemised, you report the whole amount; the ATO’s position is that you report what’s on the invoice. Incidental labour by an employee doesn’t count, because employees go through Single Touch Payroll instead. Unpaid invoices as at 30 June are excluded — TPAR is a cash report, so a bill you received in June but paid in July belongs to next year’s report. Payments to contractors who didn’t quote an ABN are still reported, but they carry a separate treatment we cover below.

In Odoo, these distinctions are handled at the account and fiscal-position level rather than by asking a bookkeeper to remember them each time. Materials-only suppliers sit on accounts that aren’t tagged for TPAR; labour and mixed-service contractors sit on tagged accounts with a TPAR fiscal position. The system applies the rule so the human doesn’t have to.

Setting up contractors and TPAR fiscal positions in Odoo

Odoo produces the TPAR by accumulating tagged bills against flagged contractors through the year. The mechanics are not complicated, but they are unforgiving of a late start — the configuration has to be in place from 1 July, because the report reads historical transactions and can’t tag what was never tagged. Set this up once at the beginning of the financial year and the report assembles itself in August.

The TPAR and TPAR without ABN fiscal positions

The Australian localisation ships two fiscal positions for this purpose: TPAR and TPAR without ABN. A fiscal position is a rule attached to a contact that changes how their transactions are treated. Assign TPAR to a contractor and every bill you post against them is captured for the report; assign TPAR without ABN and Odoo additionally handles the withholding treatment for contractors who haven’t quoted an ABN. Most businesses set the standard TPAR position on their regular subcontractors and forget about it.

Tagging the expense accounts that feed the report

The fiscal position decides which contacts are in scope; the expense accounts decide which payments count. We tag the labour and subcontractor expense accounts — site labour, cleaning wages-to-contractors, courier fees — so that only service payments flow into the report, while a materials or freight-on-goods account stays untagged. This is the step DIY setups miss, and it’s why their first TPAR includes the cost of timber and concrete it shouldn’t.

Doing the setup on contacts and products

For a clean build, the contractor flag lives on the contact and the TPAR treatment follows automatically through the fiscal position. New subcontractors get the position at onboarding, alongside their ABN and bank details for ABA batch payments. Tie it to your supplier onboarding routine and no contractor ever slips through untagged.

TPAR without ABN: the no-ABN fiscal position most Odoo setups miss

Here’s the trap that catches even careful businesses. When a contractor doesn’t quote an ABN on their invoice, the ATO requires you to withhold tax at the top marginal rate — currently 47% — from the payment, and remit it. You still report that contractor on your TPAR. A business that simply pays the full invoice to a no-ABN contractor has under-withheld, and the liability lands on them, not the contractor.

Odoo’s TPAR without ABN fiscal position is built for exactly this. Assign it to the contact and Odoo applies the no-ABN withholding treatment on their bills, keeps the payment reportable, and carries the figure into the annual report. Most setups we audit have the standard TPAR position in place but have never configured the no-ABN variant, because no-ABN contractors are rare — until a casual operator turns up mid-year without one. We configure both positions at setup so the rare case is handled the day it appears, not discovered when the ATO reviews the withholding. The distinction between a genuine contractor and a disguised employee is one both the ATO and Fair Work police, so getting the ABN treatment right also keeps you on the correct side of that line.

How Odoo generates the TPAR report

With the fiscal positions and account tags in place, producing the report is a menu click. The discipline isn’t in running it — it’s in trusting the number, and that comes from validating before you lodge.

Where the report lives and what it totals

The TPAR sits under Accounting → Reporting in Odoo Enterprise, alongside the BAS report. Run it for the financial year and Odoo totals, for each flagged contractor, the gross of every tagged bill you posted and paid in the period. The report shows the contractor’s name, ABN, address and the total paid including GST — the four fields the ATO wants. Because it reads off posted documents, the figure is only ever as good as the tagging behind it, which is why the setup work matters more than the lodgement.

Reviewing and validating before lodgement

Open the report, set the period to the financial year, and read it sceptically. Check that every regular subcontractor appears and that the totals look right against what you know you paid. Scan for materials suppliers that shouldn’t be there — a sign of a mis-tagged account — and for missing ABNs that flag a no-ABN treatment you forgot to apply. The drill-down is your audit trail; use it before you lodge, not after the ATO asks.

Lodging the TPAR: the 28 August deadline, the file format, and how Odoo exports it

The TPAR is due by 28 August each year for the financial year just ended, and unlike Single Touch Payroll there’s no live ATO connection in standard Odoo — you export and lodge. Odoo produces the report data you transfer into your lodgement channel; you then file through ATO Online services for business, through Standard Business Reporting (SBR) enabled software, or via your registered tax agent using Online services for agents. Smaller businesses often lodge directly; contractor-heavy operations usually hand the figures to their accountant alongside the year-end work.

The penalty for lodging late is concrete enough to take seriously. The failure-to-lodge penalty starts at one penalty unit — currently $330 — for each 28 days the report is overdue, capped at five units for a small business, so roughly $1,650 if you let it slide a full reporting cycle. That’s a meaningful number for a sum that comes out of data you already hold. The rule of thumb: a TPAR set up correctly in July costs nothing in August, while a TPAR ignored until the deadline costs the penalty plus the scramble to reconstruct twelve months of contractor payments by hand.

TPAR within the Australian fiscal localisation, alongside BAS, GST and STP

TPAR isn’t a standalone product — it’s one report in the same Australian fiscal package that produces your BAS and runs your payroll. The contractor bills that feed TPAR are the same bills that carry GST into your BAS and GST reporting; the employees TPAR deliberately excludes are the ones reported through Single Touch Payroll in Odoo payroll. One database, one supplier ledger, three obligations drawing on the same data.

The TPAR report engine sits in Odoo Enterprise, which runs around $34 AUD per user per month for the full app suite as of early 2026. Odoo Community carries the chart of accounts and the fiscal positions but not the one-click reporting engine, so a Community business assembles the TPAR by exporting and totalling tagged bills manually — workable, but it gives back the time the localisation was meant to save. If you’re moving from MYOB or Xero, both of which generate a TPAR of their own, the migration question is whether your contractor flags and ABNs come across cleanly so the first Odoo report reconciles.

Getting TPAR right from 1 July: why setup beats the August scramble

We worked with a Fremantle commercial cleaning company that paid around forty subcontractors and had been building its TPAR in a spreadsheet every August — exporting a year of payments, sorting contractors by hand, chasing missing ABNs after the fact. Two of those contractors had never quoted an ABN, so the business had under-withheld for two years without realising. The annual report took the best part of a week and still went in nervous.

When we moved them to Odoo, the fix was upstream of the report. Every subcontractor got a TPAR or TPAR without ABN fiscal position at onboarding; the labour and subcontractor accounts were tagged, the materials account left clean; and the no-ABN withholding was applied from the first bill. By the following August the report was a five-minute review rather than a week of reconstruction, and the withholding gap was closed before it grew. The principle holds across every contractor-heavy business we implement for, from construction job costing to operators who report subcontractor payments through field service work: the report is easy when the year was tagged, and painful when it wasn’t.


If you pay contractors and want TPAR — along with BAS, GST and payroll — set up to lodge correctly from your first financial year on Odoo, that’s the kind of work we do. Our implementation method builds Australian compliance in from day one rather than bolting it on at deadline. Reach out through the contact form and we’ll respond within a business day.

Frequently asked.

What is the TPAR taxable payments annual report?

The Taxable Payments Annual Report is an ATO return that lists the total payments a business made to contractors for services during the financial year. It reports each contractor's name, ABN, address and the gross amount paid, including GST. It is separate from your BAS and is due by 28 August.

What is the tax grid in Odoo?

The tax grid is how Odoo maps each tax amount to a line on an Australian report. A tax code carries a grid tag — a BAS label like 1A, or a TPAR contractor flag — and posted invoices and bills roll up into the report through those tags. Right grid, automatic report.

Who is included in TPAR?

Your TPAR includes contractors, subcontractors, consultants and independent operators you paid for relevant services during the year. It does not include employees — they are reported through Single Touch Payroll. Payments purely for materials, and unpaid invoices as at 30 June, are also excluded.

What does report to ATO via TPAR mean?

It means lodging your contractor payments with the ATO each year so they can match what you reported paying against what those contractors declared as income. The ATO uses TPAR data to find under-reported income in contractor-heavy industries. You lodge through ATO Online services, Standard Business Reporting software, or a registered tax agent.

Who is required to submit tpar?

Businesses that pay contractors and operate in building and construction, cleaning, courier or road freight, information technology, or security, investigation and surveillance services. Government entities and some businesses that earn a share of income from these services also lodge. If you only pay employees, you do not lodge a TPAR.