CheckFirst
  • CheckFirst
  • Get started
    • Tutorials
      • Yes/No
      • Quiz
      • Constants table
      • Date calculator
      • Complex example
    • Logic Syntax
  • Features
    • Questions
    • Constants
    • Logic
      • Calculator logic
      • Conditional logic
      • Date logic
      • Map constant
      • Results formatting
    • Settings
  • FAQ
    • Full Logic Syntax List
  • Contact Us
  • Updates
Powered by GitBook
On this page
  • Calculator structure
  • Step 1: Set questions
  • Step 2: Total income logic
  • Step 3: Assessable income logic
  • Step 4: Chargeable income logic
  • Step 5a: (Method 1) Tax payable on Chargeable income logic
  • Step 5b: (Method 2) Tax payable on Chargeable income logic
  • Step 6: Net tax payable logic
  • Preview

Was this helpful?

  1. Get started
  2. Tutorials

Complex example

This checker aims to calculate the net tax payable by an individual. This example is modelled after the IRAS 2020 Income Tax Calculator for Tax Resident Individuals.

PreviousDate calculatorNextLogic Syntax

Last updated 3 years ago

Was this helpful?

What this example features:

  1. Use of Max/Min functions

  2. Several levels of calculations informed by other calculations

  3. Different methods of building logic

  4. Making bands with logic

Calculator structure

Calculations must be done in order as previous calculations are used in later calculations.

  1. *Net employment income + Trade, Business, Profession or Vocation income + *Other income =

  2. Total income - Approved donations =

  3. Assessable income - *Total personal reliefs =

  4. Calculate

  5. Tax payable on chargeable income - Parenthood tax rebate =

*Net employment income = + Employment income - Employment expenses

*Other income = + Dividends + Interest + Rent from Property + Royalty, Charge, Estate/Trust Income + Gains or Profits of an Income Nature

*Total personal reliefs (Capped at $80,000) = + Earned income relief + Spouse/handicapped child relief + Qualifying/handicapped child relief + Working mother's child relief + Parent/handicapped parent relief + Grandparent caregiver relief + Handicapped brother/sister relief + CPF/provident Fund relief + Life Insurance relief + Course fees relief + Foreign domestic worker levy relief + CPF cash top-up relief (self, dependant and Medisave account) + Supplementary Retirement Scheme (SRS) relief + NSman (Self/wife/parent) relief

Step 1: Set questions

Step 2: Total income logic

Net employment income

= Employment income (N1) - Employment expenses (N2)

If the outcome is positive, i.e. employment income > expenses, we want to factor that into our formula.

If the outcome is negative, i.e. employment income < expenses, we don't want to factor a negative number into our calculation. Instead, we will take it as zero.

max(N1 - N2, 0)

Total income

We'll add the above Net employment income result (O1) to the rest of the inputs to calculate the total income.

= Net employment income (O1) + Trade, Business, Profession or Vocation income (N3) + Other income ( + Dividends (N4) + Interest (N5) + Rent from Property (N6) + Royalty, Charge, Estate/Trust Income (N7) + Gains or Profits of an Income Nature (N8) )

O1 + N3 + N4 + N5 + N6 + N7 + N8

Step 3: Assessable income logic

= Total income (O2) - Approved donations (N9)

If the outcome is positive, i.e. total income > approved donations, we want to factor that into our formula.

If the outcome is negative, i.e. total income > approved donations, we don't want to factor a negative number into our calculation. Instead, we will take it as zero.

max(O2 - N9, 0)

Step 4: Chargeable income logic

= Assessable income - Personal reliefs

Personal reliefs (Capped at $80,000)

Some of the personal reliefs have a cap to them. Hence for these inputs, we'd want to ensure that we do not factor in a number larger than the cap.

min(N10, 12000) + min(N11, 5500) + N12 + N13 + min(N14, 28000) + min(N15, 3000) + N16 + N17 + min(N18, 5000) + min(N19, 5500) + min(N20, 6360) + min(N21, 14000) + min(N22, 35700) + min(N23, 5750)

min(total personal reliefs, 80000)

We can combine these two into the formula below:

min(min(N10, 12000)
+ min(N11, 5500)
+ N12
+ N13
+ min(N14, 28000)
+ min(N15, 3000)
+ N16
+ N17 
+ min(N18, 5000)
+ min(N19, 5500)
+ min(N20, 6360)
+ min(N21, 14000)
+ min(N22, 35700)
+ min(N23, 5750), 
80000))

Chargeable income

= Assessable income (O3) - Total personal reliefs (O4)

If positive, take that number. If negative, take it as 0.

max(O3-O4, 0)

Step 5a: (Method 1) Tax payable on Chargeable income logic

Tax is charged based on the band your chargeable income falls within. See the table below:

Tax is only charged for chargeable incomes > $20,000. Higher chargeable incomes have a higher base tax payable, and additional tax based on the difference between the base value and the next band value.

For example, if your chargeable income is $35,000, you fall into the second band:

Here's what it would look like:

First band: Tax Payable on first $30,000 = Tax charged on first $20,000 + (Next $10,000 x 2% Income Tax Rate) = 0 + (Chargeable income [O5] - 20000) x 0.02

IF    O5 > 20000
AND   O5 <= 30000 

THEN  (O5 - 20000) * 0.02
ELSE  0

Second band: Tax Payable on $30,000 to $40,000 = Tax charged on first $30,000 + (Next $10,000 x 3.5% Income Tax Rate) = 200 + (Chargeable income [O5] - 30000) x 0.035

IF    O5 > 30000
AND   O5 <= 40000

THEN  (200 + ((O5 - 30000) * 0.035)) 
ELSE  0

