
Duties covered
BSD + ABSD + SSD
Rate tables
Versioned by effective date
Breakdown
Tier by tier
The problem
Stamp duty is three separate taxes with different tables, and the amount changes with residency, how many properties you already own and how long you have held the place. Buyers were guessing, agents were re-doing sums in spreadsheets, and every IRAS revision meant somebody had to trust a number they could not check.
What we built
- One calculation covering Buyer's Stamp Duty, Additional Buyer's Stamp Duty and Seller's Stamp Duty
- Inputs for residency status, property count and holding period, with a full tier-by-tier breakdown
- Rate tables held in a single versioned source rather than scattered through the code
- Server rendering so each calculator page is indexable and loads with content already on screen
The part worth knowing
Tax rules change, so the rules are data, not code. Each rate table carries an effective date, which means an IRAS revision is one reviewed change with the old table still on file — and a calculation from last year can be reproduced exactly. That is the same pattern we use for client pricing engines and commission rules.