Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save pauldwhitman/11f888bbdcf550f795a9509e73ae3c45 to your computer and use it in GitHub Desktop.
Save pauldwhitman/11f888bbdcf550f795a9509e73ae3c45 to your computer and use it in GitHub Desktop.
Microsoft Excel formula for calculating stamp duty in New South Wales (NSW), Australia. Long form edition without "magic numbers".
=ROUND(IF(A1>3000000,(0.0125*14000)+(0.015*(30000-14000))+(0.0175*(80000-30000)+(0.035*(300000-80000)+(0.045*(1000000-300000))))+(0.055*(3000000-1000000))+0.07*(A1-3000000),IF(A1>1000000,(0.0125*14000)+(0.015*(30000-14000))+(0.0175*(80000-30000)+(0.035*(300000-80000)+(0.045*(1000000-300000))))+0.055*(A1-1000000),IF(A1>300000,(0.0125*14000)+(0.015*(30000-14000))+(0.0175*(80000-30000)+(0.035*(300000-80000)))+0.045*(A1-300000),IF(A1>80000,(0.0125*14000)+(0.015*(30000-14000))+(0.0175*(80000-30000))+0.035*(A1-80000),IF(A1>30000,(0.0125*14000)+(0.015*(30000-14000))+0.0175*(A1-30000),IF(A1>14000,(0.0125*14000)+0.015*(A1-14000),A1*0.0125)))))),)
@shervinemami
Copy link

Thanks! Works accurately for me 👍

@yatesy
Copy link

yatesy commented Mar 11, 2021

Hey man I forked to update for the post 2020 rates, would be good if you can pull that into this repo. Thanks for the starter.

@calvinbui
Copy link

here's for the latest rates. I used B1 instead of A1

=ROUNDDOWN(IF(B1>3194000,(0.0125*14000)+(0.015*(32000-14000))+(0.0175*(85000-32000)+(0.035*(319000-85000)+(0.045*(1064000-319000))))+(0.055*(3194000-1064000))+0.07*(B1-3194000),IF(B1>1064000,(0.0125*14000)+(0.015*(32000-14000))+(0.0175*(85000-32000)+(0.035*(319000-85000)+(0.045*(1064000-319000))))+0.055*(B1-1064000),IF(B1>319000,(0.0125*14000)+(0.015*(32000-14000))+(0.0175*(85000-32000)+(0.035*(319000-85000)))+0.045*(B1-319000),IF(B1>85000,(0.0125*14000)+(0.015*(32000-14000))+(0.0175*(85000-32000))+0.035*(B1-85000),IF(B1>32000,(0.0125*14000)+(0.015*(32000-14000))+0.0175*(B1-32000),IF(B1>14000,(0.0125*14000)+0.015*(B1-14000),B1*0.0125)))))),)

@joe-niland
Copy link

Updated for thresholds as of 1 July 2022. Property price assumed to be in cell B1.

=ROUNDDOWN(IF($B$1>3268000,(0.0125*15000)+(0.015*(32000-15000))+(0.0175*(87000-32000)+(0.035*(327000-87000)+(0.045*(1089000-327000))))+(0.055*(3268000-1089000))+0.07*($B$1-3268000),IF($B$1>1089000,(0.0125*15000)+(0.015*(32000-15000))+(0.0175*(87000-32000)+(0.035*(327000-87000)+(0.045*(1089000-327000))))+0.055*($B$1-1089000),IF($B$1>327000,(0.0125*15000)+(0.015*(32000-15000))+(0.0175*(87000-32000)+(0.035*(327000-87000)))+0.045*($B$1-327000),IF($B$1>87000,(0.0125*15000)+(0.015*(32000-15000))+(0.0175*(87000-32000))+0.035*($B$1-87000),IF($B$1>32000,(0.0125*15000)+(0.015*(32000-15000))+0.0175*($B$1-32000),IF($B$1>15000,(0.0125*15000)+0.015*($B$1-15000),$B$1*0.0125)))))),)

@steve-keep
Copy link

steve-keep commented Jul 13, 2023

July 2023 update:

https://www.revenue.nsw.gov.au/taxes-duties-levies-royalties/transfer-duty

The property price is assumed to be in cell B5.

=ROUNDDOWN(IF(B5>3268000,(0.0125*16000)+(0.015*(35000-16000))+(0.0175*(93000-35000)+(0.035*(351000-93000)+(0.045*(1168000-351000))))+(0.055*(3268000-1168000))+0.07*(B5-3268000),IF(B5>1168000,(0.0125*16000)+(0.015*(35000-16000))+(0.0175*(93000-35000)+(0.035*(351000-93000)+(0.045*(1168000-351000))))+0.055*(B5-1168000),IF(B5>351000,(0.0125*16000)+(0.015*(35000-16000))+(0.0175*(93000-35000)+(0.035*(351000-93000)))+0.045*(B5-351000),IF(B5>93000,(0.0125*16000)+(0.015*(35000-16000))+(0.0175*(93000-35000))+0.035*(B5-93000),IF(B5>35000,(0.0125*16000)+(0.015*(35000-16000))+0.0175*(B5-35000),IF(B5>16000,(0.0125*16000)+0.015*(B5-16000),B5*0.0125)))))),)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment