Turnover tax for the year at 4% (enlisted, ৳30–50 lakh)
turnoverTaxAnnual
($t := $n(annualTurnover); (compulsoryRegistration or $t > $const.registrationThreshold or $t <= $const.enlistmentThreshold) ? 0 : $round($t * $const.turnoverTaxRate, 2))
Must register for VAT
mustRegister
$n(annualTurnover) > $const.registrationThreshold or compulsoryRegistration
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
standardRate
0.15
reducedRate10
0.1
reducedRate75
0.075
reducedRate5
0.05
zeroRate
0
importedServiceRate
0.15
registrationThreshold
5000000
enlistmentThreshold
3000000
turnoverTaxRate
0.04
Test vectors (14)
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 ৳1,00,000 at the standard 15%: VAT ৳15,000, total ৳1,15,000
given amount
100000
given direction
add
given category
standard
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect netAmount
100000
expect vatAmount
15000
expect grossAmount
115000
Case 2 — V2 take 15% out of ৳1,15,000
given amount
115000
given direction
remove
given category
standard
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect netAmount
100000
expect vatAmount
15000
Case 3 — V3 Third Schedule 10%
given amount
100000
given direction
add
given category
reduced10
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect vatAmount
10000
Case 4 — V4 Third Schedule 7.5%
given amount
100000
given direction
add
given category
reduced75
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect vatAmount
7500
expect grossAmount
107500
Case 5 — V5 Third Schedule 5%
given amount
100000
given direction
add
given category
reduced5
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect vatAmount
5000
Case 6 — V6 export: zero rate
given amount
100000
given direction
add
given category
zeroRated
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect rate
0
expect vatAmount
0
Case 7 — V7 exempt supply
given amount
100000
given direction
add
given category
exempt
given reverseCharge
no
given annualTurnover
0
given compulsoryRegistration
no
expect vatAmount
0
expect grossAmount
100000
Case 8 — V8 imported service ৳2,00,000: the recipient pays ৳30,000, none on the invoice
given amount
200000
given direction
add
given category
standard
given reverseCharge
yes
given annualTurnover
0
given compulsoryRegistration
no
expect vatAmount
0
expect selfAssessedVat
30000
Case 9 — V9 imported service at a Third Schedule category: still 15% under s.20
given amount
100000
given direction
add
given category
reduced5
given reverseCharge
yes
given annualTurnover
0
given compulsoryRegistration
no
expect selfAssessedVat
15000
Case 10 — V10 turnover exactly ৳50 lakh: not above the registration threshold, turnover tax ৳2,00,000
given amount
100000
given direction
add
given category
standard
given reverseCharge
no
given annualTurnover
5000000
given compulsoryRegistration
no
expect mustRegister
false
expect turnoverTaxAnnual
200000
Case 11 — V11 ৳50,00,001: must register, no turnover tax
given amount
100000
given direction
add
given category
standard
given reverseCharge
no
given annualTurnover
5000001
given compulsoryRegistration
no
expect mustRegister
true
expect turnoverTaxAnnual
0
Case 12 — V12 exactly ৳30 lakh: neither registration nor turnover tax
given amount
100000
given direction
add
given category
standard
given reverseCharge
no
given annualTurnover
3000000
given compulsoryRegistration
no
expect mustRegister
false
expect turnoverTaxAnnual
0
Case 13 — V13 ৳40 lakh: turnover tax ৳1,60,000
given amount
100000
given direction
add
given category
standard
given reverseCharge
no
given annualTurnover
4000000
given compulsoryRegistration
no
expect turnoverTaxAnnual
160000
Case 14 — V14 importer with ৳10 lakh turnover: registration whatever the turnover (s.4(2))
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.