What this is
Every figure on this site comes from one rate table, checked against the Australian Taxation Office and last verified on 21 September 2026. This page exposes that engine two ways: an ordinary JSON API for programs, and a Model Context Protocol server so an AI assistant can call it as a tool during a conversation.
There is no API key and no registration, because this site publishes no contact address and so has no way to issue one. There is no rate limit today either. If either changes, it will be announced here before it takes effect.
The endpoints are read-only. They accept a number, return a number, and store nothing — see the privacy policy for what the server does and does not receive.
Calculate a repayment
Pass repayment income. It is broader than taxable income: it adds reportable fringe benefits, total net investment loss, reportable super contributions and exempt foreign employment income.
curl "https://hecscalculator.com/api/v1/repayment?income=95000"
Optional parameters: frequency
(week, fortnight, month,
year — default year),
financial_year (2026-27 or the prior year), and the
four annual add-backs listed above. Add-backs are annual by definition and
are never scaled by frequency.
The same endpoint accepts a JSON body on POST, which is easier when you have several add-backs:
{
"income": 1826.92,
"frequency": "week"
}
Weekly and fortnightly figures are annualised at 52 and 26 pay periods.
That is a projection: a year containing an extra pay period produces a
higher actual income, and the ATO assesses the annual figure. Every
response says so in its assumptions array rather than leaving
you to infer it.
Read the rate table
curl "https://hecscalculator.com/api/v1/rates"
Returns the thresholds and marginal rates for both published income years, the indexation rate for every year since 2013, the components of repayment income, the loan types covered, the ATO source URL, the date that ATO page was last updated, and the date these figures were last verified against it. A rate table without a verifiable date is not worth consuming, so the provenance travels with the data.
Machine-readable description of both endpoints: /openapi.json.
Connect an AI assistant
The MCP endpoint is https://hecscalculator.com/mcp, over Streamable HTTP. It is
stateless and unauthenticated, so there is no session to establish and no
token to obtain. Two tools are exposed:
calculate_hecs_repayment and get_hecs_rates.
For a client that reads a JSON config file:
{
"mcpServers": {
"hecs": {
"url": "https://hecscalculator.com/mcp"
}
}
}
Or speak to it directly. It is JSON-RPC 2.0 on a single POST:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "calculate_hecs_repayment",
"arguments": {
"income": 95000
}
}
}
A tool result comes back both as text and as
structuredContent, so a model can quote the number or a program
can read the field. Rejected arguments come back as a tool error with the
reason, not as a protocol error, so an assistant can correct the call
instead of giving up.
Terms, in plain words
Use it. Attribution is appreciated and not required. The results are general information, not financial or tax advice, and this site is not affiliated with, endorsed by, or connected to the ATO or the Commonwealth of Australia. ATO material is Commonwealth copyright, republished under the permission the ATO grants to copy and adapt it, and it must not be presented in any way that suggests the ATO endorses this site.
The figures are reviewed each year before 1 June 2027. If you
depend on them, read rates_verified_on in the response rather
than trusting the freshness of whatever you cached.