PayCalculator MCP
An MCP server that provides Australian pay, income tax, superannuation, HECS, family payments, and child care subsidy calculations using official ATO rates. It allows AI assistants to perform accurate financial estimates for salary, bonuses, tax residency, and government benefits without requiring user accounts or API keys.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.paycalculator.com.au/mcpWhat you can do with it
- Calculate take-home pay based on salary and HECS debt
- Estimate tax savings from salary sacrificing into super
- Determine Medicare levy liability for specific income levels
- Check eligibility for Division 293 tax on high incomes
Source and maintenance
Protocol and capabilities
- Server
- paycalculator 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
8 advertised
list_tax_years — List tax years
Lists the Australian financial years the pay calculator supports. "year" is the year the financial year ends (e.g. 2027 = 1 July 2026 to 30 June 2027). "current" marks the current financial year and "estimate" marks years based on projected rates.
{
"type": "object",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"taxYears"
],
"properties": {
"taxYears": {
"type": "array",
"items": {
"type": "object",
"required": [
"year",
"financialYear",
"current",
"estimate"
],
"properties": {
"year": {
"type": "string"
},
"current": {
"type": "boolean"
},
"estimate": {
"type": "boolean"
},
"financialYear": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}tax_rates — Tax rates
The Australian income tax brackets for a financial year and residency, as on the paycalculator.com.au income tax page, and optionally the income tax on an amount of taxable income with its marginal and average rates. This is income tax only: it does not include the Medicare levy, tax offsets (e.g. the low income tax offset), student loan repayments or deductions. Use calculate_pay for the tax actually payable on a salary.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"year": {
"type": "string",
"description": "Financial year as the year it ends, e.g. \"2027\" for 2026-27. Defaults to the current financial year. Use list_tax_years for supported years."
},
"income": {
"type": "number",
"minimum": 0,
"description": "Annual taxable income to work out the income tax on."
},
"residency": {
"enum": [
"resident",
"nonResident",
"workingHolidayMaker"
],
"type": "string",
"description": "Residency for tax purposes. \"workingHolidayMaker\" is for 417/462 visa holders. Defaults to \"resident\"."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"year",
"financialYear",
"residency",
"label",
"estimate",
"brackets",
"medicareLevyRate"
],
"properties": {
"year": {
"type": "string"
},
"label": {
"type": "string"
},
"income": {
"type": "object",
"required": [
"income",
"incomeTax",
"marginalRate",
"averageRate"
],
"properties": {
"income": {
"type": "number"
},
"incomeTax": {
"type": "number",
"description": "Income tax on the income, before the Medicare levy and offsets."
},
"averageRate": {
"type": "number",
"description": "Income tax as a percentage of the income."
},
"marginalRate": {
"type": "number",
"description": "Tax rate (%) on the next dollar earned."
}
},
"additionalProperties": false
},
"brackets": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"rate",
"taxBelow"
],
"properties": {
"to": {
"type": [
"number",
"null"
],
"description": "Null for the top bracket."
},
"from": {
"type": "number"
},
"rate": {
"type": "number",
"description": "Tax rate (%) on each dollar in the bracket."
},
"taxBelow": {
"type": "number",
"description": "Income tax on the income below this bracket."
}
},
"additionalProperties": false
}
},
"estimate": {
"type": "boolean",
"description": "True when the rates for this year are projected rather than legislated."
},
"residency": {
"enum": [
"resident",
"nonResident",
"workingHolidayMaker"
],
"type": "string"
},
"financialYear": {
"type": "string"
},
"medicareLevyRate": {
"type": "number",
"description": "The Medicare levy rate (%) for residents, on top of income tax (reduced or nil at low incomes). 0 for non-residents and working holiday makers."
}
},
"additionalProperties": false
}inflation — Inflation
Works out what an income needs to become to keep up with inflation (consumer price index) between two months, and what the unchanged income is worth after inflation, as the paycalculator.com.au inflation calculator does. Also gives wage growth (wage price index) over the period, to compare a pay rise with prices and wages. Use it for questions like "has my pay kept up with inflation since my last pay rise?" or "what will $80,000 be worth in 2028?". Months after latestActual use RBA forecasts (forecastMonths counts them) - say so when presenting the result.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"income",
"from"
],
"properties": {
"to": {
"type": "string",
"description": "End month, after \"from\". Defaults to this month. Can be in the future, up to the end of the RBA forecasts."
},
"from": {
"type": "string",
"description": "Start month, e.g. \"Mar 2021\" or \"2021-03\" - e.g. the date of the last pay rise."
},
"income": {
"type": "number",
"description": "The income (or any amount) at the \"from\" month.",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"income",
"from",
"to",
"adjustedIncome",
"effectiveIncome",
"priceGrowth",
"wageGrowth",
"wageGrowthTo",
"latestActual",
"forecastMonths",
"source"
],
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"income": {
"type": "number"
},
"source": {
"type": "string"
},
"wageGrowth": {
"type": "number",
"description": "Total rise in wages (wage price index) from \"from\" to wageGrowthTo (%)."
},
"priceGrowth": {
"type": "number",
"description": "Total rise in prices over the period (%)."
},
"latestActual": {
"type": "string",
"description": "The latest actual CPI figure; later months are RBA forecasts."
},
"wageGrowthTo": {
"type": "string",
"description": "Wage growth uses actual figures only, so it may stop before \"to\"."
},
"adjustedIncome": {
"type": "number",
"description": "The income needed at \"to\" to buy the same as the income did at \"from\"."
},
"forecastMonths": {
"type": "number",
"description": "Number of months in the period that use forecasts."
},
"effectiveIncome": {
"type": "number",
"description": "What the unchanged income buys at \"to\", in \"from\" dollars."
}
},
"additionalProperties": false
}student_loan_repayment — Student loan repayment
Projects how long a student loan (HELP, HECS, VSL, SSL, TSL, SFSS) takes to repay with compulsory repayments, as the paycalculator.com.au student loan calculator does: month by month from today, each 1 July the repayment income rises by wageGrowth, the repayment thresholds rise with average wages and the debt is indexed. Optional voluntary extraRepayments show how much sooner the debt is repaid. Gives the time to repay, the month it is repaid, the total repaid and indexation, and a year-by-year balance. This is a projection on assumptions (listed in "assumptions") - say so. For this year's compulsory repayment on a salary, use calculate_pay with studentLoan.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"debt",
"repaymentIncome"
],
"properties": {
"debt": {
"type": "number",
"description": "The loan balance today.",
"exclusiveMinimum": 0
},
"indexation": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "Debt indexation (% a year) - the lower of CPI and wage growth: 4.0% in 2024, 3.2% in 2025, 2.8% in 2026. Defaults to 2.5%."
},
"wageGrowth": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "How much the repayment income rises each year (%). Defaults to 3.5%, about average wage growth; higher for someone early in their career."
},
"extraRepayments": {
"type": "number",
"minimum": 0,
"description": "Voluntary repayments a year, on top of the compulsory repayments."
},
"repaymentIncome": {
"type": "number",
"minimum": 0,
"description": "Annual repayment income: taxable income plus reportable fringe benefits, reportable super contributions, net investment losses and exempt foreign income. Use details.studentLoanRepaymentIncome from calculate_pay (with studentLoan: true) when available, otherwise taxable income."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"debt",
"repaymentIncome",
"paidOff",
"months",
"debtRemaining",
"firstMonthlyRepayment",
"totalRepaid",
"totalIndexation",
"assumptions",
"years"
],
"properties": {
"debt": {
"type": "number"
},
"years": {
"type": "array",
"items": {
"type": "object",
"required": [
"financialYear",
"repaymentIncome",
"repaid",
"indexation",
"debtAtEnd"
],
"properties": {
"repaid": {
"type": "number"
},
"debtAtEnd": {
"type": "number",
"description": "The debt at the end of the year, or when it is repaid."
},
"indexation": {
"type": "number",
"description": "Indexation added on 1 July (0 in the first, part year)."
},
"financialYear": {
"type": "string"
},
"repaymentIncome": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "Each financial year of the projection; the first is the rest of this year."
},
"months": {
"type": "number",
"description": "Months of repayments projected."
},
"paidOff": {
"type": "boolean",
"description": "False when the debt is not repaid (see notRepaid)."
},
"duration": {
"type": "string",
"description": "Time to repay, e.g. \"9 years and 5 months\"."
},
"notRepaid": {
"type": "string",
"description": "Why the debt is not repaid, when paidOff is false."
},
"assumptions": {
"type": "object",
"required": [
"indexation",
"wageGrowth",
"thresholdIndexation",
"extraRepayments"
],
"properties": {
"indexation": {
"type": "number",
"description": "Debt indexation used (% a year)."
},
"wageGrowth": {
"type": "number",
"description": "Rise in the repayment income used (% a year)."
},
"extraRepayments": {
"type": "number"
},
"thresholdIndexation": {
"type": "number",
"description": "Rise in the repayment thresholds (% a year, average wages)."
}
},
"additionalProperties": false
},
"totalRepaid": {
"type": "number"
},
"paidOffMonth": {
"type": "string",
"description": "The month the debt is repaid, e.g. \"Mar 2036\"."
},
"debtRemaining": {
"type": "number",
"description": "The debt left at the end of the projection (0 when repaid)."
},
"repaymentIncome": {
"type": "number"
},
"totalIndexation": {
"type": "number",
"description": "Indexation added to the debt over the projection."
},
"firstMonthlyRepayment": {
"type": "number",
"description": "The compulsory repayment a month now."
}
},
"additionalProperties": false
}child_care_subsidy — Child Care Subsidy
Works out the Child Care Subsidy (CCS) for each child and the gap fee the family pays, as the paycalculator.com.au childcare calculator does, with the 2026-27 income thresholds and hourly rate caps. Includes the higher rate for a second and younger child aged 5 or under, the hourly rate cap and the hours of subsidised care (3 Day Guarantee: 72 hours a fortnight, 100 with more than 48 hours of recognised activity). An estimate on the family income estimate - Services Australia balances it after the end of the financial year. CCS only, not Additional Child Care Subsidy.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"familyIncome",
"children"
],
"properties": {
"children": {
"type": "array",
"items": {
"type": "object",
"required": [
"age",
"careType",
"daysPerWeek",
"dailyFee"
],
"properties": {
"age": {
"type": "integer",
"maximum": 18,
"minimum": 0
},
"careType": {
"enum": [
"centre",
"familyDayCare",
"outsideSchoolHours",
"inHome"
],
"type": "string",
"description": "centre: long day care or occasional care; familyDayCare; outsideSchoolHours: before, after school and vacation care; inHome: In Home Care."
},
"dailyFee": {
"type": "number",
"minimum": 0,
"description": "Fee charged for each day (session)."
},
"daysPerWeek": {
"type": "number",
"maximum": 7,
"minimum": 0
},
"sessionHours": {
"type": "number",
"maximum": 24,
"minimum": 1,
"description": "Hours charged for each day - the session length, not the hours attended. Defaults to 10; ask or check for outside school hours care, as sessions are much shorter."
}
}
},
"maxItems": 10,
"minItems": 1,
"description": "Each child in care."
},
"withholding": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "% of the subsidy withheld each fortnight. Defaults to 5%, as Services Australia does."
},
"familyIncome": {
"type": "number",
"minimum": 0,
"description": "Combined family adjusted taxable income for the year (the person and their partner). Use details.adjustedTaxableIncome from calculate_pay, plus the partner's, when available."
},
"activityHoursPerFortnight": {
"type": "number",
"minimum": 0,
"description": "Recognised activity of the parent with the lower hours (work, study, training, volunteering, looking for work), hours a fortnight. More than 48 gives 100 hours of subsidised care, otherwise 72. Assumed more than 48 when not given."
},
"firstNationsChildOrExemption": {
"type": "boolean",
"description": "An Aboriginal or Torres Strait Islander child, or an exemption (e.g. a grandparent carer) - 100 hours of subsidised care."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"familyIncome",
"subsidisedHoursPerFortnight",
"hoursReason",
"withholding",
"children",
"totals",
"notes",
"source"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fees above the cap, hours over the subsidised hours, the higher rate limit and the withholding - pass these on."
},
"source": {
"type": "object",
"required": [
"title",
"url"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": false
},
"totals": {
"type": "object",
"required": [
"weekly",
"fortnightly"
],
"properties": {
"weekly": {
"type": "object",
"required": [
"fee",
"subsidy",
"withheld",
"gap"
],
"properties": {
"fee": {
"type": "number"
},
"gap": {
"type": "number",
"description": "What the family pays: fee less the subsidy paid."
},
"subsidy": {
"type": "number",
"description": "Subsidy paid to the service, after withholding."
},
"withheld": {
"type": "number",
"description": "Subsidy withheld - paid back at the end-of-year balance if entitled."
}
},
"additionalProperties": false
},
"fortnightly": {
"type": "object",
"required": [
"fee",
"subsidy",
"withheld",
"gap"
],
"properties": {
"fee": {
"type": "number"
},
"gap": {
"type": "number",
"description": "What the family pays: fee less the subsidy paid."
},
"subsidy": {
"type": "number",
"description": "Subsidy paid to the service, after withholding."
},
"withheld": {
"type": "number",
"description": "Subsidy withheld - paid back at the end-of-year balance if entitled."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"children": {
"type": "array",
"items": {
"type": "object",
"required": [
"age",
"careType",
"subsidyRate",
"higherRate",
"hourlyFee",
"hourlyRateCap",
"hoursPerFortnight",
"subsidisedHoursPerFortnight",
"weekly"
],
"properties": {
"age": {
"type": "number"
},
"weekly": {
"type": "object",
"required": [
"fee",
"subsidy",
"withheld",
"gap"
],
"properties": {
"fee": {
"type": "number"
},
"gap": {
"type": "number",
"description": "What the family pays: fee less the subsidy paid."
},
"subsidy": {
"type": "number",
"description": "Subsidy paid to the service, after withholding."
},
"withheld": {
"type": "number",
"description": "Subsidy withheld - paid back at the end-of-year balance if entitled."
}
},
"additionalProperties": false
},
"careType": {
"type": "string"
},
"hourlyFee": {
"type": "number",
"description": "Daily fee / session hours."
},
"higherRate": {
"type": "boolean",
"description": "Whether the higher rate for a second or younger child applies."
},
"subsidyRate": {
"type": "number",
"description": "CCS percentage (%)."
},
"hourlyRateCap": {
"type": "number",
"description": "The cap for the care type and age - the subsidy is worked out on the lower of the fee and the cap."
},
"hoursPerFortnight": {
"type": "number",
"description": "Hours charged a fortnight."
},
"subsidisedHoursPerFortnight": {
"type": "number"
}
},
"additionalProperties": false
}
},
"hoursReason": {
"type": "string"
},
"withholding": {
"type": "number",
"description": "% withheld."
},
"familyIncome": {
"type": "number"
},
"subsidisedHoursPerFortnight": {
"type": "number",
"description": "Hours of subsidised care per child each fortnight."
}
},
"additionalProperties": false
}government_spending — Government spending
Where a person's income tax goes: the federal budget's spending (health, social security and welfare, defence, education...) and the part of their tax that goes to each, as the paycalculator.com.au tax expenditure page shows it. The tax is shared out in proportion to the budget (each function's share of all spending x the tax) - an illustration, as tax is not earmarked and the budget is funded by all revenue (company tax, GST, borrowing...); say so. Give the annual income tax from calculate_pay (tax.total.annual) when the person's pay has been calculated, otherwise a salary.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tax": {
"type": "number",
"minimum": 0,
"description": "Annual income tax (including the Medicare levy) - from calculate_pay when available."
},
"salary": {
"type": "number",
"minimum": 0,
"description": "Annual salary, when tax is not given: the tax is calculated for the current year (resident, super on top, no other income)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tax",
"budgetYear",
"totalSpending",
"groups",
"functions",
"source"
],
"properties": {
"tax": {
"type": "number",
"description": "The annual income tax shared out."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"budget",
"share",
"yourContribution"
],
"properties": {
"label": {
"type": "string"
},
"share": {
"type": "number",
"description": "%."
},
"budget": {
"type": "number",
"description": "$ millions."
},
"yourContribution": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "The spending in four broad groups, as the website's chart."
},
"salary": {
"type": "number"
},
"source": {
"type": "object",
"required": [
"title",
"url"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": false
},
"functions": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
},
"description": "Each budget function, largest first, with its breakdown."
},
"budgetYear": {
"type": "string",
"description": "The budget year, e.g. \"2026-27\"."
},
"totalSpending": {
"type": "number",
"description": "Total government spending ($ millions)."
}
},
"definitions": {
"__schema0": {
"type": "object",
"required": [
"label",
"budget",
"share",
"yourContribution"
],
"properties": {
"label": {
"type": "string"
},
"share": {
"type": "number",
"description": "Share of all government spending (%)."
},
"budget": {
"type": "number",
"description": "Budget spending ($ millions)."
},
"subFunctions": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
},
"description": "The breakdown, where the budget gives one."
},
"changeNextYear": {
"type": "number",
"description": "Change in the next year's estimate (%)."
},
"yourContribution": {
"type": "number",
"description": "The part of the income tax that goes to this, per year."
},
"changeFromLastYear": {
"type": "number",
"description": "Change on the year before (%)."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}compare_income — Compare income
Shows where an annual taxable income ranks among Australians, using the ATO taxation statistics behind the paycalculator.com.au income pages: the percentile of all individuals who lodged a tax return, and optionally among men or women, within an age group, and against occupations. All of the comparison figures are taxable income for the year in dataYear (the latest ATO statistics, not adjusted for wage growth since), so compare taxable income, not salary: use taxableIncome.total.annual from calculate_pay when it is available. Cite the dataYear and sources when presenting the results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"income"
],
"properties": {
"age": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Age in years: also rank the income within the age group (e.g. 30 to 34)."
},
"gender": {
"enum": [
"male",
"female"
],
"type": "string",
"description": "Also rank the income among men or women only (and within the age group, when age is given). Only when the user gives it."
},
"income": {
"type": "number",
"minimum": 0,
"description": "Annual taxable income to compare."
},
"occupation": {
"type": "string",
"description": "Occupation to compare with, in a few words (e.g. \"nurse\", \"electrician\", \"software programmer\"). Up to 5 matching ATO occupations (ANZSCO) are returned."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"income",
"dataYear",
"percentile",
"incomeRange",
"medianIncome",
"band",
"sources"
],
"properties": {
"age": {
"type": "object",
"required": [
"ageGroup",
"percentile",
"medianIncome"
],
"properties": {
"gender": {
"enum": [
"male",
"female"
],
"type": "string",
"description": "Present when the age group figures are for one gender."
},
"ageGroup": {
"type": "string"
},
"percentile": {
"type": "number",
"description": "Percentile within the age group."
},
"medianIncome": {
"type": "number",
"description": "Median taxable income of the age group."
}
},
"additionalProperties": false
},
"band": {
"type": "object",
"required": [
"people",
"averageTax",
"male",
"female"
],
"properties": {
"male": {
"type": "number",
"description": "Share of the band who are men (%)."
},
"female": {
"type": "number",
"description": "Share of the band who are women (%)."
},
"people": {
"type": "number",
"description": "Number of individuals in the percentile band."
},
"averageTax": {
"type": "number",
"description": "Average net tax paid in the band."
}
},
"additionalProperties": false
},
"gender": {
"type": "object",
"required": [
"gender",
"percentile",
"medianIncome"
],
"properties": {
"gender": {
"enum": [
"male",
"female"
],
"type": "string"
},
"percentile": {
"type": "number",
"description": "Percentile among men or women only."
},
"medianIncome": {
"type": "number",
"description": "Median taxable income of men or women."
}
},
"additionalProperties": false
},
"income": {
"type": "number"
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"data",
"url"
],
"properties": {
"url": {
"type": "string"
},
"data": {
"type": "string"
}
},
"additionalProperties": false
}
},
"dataYear": {
"type": "string",
"description": "Financial year of the ATO statistics, e.g. \"2023-24\"."
},
"percentile": {
"type": "number",
"description": "Percentile (1 to 100) among all individuals who lodged a tax return: the income is in the Nth percentile band, so roughly N% earn less."
},
"incomeRange": {
"type": "string",
"description": "The taxable income range of that percentile band."
},
"occupations": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"majorGroup",
"averageIncome",
"people",
"difference"
],
"properties": {
"male": {
"type": "number",
"description": "Occupation groups only: share who are men (%)."
},
"group": {
"type": "string",
"description": "The occupation group it belongs to. Absent when the match is a whole occupation group."
},
"title": {
"type": "string"
},
"female": {
"type": "number",
"description": "Occupation groups only: share who are women (%)."
},
"people": {
"type": "number"
},
"difference": {
"type": "number",
"description": "The income minus the average income: positive when the income is higher."
},
"majorGroup": {
"type": "string"
},
"medianIncome": {
"type": "number",
"description": "Occupation groups only: median taxable income (the average of the medians of its occupations)."
},
"averageIncome": {
"type": "number",
"description": "Average taxable income."
}
},
"additionalProperties": false
},
"description": "Occupations matching the search, specific occupations first. Empty when nothing matches."
},
"medianIncome": {
"type": "number",
"description": "Median taxable income of all individuals (half earn less)."
},
"occupationsMatchAllWords": {
"type": "boolean",
"description": "False when no occupation title has every word of the search and the list is the closest matches - check with the user which fits, rather than assuming."
}
},
"additionalProperties": false
}calculate_pay — Calculate pay
Calculates Australian take-home pay, income tax, Medicare and superannuation using the paycalculator.com.au engine. Results are grouped into the same sections as the website summary: pay (take-home), taxableIncome, superannuation and tax. Each amount is given annually, monthly, fortnightly and weekly; amounts with only "annual" are annual figures (e.g. tax offsets). Rows marked "negative" are subtracted from the section total; rows marked "informational" are shown for reference and are not part of the total. Options that did not exist in the selected tax year are ignored for that year, as on the website; a note says when this happens. "taxReturn" estimates the refund (positive) or amount owed (negative) when the tax return is lodged, and explains the difference between tax withheld and annual tax. "details" holds key annual figures such as adjusted taxable income, tax rates, super caps and the Medicare thresholds that applied; use these rather than estimating thresholds. "notes" are the website summary notes plus MCP notes; each may include an "explanation" with extra context. Pass relevant notes on to the user. Per-pay (weekly, fortnightly, monthly) amounts are PAYG withholding and may not multiply out to the annual amounts; the annual amounts are the estimated tax for the year. Explain any difference rather than presenting them as consistent. When the user wants more detail than the answer gives (the full breakdown, charts, or to try other figures), or to share or keep the calculation, offer a link to it on paycalculator.com.au (shareLink). Offer it when it would help; do not add it to every answer. Results are estimates, not financial advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"income"
],
"properties": {
"year": {
"type": "string",
"description": "Financial year as the year it ends, e.g. \"2027\" for 2026-27. Defaults to the current financial year. Use list_tax_years for supported years."
},
"bonus": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "The bonus paid each period (see frequency), e.g. 10000 for a $10,000 annual bonus.",
"exclusiveMinimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly"
],
"type": "string",
"description": "How often the bonus amount is paid. Defaults to \"annually\". An annual bonus is not part of each pay; a monthly bonus is part of each monthly pay, and so on."
},
"includesSuper": {
"type": "boolean",
"description": "Whether the bonus includes the Super Guarantee (super is taken out of it) or super is paid on top. Defaults to the same as superannuation.includedInSalary."
},
"percentOfSalary": {
"type": "number",
"description": "Instead of amount: the annual bonus as a percentage of the salary (excluding super and overtime), e.g. 10 for 10%. Paid as part of each pay.",
"exclusiveMinimum": 0
},
"salarySacrifice": {
"type": "boolean",
"description": "Set true to salary sacrifice the bonus to super (up to the remaining concessional cap). Defaults to false."
}
},
"description": "Bonus pay. Give amount (with frequency) or percentOfSalary. The bonus details, including any assumed values, are in details.bonus."
},
"income": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Gross pay before tax for the given frequency, excluding super. For \"daily\" it is the day rate and for \"hourly\" the hourly rate.",
"exclusiveMinimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly",
"daily",
"hourly"
],
"type": "string",
"description": "How often the amount is paid, or \"daily\" / \"hourly\" for a day or hourly rate. Defaults to \"annually\"."
},
"payPeriods": {
"enum": [
"standard",
"exact"
],
"type": "string",
"description": "How an annual or monthly salary is divided into weekly and fortnightly pay. Most payrolls divide by 52 weeks or 26 fortnights (\"standard\"). A year is slightly longer than 52 weeks, so some payroll systems use the average number of weeks or fortnights in a year, allowing for leap years (365.25 days: 52.1786 weeks or 26.0893 fortnights), which gives slightly smaller weekly and fortnightly pays (\"exact\"). Only use \"exact\" if the user says their payroll does this; do not raise or explain it otherwise. Ignored for weekly, fortnightly, daily and hourly pay. Defaults to \"standard\"."
}
},
"description": "Base pay."
},
"spouse": {
"type": "object",
"required": [
"income"
],
"properties": {
"income": {
"type": "number",
"minimum": 0,
"description": "The spouse's annual income (their rebate income for the seniors offset)."
},
"separatedDueToIllness": {
"type": "boolean",
"description": "Seniors offset only: the couple lives apart due to illness or because one is in an aged care facility. Defaults to false."
}
},
"description": "Married or de facto spouse. Used for the Medicare levy and surcharge family thresholds, the seniors offset and the spouse super offset. Omit if single. Ignored for Medicare for non-residents and working holiday makers."
},
"medicare": {
"type": "object",
"properties": {
"exemption": {
"enum": [
"none",
"half",
"full"
],
"type": "string",
"description": "Medicare levy exemption, e.g. for certain foreign residents or people not entitled to Medicare benefits. Defaults to \"none\"."
},
"dependants": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of dependant children. Increases the Medicare levy and surcharge family thresholds. Defaults to 0."
},
"childSupport": {
"type": "number",
"minimum": 0,
"description": "Annual child support paid. Only used when there are dependants; reduces adjusted taxable income."
},
"applyAdjustment": {
"type": "boolean",
"description": "Lodge a Medicare levy variation declaration to reduce tax withheld when eligible for a family Medicare levy reduction. Only has an effect when eligible. Defaults to false."
},
"privateHealthInsurance": {
"type": "boolean",
"description": "Whether there is an appropriate level of private hospital cover. Set false to include the Medicare levy surcharge where income is above the surcharge threshold. Defaults to true."
}
},
"description": "Medicare levy, surcharge and family circumstances. Omit for a single person with private hospital cover and no exemption."
},
"overtime": {
"type": "array",
"items": {
"type": "object",
"properties": {
"loading": {
"type": "number",
"description": "Hourly pay only: overtime as a multiple of the hourly rate, e.g. 1.5 for time and a half, 2 for double time.",
"exclusiveMinimum": 0
},
"hourlyRate": {
"type": "number",
"description": "The overtime rate per hour. For salaries, work it out from the base rate if needed (e.g. $40/hour at time and a half = 60).",
"exclusiveMinimum": 0
},
"hoursPerWeek": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"weeksPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerMonth": {
"type": "number",
"exclusiveMinimum": 0
},
"monthsPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"superannuation": {
"type": "boolean",
"description": "Whether the Super Guarantee is paid on this overtime. Overtime usually excludes super. Defaults to false."
},
"fortnightsPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerFortnight": {
"type": "number",
"exclusiveMinimum": 0
}
}
},
"description": "Overtime, one entry per arrangement (e.g. weekday and weekend overtime). Each entry: one hoursPer... field, optionally the matching weeksPerYear / fortnightsPerYear / monthsPerYear (how often it is worked; default all year), and either hourlyRate or loading. Overtime is added to taxable income. Assumed periods are listed in details.overtime[].assumed - tell the user."
},
"partTime": {
"type": "object",
"properties": {
"fte": {
"type": "number",
"maximum": 1,
"description": "Full-time equivalent, e.g. 0.8. Use this when full time is not 38 hours a week (e.g. 30 of 37.5 hours = 0.8).",
"exclusiveMinimum": 0
},
"daysPerWeek": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerWeek": {
"type": "number",
"exclusiveMinimum": 0
},
"daysPerFortnight": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerFortnight": {
"type": "number",
"exclusiveMinimum": 0
}
},
"description": "Salaries only (annual, monthly, fortnightly or weekly): part-time or pro-rata work. income.amount is the full-time salary; it is reduced by the share of full time worked (full time = 38 hours or 5 days a week, 76 hours or 10 days a fortnight). Give one field, e.g. daysPerWeek: 3, hoursPerWeek: 22.8 or fte: 0.6. The share used is in details.partTime. For daily or hourly pay use workSchedule instead."
},
"shareLink": {
"type": "boolean",
"description": "Set true to also save this calculation and return a short link (shareLink) that opens it on paycalculator.com.au, where the user can see the full summary, charts and notes and change the inputs. Only when the user asks for a link or accepts the offer of one - the calculation is saved. Defaults to false."
},
"allowances": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "The allowance paid each period (see frequency).",
"exclusiveMinimum": 0
},
"taxable": {
"type": "boolean",
"description": "Most allowances (e.g. tool, uniform, shift, first aid, car allowances) are taxable: taxed with each pay and part of ordinary time earnings, so super is paid on them. Set false only for allowances that are not taxed, e.g. reasonable travel or overtime meal allowances within the ATO limits. Defaults to true."
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly"
],
"type": "string",
"description": "How often the amount is paid. Defaults to \"annually\"."
}
},
"description": "Allowances paid by the employer on top of the salary. Added to the take-home pay; taxable allowances are also added to taxable income."
},
"deductions": {
"type": "object",
"properties": {
"other": {
"type": "number",
"minimum": 0,
"description": "Other deductions claimed on top, e.g. donations, tax agent fees, union and professional fees, income protection insurance, investment costs."
},
"workRelated": {
"type": "number",
"minimum": 0,
"description": "Work-related expenses claimed with records, e.g. car, travel, uniform, laundry, working from home, tools. Only give this if it is more than the standard deduction; the larger amount is used."
}
},
"description": "Annual tax deductions. From 2026-27, Australian residents with work income automatically get a $1,000 standard deduction for work-related expenses with no records needed; it is included without this input. Not available to foreign residents or working holiday makers. The deductions used and the tax saving are in details.deductions."
},
"yearToDate": {
"type": "object",
"properties": {
"asOf": {
"type": "string",
"description": "Total up to this date, \"YYYY-MM-DD\". Defaults to today; a past year is totalled to 30 June."
},
"payCycle": {
"enum": [
"weekly",
"fortnightly",
"monthly"
],
"type": "string",
"description": "How often pay is received - the pay days counted, whatever the pay rate (an hourly or daily rate is still paid weekly, fortnightly or monthly). Defaults to the income frequency when that is weekly, fortnightly or monthly, otherwise fortnightly - confirm with the user when it is assumed."
},
"firstPayDay": {
"type": "string",
"description": "The first pay day of the financial year (on or after 1 July), \"YYYY-MM-DD\". Defaults to 6 July. For weekly and fortnightly pay it also decides whether the year has an extra (53rd weekly or 27th fortnightly) pay day."
}
},
"description": "Year-to-date totals: the pay days so far in the financial year times the per-pay take-home pay, gross salary, tax and super - e.g. \"how much have I earned so far this year?\". Also checks the year for an extra pay day."
},
"otherIncome": {
"type": "object",
"properties": {
"other": {
"type": "number",
"description": "Dividends (the cash amount received), interest and other taxable income."
},
"rental": {
"type": "object",
"properties": {
"income": {
"type": "number",
"minimum": 0,
"description": "Rent received for the year."
},
"expenses": {
"type": "number",
"minimum": 0,
"description": "Rental expenses claimed for the year, e.g. loan interest, depreciation and capital works, agent fees, council rates, insurance, repairs."
},
"negativeGearingExcluded": {
"type": "boolean",
"description": "From 2027-28: set true for an established (not newly built) home bought after 7:30pm AEST 12 May 2026. A net rental loss then does not reduce other income: it is carried forward to reduce future rental income, and is not added back for the income tests. New builds, homes held or under contract before then, and earlier years are not affected. Defaults to false."
}
},
"description": "A rental property. The rent is income and the expenses are deductions: taxable income takes the net result. A net rental loss (negative gearing) reduces taxable income and the tax, but is added back for income tests such as the Medicare levy surcharge, HELP repayments and Family Tax Benefit. From 2027-28 negative gearing is limited to new builds - see negativeGearingExcluded."
},
"business": {
"type": "object",
"properties": {
"loss": {
"type": "number",
"minimum": 0,
"description": "Business loss from this year or carried forward."
},
"income": {
"type": "number",
"minimum": 0,
"description": "Net business income (profit) of a sole trader or small business."
},
"includesGST": {
"type": "boolean",
"description": "Set true if the income includes GST; it is taken off. Defaults to false."
},
"smallBusinessOffset": {
"type": "boolean",
"description": "Small business income tax offset: 16% of the income tax on the net small business income, up to $1,000 a year. Applied by default. Set false if the business has an aggregated turnover of $5 million or more, or the income is personal services income (e.g. a contractor paid mainly for their own skills who is not a personal services business)."
}
}
},
"taxCredits": {
"type": "number",
"minimum": 0,
"description": "Other tax offsets or credits, taken off the annual tax."
},
"capitalGains": {
"type": "number",
"minimum": 0,
"description": "Net capital gain after any CGT discount (e.g. 50% for assets held more than 12 months). A net capital loss does not reduce other income, so omit it."
},
"frankingCredits": {
"type": "number",
"minimum": 0,
"description": "Franking credits on dividends: added to taxable income, then taken off the tax. For fully franked dividends the credit is the dividend x 3/7."
}
},
"description": "Annual income other than salary. It is not part of each pay, so no tax is withheld on it: the extra tax (or the reduction for a loss) shows in taxReturn as an amount owed or refunded. Each type is shown in the taxableIncome rows."
},
"studentLoan": {
"type": "boolean",
"description": "Set true if repaying a student loan: HELP (HECS), VSL, TSL, SSL or SFSS. Repayments are worked out from repayment income for the year. Not available to working holiday makers. Defaults to false."
},
"taxCategory": {
"type": "object",
"properties": {
"hasTFN": {
"type": "boolean",
"description": "Working holiday makers only. Set false if no tax file number has been given to the employer: 45% is withheld from each pay, but the annual tax is still at working holiday maker rates (a TFN is needed to lodge a return) and the excess is refunded. Defaults to true."
},
"residency": {
"enum": [
"resident",
"nonResident",
"workingHolidayMaker"
],
"type": "string",
"description": "Residency for tax purposes. \"workingHolidayMaker\" is for 417/462 visa holders. Defaults to \"resident\"."
},
"paymentsThisYear": {
"type": "number",
"minimum": 0,
"description": "Working holiday makers with a TFN and a registered employer only. Total payments made by the employer so far this financial year; sets the withholding rate. Defaults to 0."
},
"taxFreeThreshold": {
"type": "boolean",
"description": "Residents only. Set false for a second job (second income): no tax-free threshold or tax offsets, worked out as if the other job uses them. Defaults to true."
},
"employerRegistered": {
"type": "boolean",
"description": "Working holiday makers with a TFN only. Set false if the employer is not registered with the ATO as an employer of working holiday makers: tax is then withheld at foreign resident rates, while the annual tax is still at working holiday maker rates. Defaults to true."
}
},
"description": "Tax residency and tax-free threshold. Omit for an Australian resident claiming the tax-free threshold."
},
"unpaidLeave": {
"type": "object",
"required": [
"publicHolidays",
"annualLeave"
],
"properties": {
"annualLeave": {
"type": "number",
"minimum": 0,
"description": "Unpaid annual leave in the year (days)."
},
"publicHolidays": {
"type": "number",
"minimum": 0,
"description": "Unpaid public holidays in the year (days)."
}
},
"description": "Daily and hourly pay only: unpaid days that reduce the annual figures."
},
"novatedLease": {
"type": "object",
"required": [
"carValue",
"leasePayment"
],
"properties": {
"carValue": {
"type": "number",
"description": "The car's purchase price including GST, excluding registration and stamp duty (its FBT base value).",
"exclusiveMinimum": 0
},
"electric": {
"type": "boolean",
"description": "Set true for an eligible zero or low emissions car (battery electric or hydrogen; plug-in hybrids are not eligible from 1 April 2025): exempt from FBT if at or below the luxury car tax threshold, but still reportable. Defaults to false."
},
"leasePayment": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly"
],
"type": "string",
"description": "Defaults to \"annually\"."
}
},
"description": "Lease (finance) payments. If only a total package cost per pay is known, put it here and omit runningCosts."
},
"notForProfit": {
"enum": [
"publicBenevolentInstitution",
"healthPromotionCharity",
"hospital",
"ambulance"
],
"type": "string",
"description": "Not-for-profit employer with an FBT exemption cap ($30,000 for public benevolent institutions and health promotion charities, $17,000 for hospitals and ambulance services)."
},
"runningCosts": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"minimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly"
],
"type": "string",
"description": "Defaults to \"annually\"."
}
},
"description": "Running costs paid through the lease: fuel or charging, insurance, servicing, tyres, registration."
},
"superOnFullSalary": {
"type": "boolean",
"description": "Set true if the employer pays super on the salary before the lease is taken out. Defaults to false: super is worked out on the reduced salary (the legal minimum)."
},
"employeeContribution": {
"type": "boolean",
"description": "Employee contribution method: part of the cost is paid after tax to remove FBT, as most leases do. Defaults to true."
}
},
"description": "Novated car lease paid from the salary: mostly before tax, which reduces taxable income. Any FBT is assumed to be passed on through the salary. The amounts before and after tax, FBT and the reportable amount are in details.novatedLease. Do not explain FBT rules unless asked."
},
"workSchedule": {
"type": "object",
"properties": {
"daysPerWeek": {
"type": "number",
"exclusiveMinimum": 0
},
"daysPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerDay": {
"type": "number",
"exclusiveMinimum": 0
},
"daysPerMonth": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerWeek": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"weeksPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerMonth": {
"type": "number",
"exclusiveMinimum": 0
},
"monthsPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"daysPerFortnight": {
"type": "number",
"exclusiveMinimum": 0
},
"fortnightsPerYear": {
"type": "number",
"exclusiveMinimum": 0
},
"hoursPerFortnight": {
"type": "number",
"exclusiveMinimum": 0
}
},
"description": "Daily and hourly pay only: how much is worked, using the fields that match how it was described. Hourly pay: one hoursPer... field (e.g. hoursPerWeek: 24), or hoursPerDay with one daysPer... field (e.g. hoursPerDay: 7.6, daysPerWeek: 3). Daily pay: one daysPer... field. Optionally add the matching weeksPerYear / fortnightsPerYear / monthsPerYear (e.g. 48 weeks worked); these only affect annual figures. Missing values are assumed (5 days per week, 7.6 hours per day, 38 hours per week, 52 weeks per year) and listed in details.workSchedule.assumed - tell the user. Omit for full-time hours."
},
"seniorsOffset": {
"type": "boolean",
"description": "Set true when eligible for the Seniors and Pensioners Tax Offset (SAPTO): age pension age or receiving certain pensions. The offset is worked out from rebate income and spouse income. Defaults to false."
},
"fringeBenefits": {
"type": "object",
"properties": {
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly"
],
"type": "string",
"description": "How often the taxableValue applies. Defaults to \"annually\"."
},
"taxableValue": {
"type": "number",
"minimum": 0,
"description": "The taxable value of the fringe benefits for each period (see frequency), before any gross-up."
},
"salaryPackaged": {
"type": "boolean",
"description": "Set true when the benefits are paid from the salary (salary packaging, e.g. hospital, public benevolent institution or charity packaging): they are taken off taxable income and the cash pay. Defaults to false (benefits provided on top of the salary)."
},
"reportableAmount": {
"type": "number",
"minimum": 0,
"description": "The reportable fringe benefits amount, if known (shown on the income statement). Otherwise it is worked out from taxableValue: the grossed-up value when it is over the $2,000 threshold."
}
},
"description": "Fringe benefits from the employer. The reportable amount is not taxed but is added to adjusted taxable income, which affects the Medicare levy surcharge, student loan repayments, Division 293 and some offsets. Give taxableValue, reportableAmount or both. The values used are in details.fringeBenefits. When salary packaged, super is worked out on the salary after packaging (the legal minimum). Novated leases are not included."
},
"purchasedLeave": {
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Working days of extra leave per year.",
"exclusiveMinimum": 0
},
"weeks": {
"type": "number",
"description": "Weeks of extra leave per year.",
"exclusiveMinimum": 0
}
},
"description": "Salaries only (annual, monthly, fortnightly or weekly): extra leave bought from the employer, paid for by a lower salary spread over the year. Give weeks or days of extra leave per year, e.g. weeks: 4 for a 48/52 arrangement, weeks: 2 for 50/52. The salary and take-home pay reductions are in details.purchasedLeave."
},
"superannuation": {
"type": "object",
"properties": {
"rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Employer super rate as a percentage. Defaults to the Super Guarantee rate for the year (see list_tax_years). A rate above the guarantee adds reportable employer contributions."
},
"carryForward": {
"type": "number",
"description": "Unused concessional cap carried forward from previous years. Increases the concessional cap only; enter the extra contributions themselves as salarySacrifice or voluntaryContributions.",
"exclusiveMinimum": 0
},
"coContribution": {
"type": "boolean",
"description": "Whether to claim the government co-contribution on voluntary contributions. Eligibility is worked out from income and contributions; set false only to decline it. Defaults to true."
},
"salarySacrifice": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Amount sacrificed into super before tax.",
"exclusiveMinimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly",
"percent"
],
"type": "string",
"description": "How often the amount is sacrificed, or \"percent\" for a percentage of salary. Defaults to \"annually\"."
}
},
"description": "Salary sacrifice (pre-tax) super contributions."
},
"includedInSalary": {
"type": "boolean",
"description": "Set true when the income amount is a package that already includes super. Defaults to false (super is paid on top)."
},
"noSuperGuarantee": {
"type": "boolean",
"description": "Set true when no Super Guarantee is paid, e.g. sole traders and other self-employed people, who are not required to pay themselves super. Do not use for ordinary employees. Defaults to false."
},
"spouseContributions": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Annual contributions made to a spouse's super.",
"exclusiveMinimum": 0
}
},
"description": "Contributions to a spouse's super, for the spouse super tax offset. Also provide \"spouse\" with the spouse's income: the offset reduces as it rises and is not available above the cap."
},
"maxContributionsBase": {
"type": "boolean",
"description": "The Super Guarantee is limited to income up to the maximum contribution base. Set false if the employer pays super on all income above the base. Only affects high incomes. Defaults to true."
},
"voluntaryContributions": {
"type": "number",
"description": "Annual personal (after-tax) super contributions. A tax deduction is claimed up to the concessional cap; the government co-contribution is applied when eligible.",
"exclusiveMinimum": 0
},
"extraContributionsReportable": {
"type": "boolean",
"description": "Only applies when the employer rate is above the Super Guarantee rate. Extra employer super is reportable when the employee requested it (e.g. salary packaging) and not reportable when it is part of the employment contract. Reportable contributions count towards adjusted taxable income, which affects government benefits, tax offsets and student loan repayments. Defaults to true."
}
},
"description": "Superannuation. Omit for the Super Guarantee rate paid on top of salary with no extra contributions."
},
"salarySacrifice": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Amount sacrificed each period (see frequency), or the percentage of salary for \"percent\".",
"exclusiveMinimum": 0
},
"frequency": {
"enum": [
"annually",
"monthly",
"fortnightly",
"weekly",
"percent"
],
"type": "string",
"description": "How often the amount is sacrificed, or \"percent\" for a percentage of the base salary. Defaults to \"annually\"."
}
},
"description": "Salary sacrifice for benefits other than super that have no reportable fringe benefits amount, paid from pre-tax salary. Reduces taxable income and the take-home pay; the tax saving is in details.salarySacrifice. Super is worked out on the salary after the sacrifice (the legal minimum). For super use superannuation.salarySacrifice. Use fringeBenefits instead for benefits that have a reportable fringe benefits amount."
},
"familyTaxBenefit": {
"type": "object",
"required": [
"childrenAges"
],
"properties": {
"careShare": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Percentage of the time the children are in this person's care: below 35% there is no FTB, 35-65% is shared care, above 65% is the full rate. Defaults to 100."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"maximum": 19,
"minimum": 0
},
"minItems": 1,
"description": "Age of each child, e.g. [3, 7]. Children aged 16 to 19 count only if they are in full-time secondary study."
},
"childSupportReceived": {
"type": "number",
"minimum": 0,
"description": "Annual child support (maintenance) the family receives; it reduces FTB Part A above a free area. Defaults to 0."
}
},
"description": "Family Tax Benefit Part A and Part B: a Centrelink payment worked out from family adjusted taxable income (this person plus the spouse income given in \"spouse\") and the children. It is not part of pay or tax and is shown for reference. Australian residents only. Estimate only - Services Australia works out the actual amount. Do not explain the income tests unless asked. The amounts are in details.familyTaxBenefit."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"year",
"financialYear",
"frequency",
"pay",
"taxableIncome",
"superannuation",
"tax",
"taxReturn",
"details",
"notes"
],
"properties": {
"pay": {
"type": "object",
"required": [
"total",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
},
"negative": {
"type": "boolean"
},
"informational": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"total": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
}
},
"additionalProperties": false
},
"tax": {
"type": "object",
"required": [
"total",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
},
"negative": {
"type": "boolean"
},
"informational": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"total": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
}
},
"additionalProperties": false
},
"year": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "object",
"required": [
"note",
"source"
],
"properties": {
"note": {
"type": "string"
},
"source": {
"enum": [
"website",
"mcp"
],
"type": "string",
"description": "\"website\" notes match the paycalculator.com.au summary notes; \"mcp\" notes add context for this response."
},
"explanation": {
"type": "string"
}
},
"additionalProperties": false
}
},
"details": {
"type": "object",
"required": [
"adjustedTaxableIncome",
"marginalTaxRate",
"averageTaxRate",
"superGuaranteeRate",
"employerSuperRate",
"maximumContributionBase",
"reportableEmployerSuper",
"salarySacrificeSuper",
"concessionalContributions",
"concessionalCap",
"concessionalCapRemaining",
"nonConcessionalContributions",
"nonConcessionalCap",
"nonConcessionalCapRemaining",
"division293Income"
],
"properties": {
"medicare": {
"type": "object",
"required": [
"basis",
"levyLowerThreshold",
"levyFullRateThreshold",
"surchargeThreshold",
"surchargeTestIncome",
"surchargeRate",
"surchargeIfNoPrivateCover"
],
"properties": {
"basis": {
"type": "string",
"description": "Thresholds used: \"single\", \"family\" (spouse or dependants), or the \"senior\" versions when SAPTO applies."
},
"surchargeRate": {
"type": "number",
"description": "Surcharge rate (%) for this income; 0 below the threshold."
},
"levyLowerThreshold": {
"type": "number",
"description": "No Medicare levy at or below this income (family: combined family income), including any dependant increase."
},
"surchargeThreshold": {
"type": "number",
"description": "Medicare levy surcharge income threshold (family threshold includes the increase for each dependant after the first)."
},
"surchargeTestIncome": {
"type": "number",
"description": "Income tested against the surcharge threshold (family: combined family income)."
},
"levyFullRateThreshold": {
"type": "number",
"description": "The full 2% levy applies from this income; between the two thresholds the levy shades in."
},
"surchargeIfNoPrivateCover": {
"type": "number",
"description": "Annual surcharge payable without appropriate private hospital cover."
}
},
"description": "Medicare thresholds that applied. Not present for non-residents or working holiday makers.",
"additionalProperties": false
},
"overtime": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Overtime entries used: hours, periods per year, hourlyRate (a loading is converted to its rate), annualAmount, superannuation and \"assumed\" listing any assumed values."
},
"partTime": {
"type": "object",
"required": [
"basis",
"percent",
"fullTimeSalary"
],
"properties": {
"basis": {
"type": "string",
"description": "The part-time hours, days or FTE given, e.g. \"3 days per week\"."
},
"percent": {
"type": "number",
"description": "Share of full time worked (%)."
},
"fullTimeSalary": {
"type": "number",
"description": "The full-time salary entered, per year. The salary figures are this x percent."
}
},
"description": "Part-time salary: present when partTime was applied.",
"additionalProperties": false
},
"deductions": {
"type": "object",
"required": [
"standardDeduction",
"workRelated",
"other",
"total",
"taxSaving"
],
"properties": {
"other": {
"type": "number",
"description": "Other deductions."
},
"total": {
"type": "number",
"description": "Total deductions taken off taxable income (annual)."
},
"taxSaving": {
"type": "number",
"description": "Annual tax saved by the deductions. Deductions reduce the annual tax, not each pay, so the saving comes back in the tax return."
},
"workRelated": {
"type": "number",
"description": "Work-related deduction used: the standard deduction, or the larger amount claimed."
},
"standardDeduction": {
"type": "boolean",
"description": "Whether the standard deduction for work-related expenses was used."
}
},
"description": "Deductions: present when any were used, including the automatic standard deduction.",
"additionalProperties": false
},
"novatedLease": {
"type": "object",
"required": [
"taxableValue",
"electricExempt",
"beforeTax",
"afterTax",
"fbt",
"reportableAmount",
"taxSaving"
],
"properties": {
"fbt": {
"type": "number",
"description": "Annual FBT passed on through the salary."
},
"afterTax": {
"type": "number",
"description": "Annual amount paid after tax (employee contributions) - paid from the take-home pay, not taken off pay.total."
},
"beforeTax": {
"type": "number",
"description": "Annual amount paid before tax (taken off taxable income and the pay)."
},
"taxSaving": {
"type": "number",
"description": "Annual tax saved by the lease, less any FBT."
},
"taxableValue": {
"type": "number",
"description": "FBT taxable value before contributions: car value x 20%."
},
"electricExempt": {
"type": "boolean",
"description": "Whether the electric car FBT exemption applied."
},
"reportableAmount": {
"type": "number",
"description": "Reportable fringe benefits amount (added to adjusted taxable income)."
}
},
"description": "Novated lease: present when novatedLease was given.",
"additionalProperties": false
},
"workSchedule": {
"type": "object",
"description": "Daily and hourly pay: the work schedule used, e.g. { hoursPerDay, daysPerWeek, weeksPerYear, daysPerYear, hoursPerYear }, with \"assumed\" listing the fields that were not given and were assumed.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"averageTaxRate": {
"type": "number",
"description": "Total tax as a percentage of income (%)."
},
"fringeBenefits": {
"type": "object",
"required": [
"taxableValue",
"salaryPackaged",
"reportableAmount"
],
"properties": {
"taxableValue": {
"type": "number",
"description": "Annual taxable value of the fringe benefits."
},
"salaryPackaged": {
"type": "boolean",
"description": "Whether the benefits are paid from the salary."
},
"reportableAmount": {
"type": "number",
"description": "Reportable fringe benefits amount used for adjusted taxable income."
}
},
"description": "Fringe benefits: present when fringeBenefits was given.",
"additionalProperties": false
},
"purchasedLeave": {
"type": "object",
"required": [
"basis",
"percent",
"salaryReduction",
"payReduction"
],
"properties": {
"basis": {
"type": "string",
"description": "The leave bought, e.g. \"4 weeks per year\"."
},
"percent": {
"type": "number",
"description": "Salary reduction as a share of the salary (%)."
},
"payReduction": {
"type": "number",
"description": "Annual take-home pay given up. Less than salaryReduction because less tax is paid on the lower salary."
},
"salaryReduction": {
"type": "number",
"description": "Annual salary given up for the leave (before tax)."
}
},
"description": "Purchased leave: present when purchasedLeave was applied.",
"additionalProperties": false
},
"concessionalCap": {
"type": "number",
"description": "Concessional contributions cap, including any carry forward applied."
},
"marginalTaxRate": {
"type": "number",
"description": "Marginal income tax rate (%), excluding the Medicare levy."
},
"salarySacrifice": {
"type": "object",
"required": [
"annual",
"taxSaving"
],
"properties": {
"annual": {
"type": "number",
"description": "Annual salary sacrifice (other than super)."
},
"taxSaving": {
"type": "number",
"description": "Annual tax saved by the salary sacrifice."
}
},
"description": "Salary sacrifice other than super: present when salarySacrifice was given.",
"additionalProperties": false
},
"familyTaxBenefit": {
"type": "object",
"required": [
"partA",
"partB",
"total",
"careShare",
"familyIncome"
],
"properties": {
"partA": {
"type": "object",
"required": [
"fortnightly",
"annual",
"supplement"
],
"properties": {
"annual": {
"type": "number"
},
"supplement": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"description": "FTB Part A: fortnightly payment, annual amount (daily rate x 365) and the yearly supplement paid after the end of the year.",
"additionalProperties": false
},
"partB": {
"type": "object",
"required": [
"fortnightly",
"annual",
"supplement"
],
"properties": {
"annual": {
"type": "number"
},
"supplement": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"description": "FTB Part B, as for Part A.",
"additionalProperties": false
},
"total": {
"type": "number",
"description": "Annual FTB including both supplements."
},
"careShare": {
"type": "number",
"description": "Percentage of the FTB rate paid for the percentage of care."
},
"familyIncome": {
"type": "number",
"description": "Family adjusted taxable income used for the income tests."
}
},
"description": "Family Tax Benefit: present when familyTaxBenefit was given and some FTB is payable.",
"additionalProperties": false
},
"division293Income": {
"type": "number",
"description": "Income plus concessional contributions, used for the Division 293 test."
},
"employerSuperRate": {
"type": "number",
"description": "Rate the employer pays (%)."
},
"nonConcessionalCap": {
"type": "number",
"description": "Non-concessional contributions cap."
},
"superGuaranteeRate": {
"type": "number",
"description": "Super Guarantee rate for the year (%)."
},
"salarySacrificeSuper": {
"type": "number",
"description": "Salary sacrifice super contributions (reportable), annual."
},
"adjustedTaxableIncome": {
"type": "number",
"description": "Adjusted taxable income (ATI), annual."
},
"maximumContributionBase": {
"type": "number",
"description": "Annual income above which the Super Guarantee is not required."
},
"reportableEmployerSuper": {
"type": "number",
"description": "Employer contributions above the guarantee rate that are reportable, annual."
},
"concessionalCapRemaining": {
"type": "number",
"description": "Concessional cap remaining."
},
"concessionalContributions": {
"type": "number",
"description": "Concessional (before-tax) contributions, annual."
},
"studentLoanRepaymentIncome": {
"type": "number",
"description": "Repayment income for student loans; present when a student loan is included."
},
"nonConcessionalCapRemaining": {
"type": "number",
"description": "Non-concessional cap remaining."
},
"nonConcessionalContributions": {
"type": "number",
"description": "Non-concessional (after-tax) contributions, annual."
}
},
"additionalProperties": false
},
"frequency": {
"type": "string"
},
"shareLink": {
"type": "string",
"description": "Present when shareLink was requested: a short link that opens this calculation on paycalculator.com.au. Give it to the user as is."
},
"taxReturn": {
"type": "object",
"required": [
"total",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
},
"negative": {
"type": "boolean"
},
"informational": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"total": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
}
},
"description": "Estimated Tax Return (annual). total is the expected refund when positive, or the amount owed when negative (comment \"Repayment\"). Tax withheld from each pay x the number of pays, less the annual tax. Based on the information provided.",
"additionalProperties": false
},
"yearToDate": {
"type": "object",
"required": [
"payCycle",
"firstPayDay",
"asOf",
"paysSoFar",
"paysInYear",
"extraPay",
"pay",
"grossSalary",
"tax",
"superannuation"
],
"properties": {
"pay": {
"type": "number",
"description": "Take-home pay so far."
},
"tax": {
"type": "number",
"description": "Tax withheld so far."
},
"asOf": {
"type": "string"
},
"extraPay": {
"type": "boolean",
"description": "True when the year has a 53rd weekly or 27th fortnightly pay day."
},
"payCycle": {
"enum": [
"weekly",
"fortnightly",
"monthly"
],
"type": "string"
},
"paysSoFar": {
"type": "number",
"description": "Pay days from firstPayDay to asOf."
},
"paysInYear": {
"type": "number",
"description": "Pay days in the financial year from firstPayDay."
},
"firstPayDay": {
"type": "string"
},
"grossSalary": {
"type": "number",
"description": "Gross salary so far."
},
"superannuation": {
"type": "number",
"description": "Super so far."
}
},
"description": "Present when yearToDate was requested. Per-pay amounts x pays so far; amounts that are not part of each pay (an annual bonus, offsets) are not included.",
"additionalProperties": false
},
"financialYear": {
"type": "string"
},
"taxableIncome": {
"type": "object",
"required": [
"total",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
},
"negative": {
"type": "boolean"
},
"informational": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"total": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
}
},
"additionalProperties": false
},
"superannuation": {
"type": "object",
"required": [
"total",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
},
"negative": {
"type": "boolean"
},
"informational": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"total": {
"type": "object",
"required": [
"annual"
],
"properties": {
"daily": {
"type": "number"
},
"annual": {
"type": "number"
},
"weekly": {
"type": "number"
},
"monthly": {
"type": "number"
},
"fortnightly": {
"type": "number"
}
},
"additionalProperties": false
},
"comment": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1029 ms
- 95th percentile latency
- 1029 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1029 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http paycalculator-mcp https://mcp.paycalculator.com.au/mcpCodex
codex mcp add paycalculator-mcp --url https://mcp.paycalculator.com.au/mcpCursor
{
"mcpServers": {
"paycalculator-mcp": {
"url": "https://mcp.paycalculator.com.au/mcp"
}
}
}Cline
{
"mcpServers": {
"paycalculator-mcp": {
"type": "streamableHttp",
"url": "https://mcp.paycalculator.com.au/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"paycalculator-mcp": {
"type": "http",
"url": "https://mcp.paycalculator.com.au/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http paycalculator-mcp https://mcp.paycalculator.com.au/mcpClaude Desktop
{
"mcpServers": {
"paycalculator-mcp": {
"url": "https://mcp.paycalculator.com.au/mcp"
}
}
}Windsurf
{
"mcpServers": {
"paycalculator-mcp": {
"serverUrl": "https://mcp.paycalculator.com.au/mcp"
}
}
}Let your agent find its tools
Find servers like PayCalculator MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run PayCalculator MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.