Tenth band: Tax Payable on $320,000 onwards = Tax charged on first $320,000 + (Next $ x 22% Income Tax Rate) = 44550 + (Chargeable income [O5] - 320000) x 0.22

IF    O5 > 320000

THEN  (44550 + ((O5 - 320000) * 0.22)) 
ELSE  0

Tax Payable on Chargeable Income

To calculate the gross tax payable, we can simply add up all the outcomes from each band together.

O6 + O7 + O8 + O9 + O10 + O11 + O12 + O13 + O14 + O15

Here's what that formula would look like a chargeable income of $165,000:

Gross tax payable = O6 + O7 + O8 + O9 + O10 + O11 + O12 + O13 + O14 + O15 = 0 + 0 + 0 + 0 + 0 + (13950 + ((165000 - 160000) * 0.18)) + 0 + 0 + 0 + 0 = $14,850 gross tax payable

However this is not the only way of building our logic. There are many ways we can interpret the table, and hence there are also other ways to translate it into logic. Let's look at an alternative example below.

Step 5b: (Method 2) Tax payable on Chargeable income logic

Another way to look at the total tax payable is to break down your chargeable income into the different increments, and applying the relevant tax rate to that increment.

For example, $400,000 chargeable income can be broken down into:

Rate

2%

3.5%

7%

11.5%

15%

18%

19%

19.5%

20%

22%

Increment

$10,000

$10,000

$40,000

$40,000

$40,000

$40,000

$40,000

$40,000

$40,000

$80,000z

Hence, we can simply add all of the tax for each increment together.

Instead of using the entire band range as our IF statement conditions, as long as chargeable income (O5) is higher than the minimum value in the band, we want to apply the tax rate to O5. Hence, we only need to set IF O5 > 20000.

min((O5 - 20000) * 0.02, 10000 * 0.02)

Else if chargeable income doesn't fall within the range set, i.e. the condition is not fulfilled, we don't want anything to be added, hence it should be taken as 0.

Here's what it would look like:

First increment: Tax Payable on first $30,000 ($10,000 increment)

If chargeable amount > 20,000, = Tax charged on O5 - 20000 (Should be less than $10,000) OR Tax charged on $10,000 = ( Chargeable income [O5] - 20000 ) * 0.02 OR 10000 * 0.02 = Take whichever is lower

IF    O5 > 20000

THEN  min((O5 - 20000) * 0.02, 10000 * 0.02)
ELSE  0

Second increment: Tax Payable on $30,000 to $40,000 ($10,000 increment)

If chargeable amount > 30,000, = Tax charged on O5 - 30000 (Should be less than $10,000) OR Tax charged on $10,000 = ( Chargeable income [O5] - 30000 ) * 0.035 OR 10000 * 0.035 = Take whichever is lower

IF    O5 > 30000

THEN  min((O5 - 30000) * 0.035, 10000 * 0.035) 
ELSE  0

Tenth increment: Tax Payable on $320,000 onwards (No more increments)

If chargeable amount > 320,000, = Tax charged on O5 - 320000 = ( Chargeable income [O5] - 320000 ) * 0.035

Tax Payable on $320,000 onwards
IF    O5 > 320000

THEN  (O5 - 320000) * 0.22
ELSE  0

Tax Payable on Chargeable Income

As mentioned above, to calculate the gross tax payable we add up each increment tax together.

O6 + O7 + O8 + O9 + O10 + O11 + O12 + O13 + O14 + O15

Here's what that formula would look like a chargeable income of $165,000:

Gross tax payable = O6 + O7 + O8 + O9 + O10 + O11 + O12 + O13 + O14 + O15 = (10000*0.02) + (10000*0.035) + (440000*0.07) + (40000*0.115) + (40000*0.15) + (5000*0.18) + 0 + 0 + 0 + 0 = $14,850 gross tax payable

Step 6: Net tax payable logic

= Tax payable on chargeable income (O16) - Parenthood tax rebate (N24)

O16 - N24

Preview

There's a lot of info we need from citizens. Since they're all just numbers, we can add them asnumeric questions. Let's add them in order:

Thus the function helps us to choose: Between (N1-N2) and 0, take the higher number

Thus the function helps us to choose: Between (O2-N9) and 0, take the higher number

Thus the function helps us to choose: Between (Eligible relief) and (Max cap of relief), take the lower number

The max cap of total personal reliefs is also $80,000. Hence, the function helps us to choose: Between (Total personal reliefs) and (80000), take the lower number

Let's translate the bands into our checker logic. We need to use anIF/ELSE logic block for each band. We'll set the range as our IF statement conditions, and use THEN to input our formula. Else if chargeable income doesn't fall within the range set, i.e. the condition is not fulfilled, we can just take it as zero for now.

To translate the this into checker logic, we'll again use anIF/ELSE logic block for each band.

Because O5 can either cross the full increment value or its partial value, we would use a function to choose the lower of the 2 values: Either the partial increment tax, or the full increment tax.

You may not want to show your 'working', and just want to show a final result. Remember to hide 'working' logic blocks so that they won't appear in the results section.

You can .

max
max
min
min
min
try out this checker here
Total income
Assessable income
Chargeable income
tax payable on chargeable income
Net Tax Payable
Net employment income
Trade, Business, Profession or Vocation income
Other income
Approved donations
Total personal reliefs
Parenthood tax rebate
Image taken from 'Tax Calculator - Residents_YA20.csv' from iras.gov.sg
Gross tax payable on $35,000 = 200 + ((35,000 - 30,000) * 0.035) = $375
There is a different tax rate for each increment of chargeable income.