$n(annualTurnover) > $const.cottageTurnoverLimit or industrialConnection or $not(residentialArea) or overTenWorkers
Rates and thresholds
The expressions above read these as $const. They are the figures the annual refresh replaces, so they live as data rather than being written into the formulas — which is what makes a year-on-year change a one-line diff instead of an edit to arithmetic.
Constant
Value
salesTaxRate
0.18
zeroRate
0
furtherTaxRate
0.04
cottageTurnoverLimit
8000000
Test vectors (11)
Every case is executed against this model on each build, by the Java engine and independently by a JavaScript one. A mismatch of a single cent fails the build, so the page cannot ship advertising a figure the model no longer produces.
Case 1 — V1 Rs100,000 of taxable goods: 18% = Rs18,000
given amount
100000
given direction
add
given category
standard
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect vatAmount
18000
expect grossAmount
118000
expect effectiveRate
0.18
Case 2 — V2 Rs118,000 including tax back to Rs100,000
given amount
118000
given direction
remove
given category
standard
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect netAmount
100000
expect vatAmount
18000
Case 3 — V3 to an unregistered buyer: 18% + 4% further tax = Rs22,000
given amount
100000
given direction
add
given category
standard
given unregisteredBuyer
yes
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect rate
0.22
expect furtherTax
4000
expect vatAmount
22000
expect grossAmount
122000
Case 4 — V4 an export is zero-rated
given amount
100000
given direction
add
given category
export
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect vatAmount
0
expect grossAmount
100000
Case 5 — V4b an export to an unregistered buyer abroad: no further tax
given amount
100000
given direction
add
given category
export
given unregisteredBuyer
yes
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect furtherTax
0
expect vatAmount
0
Case 6 — V4c Fifth Schedule goods to an unregistered buyer: s.4 keeps the 4% further tax
given amount
100000
given direction
add
given category
fifthSchedule
given unregisteredBuyer
yes
given reverseCharge
no
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect rate
0.04
expect furtherTax
4000
expect vatAmount
4000
Case 7 — V5 goods notified under s.3(3A): the seller charges none, the buyer pays Rs18,000
given amount
100000
given direction
add
given category
standard
given unregisteredBuyer
no
given reverseCharge
yes
given annualTurnover
0
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect vatAmount
0
expect grossAmount
100000
expect selfAssessedVat
18000
Case 8 — V6 Rs8 million of turnover is still a cottage industry (“does not exceed”)
given amount
100
given direction
add
given category
standard
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
8000000
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect mustRegister
false
Case 9 — V7 above Rs8 million a manufacturer must register
given amount
100
given direction
add
given category
standard
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
8000001
given industrialConnection
no
given residentialArea
yes
given overTenWorkers
no
expect mustRegister
true
Case 10 — V8 under Rs8 million but with an industrial electricity connection: not a cottage industry, must register
given amount
100
given direction
add
given category
standard
given unregisteredBuyer
no
given reverseCharge
no
given annualTurnover
1000000
given industrialConnection
yes
given residentialArea
yes
given overTenWorkers
no
expect mustRegister
true
Case 11 — V9 more than ten workers fails s.2(5AB)(c)
The whole model as JSON — inputs, outputs, formulas, vectors and sources in one re-runnable document.
This model is published under CC BY 4.0: use it, adapt it, build on it, with attribution. The licence covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds are law, and nobody licenses those; the sources above are where they come from.