Company tax and franking worksheets

A company gets the lower tax rate only if it is a base rate entity: aggregated turnover under the year’s threshold, and no more than 80% of assessable income being base rate entity passive income. Get that test wrong and the company pays the wrong income tax for the year. The rate used to frank a dividend is a separate imputation question that turns on prior-year facts, not this year’s test; this tool keeps the two apart and the worked example below does not determine a maximum franking rate. It runs the test, tracks the franking account and checks the Division 203 benchmark rule.

Software demonstration only. Ryan Duguid is not a registered tax agent or BAS agent. The examples assume supplied facts. Have a registered tax agent verify those facts and review their tax treatment before relying on a result. A successful calculation is not confirmation of entitlement, liability or compliance.

Reference release the-exchequer-tally/v0.1.7, tagged source on GitHub. The worked example on this page is pinned to that release so its figures stay reproducible; the current release on 13 October 2026 is the-exchequer-tally/v0.1.8, which pip install the-exchequer-tally fetches. It needs Python 3.11 or later and changes no calculation.

Published 24 August 2026. Last reviewed 13 October 2026.

This tool runs the base rate entity test and tracks a franking account ledger covering PAYG instalments, company tax paid, dividends paid and received, and refunds. It works out franking deficit tax and checks the 30% offset reduction for supported debit types. The debit types and applicable exceptions determine whether a reduction applies, as explained under Common questions. It also checks distributions in a franking period against the Division 203 benchmark rule for over-franking tax and franking debit shortfalls.

It builds the statement fields a dividend distribution statement needs, too. That is a review helper for the statement, not a lodgement or a compliance certificate.

What this tool does

  • Tests whether a company is a base rate entity for a given financial year, against the aggregated turnover threshold and the 80% passive income test.
  • Tracks a franking account ledger and checks franking deficit tax and any offset reduction for supported debit types, subject to the conditions under Common questions.
  • Checks distributions in a franking period against the Division 203 benchmark rule, for over-franking tax and franking debit shortfalls.

Limits

Nothing this engine produces is tax, legal or financial advice, an assessment or a determination. Outputs are review aids: confirm every rate, threshold and consequence against the current law and the entity’s facts before acting, and leave lodgement decisions with a registered practitioner.

Get it

Needs Python 3.10 or later. Install the reference release in your Python environment.

python -m pip install "the-exchequer-tally==0.1.7"

Published package and release instructions.

Source on GitHub · Primary sources: ATO company tax rates and Division 203 of the Income Tax Assessment Act 1997.

Software issue using fictional data? Open an issue or email with the tool named in the subject. If the email link does not open, the contact page spells the address out.

Fictional worked example

With uv installed, run this pinned package directly. No clone or input file is needed.

For the income year ending in 2025, use fictional aggregated turnover of $4,500,000, assessable income of $800,000 and base rate entity passive income of $120,000. The caller must establish those classifications before running the test.

uvx --from the-exchequer-tally==0.1.7 the-exchequer-tally bre-test --fy 2025 --turnover 4500000 --assessable 800000 --passive 120000

Selected output from release 0.1.7, verified on 26 September 2026. The command exits 0 and also prints its statutory basis and review boundary.

Passive Income Ratio:    15.00% (<= 80%: True)
Base Rate Entity:        True
Applicable Tax Rate:     25.0%

Try a refusal

Change --fy 2025 to --fy 2017. Release 0.1.7 has no bundled rate table for that year. It exits 2 and returns no rate.

This verifies the published command’s behaviour on fictional inputs. It does not determine the maximum franking rate, which uses prior-year facts, or replace review of the company’s circumstances.

Common questions

What makes a company a base rate entity?

Two tests, both of which must hold for the income year: aggregated turnover below that year’s threshold, and no more than 80% of assessable income being base rate entity passive income.

What is franking deficit tax?

Tax payable where a franking account ends the year in deficit. Where the deficit exceeds 10% of the credits arising in the year, the offset may be reduced by 30%, but only for the part of the liability that relates to franking debits arising under the provisions listed in section 205-70(8). Check the debit types and any exceptions before applying the reduction.

What is the benchmark rule?

Under Division 203, a company must frank all distributions in a franking period to the same extent. Departing from the benchmark franking percentage produces over-franking tax or a franking debit shortfall.