Screen 05

Duty rate settings

The tax schedule as editable configuration rather than code. It changed on 1 January 2025 and the filing system changed on 1 January 2026. It will change again, and when it does this should be a form edit, not a developer ticket.

You are here Submission Intake Processing Filing Release Setup · rates apply at Intake S1
ops.tenancy.example.my/settings/duty-rates

Duty rates

Stamp Act 1949, First Schedule, as amended by the Finance Act 2024
Effective from1

Rate per RM250 or part of annual rent2

Term bandRatePrevious
Not exceeding 1 year1.00
More than 1 year, not exceeding 32.00
More than 3 years, not exceeding 54.00
More than 5 years or indefinite34.00

Base rules

Block size
Minimum principal duty
Duty per duplicate copy
Annual rent exemption4
Stamping deadline
days from execution

Late stamping penalty

StampedFlatOr % of duty
Within 3 months of the deadline
More than 3 months after

Whichever is higher applies.

Service fees your margin, not tax

Stamping Only
RM
Draft Tenancy
RM
Test the rules5
Total to LHDN

Change history7

  • Version 2025-01-01 published Ahmad (owner) · 3 Jan 2025
  • Signed off by tax agent Attached: rate-confirmation.pdf
  • Version 2019-01-01 superseded System · 3 Jan 2025

Before publishing

A new version applies to future applications only. Jobs already submitted keep the rates they were quoted under.

What each function does

  1. 1Versions with effective dates Rates are versioned, not overwritten. Every application stores which version it was quoted under. Why: when someone queries a job from eighteen months ago, you can show the rates in force that day. Overwrite them and that history is gone permanently.
  2. 2The four term bands, editable The actual tax scale as data. The Previous column shows what each was before, so a change is visible at a glance. Why: the reference site hardcoded these, which is exactly why one of its calculators is still running the pre-2025 numbers.
  3. 3The fourth band More than 5 years, added by the Finance Act 2024. Why call it out: the reference site's dropdown only offers three bands, so a six year lease is charged at RM5 per RM250 when the law says RM7. Under self assessment that underpayment is the filer's problem.
  4. 4Annual rent exemption, set to zero The RM2,400 exemption was abolished on 1 January 2025. It stays as a field rather than being deleted, so historical versions still compute correctly. Why it is here: the reference site still deducts it in one of its two calculators.
  5. 5Live test panel Run a sample rent and term against the unsaved rules and see the result with the working shown. Why: nobody should publish a tax change and find out it was wrong from a customer. This is the two second sanity check.
  6. 6Save as a new version Publishing creates a new dated version rather than editing the live one. Applies only to applications submitted after its effective date. Why: retroactively changing rates would silently alter the duty on jobs already paid for.
  7. 7Change history with attachments Who changed the rates, when, and the tax agent's written confirmation stored against it. Why: if a duty figure is ever challenged, the defence is a documented rate set someone qualified signed off, not a developer's reading of the Stamp Act.
  8. 8Sign off gate Publishing is blocked until confirmation from the tax agent is attached. Why this is the most important control on the screen: it is the mechanism that keeps liability for the tax computation with the client's adviser, where it belongs, rather than drifting onto the developer.

This is the screen that pays for itself. The duty scale changed in 2025 and the filing system changed in 2026. Build it as configuration and the next change is a ten minute edit the client can do, or a maintenance task you charge for. Hardcode it and the next change is an emergency.