jaz-cli 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/api/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +58 -1
- package/assets/skills/jobs/references/sg-tax/add-backs-guide.md +354 -0
- package/assets/skills/jobs/references/sg-tax/capital-allowances-guide.md +343 -0
- package/assets/skills/jobs/references/sg-tax/data-extraction.md +408 -0
- package/assets/skills/jobs/references/sg-tax/enhanced-deductions.md +248 -0
- package/assets/skills/jobs/references/sg-tax/exemptions-and-rebates.md +197 -0
- package/assets/skills/jobs/references/sg-tax/form-cs-fields.md +191 -0
- package/assets/skills/jobs/references/sg-tax/ifrs16-tax-adjustment.md +194 -0
- package/assets/skills/jobs/references/sg-tax/losses-and-carry-forwards.md +269 -0
- package/assets/skills/jobs/references/sg-tax/overview.md +207 -0
- package/assets/skills/jobs/references/sg-tax/wizard-workflow.md +391 -0
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/dist/__tests__/jobs-audit-prep.test.js +3 -3
- package/dist/__tests__/jobs-bank-recon.test.js +5 -5
- package/dist/__tests__/jobs-credit-control.test.js +1 -1
- package/dist/__tests__/jobs-fa-review.test.js +1 -1
- package/dist/__tests__/jobs-payment-run.test.js +3 -3
- package/dist/__tests__/jobs-supplier-recon.test.js +6 -6
- package/dist/__tests__/tax-sg-capital-allowances.test.js +389 -0
- package/dist/__tests__/tax-sg-exemptions.test.js +232 -0
- package/dist/__tests__/tax-sg-form-cs.test.js +687 -0
- package/dist/__tests__/tax-validate.test.js +208 -0
- package/dist/commands/init.js +7 -2
- package/dist/commands/jobs.js +1 -1
- package/dist/commands/tax.js +195 -0
- package/dist/index.js +2 -0
- package/dist/jobs/audit-prep.js +4 -4
- package/dist/jobs/bank-recon.js +4 -4
- package/dist/jobs/credit-control.js +5 -5
- package/dist/jobs/fa-review.js +4 -4
- package/dist/jobs/gst-vat.js +3 -3
- package/dist/jobs/payment-run.js +4 -4
- package/dist/jobs/supplier-recon.js +3 -3
- package/dist/tax/format.js +18 -0
- package/dist/tax/sg/capital-allowances.js +160 -0
- package/dist/tax/sg/constants.js +63 -0
- package/dist/tax/sg/exemptions.js +76 -0
- package/dist/tax/sg/form-cs.js +349 -0
- package/dist/tax/sg/format-sg.js +134 -0
- package/dist/tax/types.js +9 -0
- package/dist/tax/validate.js +124 -0
- package/dist/utils/template.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# Loss Relief and Carry-Forwards for SG Corporate Tax
|
|
2
|
+
|
|
3
|
+
When a company's deductions and allowances exceed its income, the excess creates carry-forward amounts that can reduce tax in future years. IRAS prescribes a strict set-off order — items must be applied in sequence, and chargeable income cannot go below zero at any step.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Set-Off Order (IRAS Prescribed)
|
|
8
|
+
|
|
9
|
+
The computation engine applies reliefs in this exact sequence. At each step, the claim is capped at the remaining chargeable income (which cannot go below zero).
|
|
10
|
+
|
|
11
|
+
| Order | Relief | Source | Carry-forward if excess? |
|
|
12
|
+
|-------|--------|--------|--------------------------|
|
|
13
|
+
| 1 | **Current year capital allowances (CA)** | `capitalAllowances.currentYearClaim` | Yes — becomes unabsorbed CA |
|
|
14
|
+
| 2 | **Enhanced deductions** | R&D, IP, S14Q (uplift portions) | Limited — varies by scheme |
|
|
15
|
+
| 3 | **Unabsorbed CA from prior years** | `capitalAllowances.balanceBroughtForward` | Yes — rolls forward again |
|
|
16
|
+
| 4 | **Unabsorbed trade losses from prior years** | `losses.broughtForward` | Yes — rolls forward (indefinite) |
|
|
17
|
+
| 5 | **Current year donations (250%)** | `enhancedDeductions.donations250Base` x 2.5 | Yes — up to 5 years |
|
|
18
|
+
| 6 | **Unabsorbed donations from prior years** | `donationsCarryForward.broughtForward` | Yes — remaining 5-year window |
|
|
19
|
+
|
|
20
|
+
**After all reliefs:** the result is **chargeable income**. If it is zero, no tax is payable but the company still files Form C-S.
|
|
21
|
+
|
|
22
|
+
### How the engine implements the set-off
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Adjusted profit = Accounting profit + Add-backs - Deductions
|
|
26
|
+
|
|
27
|
+
Remaining = Adjusted profit
|
|
28
|
+
→ Less: Current year CA (capped at Remaining, excess → carry forward)
|
|
29
|
+
→ Less: Enhanced deductions (capped at Remaining)
|
|
30
|
+
→ Less: Unabsorbed CA b/f (capped at Remaining, excess → carry forward)
|
|
31
|
+
= Chargeable income before losses
|
|
32
|
+
|
|
33
|
+
→ Less: Unabsorbed trade losses (capped at CI before losses, excess → carry forward)
|
|
34
|
+
→ Less: Current year donations (capped at remaining CI)
|
|
35
|
+
→ Less: Unabsorbed donations (capped at remaining CI, FIFO, excess → carry forward)
|
|
36
|
+
= Chargeable income
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Trade Losses
|
|
42
|
+
|
|
43
|
+
### Current year loss
|
|
44
|
+
|
|
45
|
+
If adjusted profit is **negative** (i.e., the company made a tax-adjusted loss), this is a **current year trade loss**. No further reliefs can be applied — CA, enhanced deductions, and donation claims are all zero because there is no positive income to offset them against.
|
|
46
|
+
|
|
47
|
+
The current year loss is added to the carry-forward pool:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Unabsorbed losses c/f = Prior year unabsorbed losses + Current year loss
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Input:** A current year loss is detected automatically by the computation engine when adjusted profit < 0. No separate input field is needed — it is calculated from `accountingProfit` + add-backs - deductions.
|
|
54
|
+
|
|
55
|
+
### Carry-forward of trade losses
|
|
56
|
+
|
|
57
|
+
| Rule | Detail |
|
|
58
|
+
|------|--------|
|
|
59
|
+
| **Duration** | Indefinite — no time limit |
|
|
60
|
+
| **Condition** | Shareholding test (see below) |
|
|
61
|
+
| **Set-off order** | Applied AFTER CA and enhanced deductions, BEFORE donations |
|
|
62
|
+
| **Cap** | Limited to chargeable income before losses (cannot create or increase a loss) |
|
|
63
|
+
|
|
64
|
+
**Input:** `losses.broughtForward` — the total unabsorbed trade losses from all prior YAs.
|
|
65
|
+
|
|
66
|
+
### Carry-back of trade losses (optional)
|
|
67
|
+
|
|
68
|
+
Companies can elect to carry back current year losses to the **immediately preceding YA**, subject to:
|
|
69
|
+
|
|
70
|
+
| Rule | Detail |
|
|
71
|
+
|------|--------|
|
|
72
|
+
| **Maximum** | $100,000 per YA |
|
|
73
|
+
| **Condition** | Same shareholding test |
|
|
74
|
+
| **Timing** | Must be elected in the tax return for the loss year |
|
|
75
|
+
| **Effect** | Triggers a refund or reduction of the prior year's tax |
|
|
76
|
+
|
|
77
|
+
**Note:** Loss carry-back is NOT modeled in the `SgFormCsInput` type. It requires amending the prior year's return and is handled as a separate filing action. The wizard should mention this option but not include it in the computation.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Capital Allowances
|
|
82
|
+
|
|
83
|
+
### Current year CA excess
|
|
84
|
+
|
|
85
|
+
If current year CA exceeds the adjusted profit, only the portion up to adjusted profit is claimed. The excess becomes **unabsorbed CA** carried forward.
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Current year CA claimed = min(CA available, adjusted profit)
|
|
89
|
+
Excess CA = CA available - CA claimed → carry forward
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Unabsorbed CA from prior years
|
|
93
|
+
|
|
94
|
+
Applied after enhanced deductions, capped at remaining chargeable income.
|
|
95
|
+
|
|
96
|
+
| Rule | Detail |
|
|
97
|
+
|------|--------|
|
|
98
|
+
| **Duration** | Indefinite — no time limit |
|
|
99
|
+
| **Condition** | Shareholding test |
|
|
100
|
+
| **Set-off order** | Applied AFTER enhanced deductions, BEFORE trade losses |
|
|
101
|
+
|
|
102
|
+
**Input:** `capitalAllowances.balanceBroughtForward` — total unabsorbed CA from all prior YAs.
|
|
103
|
+
|
|
104
|
+
### Combined CA carry-forward
|
|
105
|
+
|
|
106
|
+
The total CA carried forward to the next YA is:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Unabsorbed CA c/f = Current year CA excess + Prior year CA excess (unused portion)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Donations
|
|
115
|
+
|
|
116
|
+
### Current year donations
|
|
117
|
+
|
|
118
|
+
Donations to approved IPCs are claimed at 250% (see `references/sg-tax/enhanced-deductions.md`). The full 250% amount is set off after trade losses.
|
|
119
|
+
|
|
120
|
+
If the 250% deduction exceeds remaining chargeable income, the excess carries forward.
|
|
121
|
+
|
|
122
|
+
### Carry-forward of donations
|
|
123
|
+
|
|
124
|
+
| Rule | Detail |
|
|
125
|
+
|------|--------|
|
|
126
|
+
| **Duration** | **5 years only** (not indefinite) |
|
|
127
|
+
| **Basis** | FIFO — oldest donations used first |
|
|
128
|
+
| **Condition** | Shareholding test |
|
|
129
|
+
| **Set-off order** | Applied AFTER trade losses |
|
|
130
|
+
|
|
131
|
+
**Input:** `donationsCarryForward.broughtForward` — total unabsorbed donations from prior YAs (max 5 years old).
|
|
132
|
+
|
|
133
|
+
**FIFO example:**
|
|
134
|
+
|
|
135
|
+
| Year donated | Original 250% amount | Used in prior YAs | Remaining | Expires after |
|
|
136
|
+
|-------------|---------------------|--------------------|-----------|--------------|
|
|
137
|
+
| YA 2022 | $25,000 | $20,000 | $5,000 | YA 2027 |
|
|
138
|
+
| YA 2023 | $12,500 | $0 | $12,500 | YA 2028 |
|
|
139
|
+
| **Total b/f** | | | **$17,500** | |
|
|
140
|
+
|
|
141
|
+
When claiming, the $5,000 from YA 2022 is used first (oldest first). If only $10,000 of CI is available, $5,000 comes from YA 2022 (exhausted) and $5,000 from YA 2023 ($7,500 remaining).
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## The Shareholding Test
|
|
146
|
+
|
|
147
|
+
Carry-forward claims for trade losses, CA, and donations all require the **shareholding test** to be satisfied.
|
|
148
|
+
|
|
149
|
+
| Requirement | Detail |
|
|
150
|
+
|------------|--------|
|
|
151
|
+
| **Rule** | >= 50% of the company's shareholders (by voting power) must be substantially the same at two dates |
|
|
152
|
+
| **Date 1** | Last day of the YA in which the loss/CA/donation arose |
|
|
153
|
+
| **Date 2** | First day of the YA in which the loss/CA/donation is to be deducted |
|
|
154
|
+
| **"Substantially the same"** | Same persons holding >= 50% of total voting shares |
|
|
155
|
+
|
|
156
|
+
**Example:** A company has unabsorbed losses from YA 2024. To claim them in YA 2026:
|
|
157
|
+
- Shareholders on 31 Dec 2024 (last day of YA 2024) must be >= 50% the same as
|
|
158
|
+
- Shareholders on 1 Jan 2026 (first day of YA 2026)
|
|
159
|
+
|
|
160
|
+
If a majority ownership change occurred between those dates, the carry-forward is **forfeited**.
|
|
161
|
+
|
|
162
|
+
### Exceptions
|
|
163
|
+
|
|
164
|
+
- **Listed companies** are exempt from the shareholding test (publicly traded companies have frequent shareholder changes)
|
|
165
|
+
- **Shareholders can be traced through** — if the ultimate beneficial owners are the same even though the intermediate holding company changed, IRAS may accept the claim on appeal
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Current Year Loss Scenario (Worked Example)
|
|
170
|
+
|
|
171
|
+
**Scenario:** Company with an accounting loss, prior year carry-forwards.
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Accounting profit (loss): ($50,000)
|
|
175
|
+
Add-backs:
|
|
176
|
+
Depreciation: $30,000
|
|
177
|
+
Entertainment: $2,000
|
|
178
|
+
Total add-backs: $32,000
|
|
179
|
+
Deductions:
|
|
180
|
+
Actual lease payments: $5,000
|
|
181
|
+
Total deductions: $5,000
|
|
182
|
+
|
|
183
|
+
Adjusted profit/(loss): ($23,000) ← negative = current year loss
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**What happens:**
|
|
187
|
+
- Current year CA: $0 (cannot apply CA against a loss)
|
|
188
|
+
- Enhanced deductions: $0 (cannot apply against a loss)
|
|
189
|
+
- Prior year CA: $0 (cannot apply against a loss)
|
|
190
|
+
- Trade losses: $0 (cannot apply against a loss)
|
|
191
|
+
- Donations: $0 (cannot apply against a loss)
|
|
192
|
+
- Chargeable income: $0
|
|
193
|
+
- Tax payable: $0
|
|
194
|
+
|
|
195
|
+
**Carry-forwards to next YA:**
|
|
196
|
+
- Current year trade loss: $23,000
|
|
197
|
+
- Total unabsorbed losses c/f: prior year $40,000 + current year $23,000 = $63,000
|
|
198
|
+
- Unabsorbed CA: prior year $15,000 + current year CA of $20,000 (could not be claimed) = $35,000
|
|
199
|
+
- Unabsorbed donations: prior year $5,000 (unchanged, ages by 1 year)
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Profitable Year with Carry-Forwards (Worked Example)
|
|
204
|
+
|
|
205
|
+
**Scenario:** Company turns profitable, has carry-forwards from prior years.
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
Adjusted profit: $180,000
|
|
209
|
+
|
|
210
|
+
Step 1 — Current year CA: ($45,000) Remaining: $135,000
|
|
211
|
+
Step 2 — Enhanced deductions: ($8,000) Remaining: $127,000
|
|
212
|
+
Step 3 — Unabsorbed CA b/f: ($35,000) Remaining: $92,000
|
|
213
|
+
Chargeable income before losses: $92,000
|
|
214
|
+
Step 4 — Trade losses b/f: ($63,000) Remaining: $29,000
|
|
215
|
+
Step 5 — Current year donations: ($12,500) Remaining: $16,500
|
|
216
|
+
Step 6 — Prior year donations: ($5,000) Remaining: $11,500
|
|
217
|
+
|
|
218
|
+
Chargeable income: $11,500
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Carry-forwards to next YA:**
|
|
222
|
+
- Unabsorbed losses: $0 (fully absorbed)
|
|
223
|
+
- Unabsorbed CA: $0 (fully absorbed)
|
|
224
|
+
- Unabsorbed donations: $0 (fully absorbed)
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Questions for the Wizard
|
|
229
|
+
|
|
230
|
+
Ask these during Phase 3 (Step 19) of the wizard workflow:
|
|
231
|
+
|
|
232
|
+
1. **"Does the company have unabsorbed trade losses from prior years? If so, how much?"**
|
|
233
|
+
- Record in `losses.broughtForward`
|
|
234
|
+
- Note: the total across all prior years, not per-year breakdown
|
|
235
|
+
|
|
236
|
+
2. **"Does the company have unabsorbed capital allowances from prior years? If so, how much?"**
|
|
237
|
+
- Record in `capitalAllowances.balanceBroughtForward`
|
|
238
|
+
|
|
239
|
+
3. **"Does the company have unabsorbed donation deductions from prior years?"**
|
|
240
|
+
- If yes: "How much, and from which YAs? (Donations older than 5 years have expired.)"
|
|
241
|
+
- Record the valid total in `donationsCarryForward.broughtForward`
|
|
242
|
+
|
|
243
|
+
4. **"Has the company's shareholding remained at least 50% the same since the year the losses/CA/donations arose?"**
|
|
244
|
+
- If no: the carry-forward claims may be forfeited. Advise the user to check with their tax advisor.
|
|
245
|
+
- If unsure: flag as a risk item in the workpaper.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Summary: Carry-Forward Input Fields
|
|
250
|
+
|
|
251
|
+
| Item | Input field | Duration | Condition |
|
|
252
|
+
|------|------------|----------|-----------|
|
|
253
|
+
| Trade losses | `losses.broughtForward` | Indefinite | Shareholding test |
|
|
254
|
+
| Capital allowances | `capitalAllowances.balanceBroughtForward` | Indefinite | Shareholding test |
|
|
255
|
+
| Donations | `donationsCarryForward.broughtForward` | 5 years (FIFO) | Shareholding test |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Common Mistakes
|
|
260
|
+
|
|
261
|
+
1. **Applying CA against a loss.** If adjusted profit is negative, no CA, enhanced deductions, or other reliefs can be applied. Everything carries forward. The engine handles this correctly, but users sometimes try to force a CA claim in a loss year.
|
|
262
|
+
|
|
263
|
+
2. **Forgetting the set-off order.** Current year CA comes FIRST, then enhanced deductions, then prior year CA, then losses, then donations. Applying them out of order can produce different carry-forward amounts.
|
|
264
|
+
|
|
265
|
+
3. **Claiming expired donations.** Donations older than 5 years cannot be carried forward. If a user provides a brought-forward donation amount, verify it only includes amounts from the last 5 YAs.
|
|
266
|
+
|
|
267
|
+
4. **Ignoring the shareholding test.** If ownership changed significantly (e.g., company was acquired), all carry-forwards may be forfeited. Always ask.
|
|
268
|
+
|
|
269
|
+
5. **Double-counting current year losses.** If the company made a loss this year, that loss is automatically added to the carry-forward pool by the computation engine. Do not also include it in `losses.broughtForward` (which is prior year losses only).
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Singapore Corporate Income Tax — Overview
|
|
2
|
+
|
|
3
|
+
Foundational context for Singapore corporate income tax (CIT). Read this first before working on any CIT computation, Form C-S preparation, or tax adjustment classification.
|
|
4
|
+
|
|
5
|
+
**CLI:** `jaz tax sg-cs --help`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## The Basics
|
|
10
|
+
|
|
11
|
+
| Item | Detail |
|
|
12
|
+
|------|--------|
|
|
13
|
+
| **Tax rate** | 17% flat rate on chargeable income |
|
|
14
|
+
| **Tax authority** | Inland Revenue Authority of Singapore (IRAS) |
|
|
15
|
+
| **Filing portal** | IRAS myTax Portal (https://mytax.iras.gov.sg) |
|
|
16
|
+
| **Who must file** | Every Singapore-incorporated company, including dormant companies and companies with no income |
|
|
17
|
+
| **Accounting standard** | SFRS(I) or SFRS for Small Entities — tax computation starts from accounting profit |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Year of Assessment (YA) Concept
|
|
22
|
+
|
|
23
|
+
Singapore taxes on a **preceding-year basis**. The Year of Assessment (YA) is the year in which tax is assessed, and it always refers to the income earned in the **prior** financial year (the "basis period").
|
|
24
|
+
|
|
25
|
+
| Term | Definition | Example |
|
|
26
|
+
|------|-----------|---------|
|
|
27
|
+
| **Basis period** | The financial year in which income was earned | 1 Jan 2025 to 31 Dec 2025 |
|
|
28
|
+
| **Year of Assessment (YA)** | The calendar year immediately following the basis period | YA 2026 |
|
|
29
|
+
|
|
30
|
+
**Rule:** YA = calendar year in which the basis period **ends** + 1.
|
|
31
|
+
|
|
32
|
+
| FY End Date | Basis Period | YA |
|
|
33
|
+
|-------------|-------------|-----|
|
|
34
|
+
| 31 Dec 2025 | 1 Jan 2025 - 31 Dec 2025 | 2026 |
|
|
35
|
+
| 31 Mar 2025 | 1 Apr 2024 - 31 Mar 2025 | 2026 |
|
|
36
|
+
| 30 Jun 2025 | 1 Jul 2024 - 30 Jun 2025 | 2026 |
|
|
37
|
+
|
|
38
|
+
**Non-standard basis periods:** A company's basis period is usually its financial year. If the FY does not end on 31 December, the YA is the calendar year in which the FY ends plus one. A newly incorporated company with a short first FY still follows this rule — the first YA maps to the calendar year after the first FY end.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Form Types
|
|
43
|
+
|
|
44
|
+
Singapore offers three corporate income tax return forms. The choice depends on company size and complexity.
|
|
45
|
+
|
|
46
|
+
### Form C-S (Simplified)
|
|
47
|
+
|
|
48
|
+
The standard SMB return. Most small companies file this.
|
|
49
|
+
|
|
50
|
+
**Eligibility (ALL must be met):**
|
|
51
|
+
- Annual revenue $5 million or below
|
|
52
|
+
- Only income taxable at the 17% corporate rate
|
|
53
|
+
- NOT claiming any of: group relief, investment allowance, foreign tax credit, carry-back of capital allowances or losses, tax exemption for income from overseas or qualifying debt securities
|
|
54
|
+
|
|
55
|
+
**18 fields** covering revenue, adjusted profit, capital allowances, enhanced deductions, losses, and tax computation.
|
|
56
|
+
|
|
57
|
+
### Form C-S Lite
|
|
58
|
+
|
|
59
|
+
An even simpler version for micro businesses.
|
|
60
|
+
|
|
61
|
+
**Eligibility (ALL must be met):**
|
|
62
|
+
- All Form C-S eligibility criteria, AND
|
|
63
|
+
- Annual revenue $200,000 or below
|
|
64
|
+
|
|
65
|
+
**6 fields only:** revenue, adjusted profit/loss, chargeable income, exempt amount, tax payable, and net tax payable.
|
|
66
|
+
|
|
67
|
+
### Form C (Full)
|
|
68
|
+
|
|
69
|
+
For companies that do not qualify for C-S or C-S Lite. Requires detailed financial statements, tax computation, and supporting schedules. Not covered by the `jaz tax sg-cs` command — use a tax agent.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Key Deadlines
|
|
74
|
+
|
|
75
|
+
| Deadline | When | Penalty for Late Filing |
|
|
76
|
+
|----------|------|------------------------|
|
|
77
|
+
| **ECI (Estimated Chargeable Income)** | Within 3 months of financial year-end | No penalty for late filing, but waiver applies only if revenue <= $5M AND ECI is nil |
|
|
78
|
+
| **Form C-S / C-S Lite** | 30 November of the YA (e.g., YA 2026 due 30 Nov 2026) | $200-$1,000 composition penalty, followed by summons if still outstanding |
|
|
79
|
+
| **Form C** | 30 November of the YA | Same as Form C-S |
|
|
80
|
+
| **e-Filing extension** | 15 December of the YA (automatic for e-filing) | Only applies if filing electronically via myTax Portal |
|
|
81
|
+
| **Tax payment** | Within 1 month of receiving Notice of Assessment (NOA) | 5% late payment penalty |
|
|
82
|
+
|
|
83
|
+
**ECI waiver:** Companies with annual revenue of $5 million or below AND whose ECI is nil (zero chargeable income) do not need to file ECI. All other companies must file.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Income Types (Section 10(1))
|
|
88
|
+
|
|
89
|
+
Singapore taxes income under these categories:
|
|
90
|
+
|
|
91
|
+
| Section | Income Type | Common Sources |
|
|
92
|
+
|---------|-------------|----------------|
|
|
93
|
+
| **10(1)(a)** | Gains or profits from trade, business, profession, or vocation | Revenue, service income, commissions |
|
|
94
|
+
| **10(1)(b)** | Gains or profits from employment | Not applicable to companies |
|
|
95
|
+
| **10(1)(c)** | Dividends, interest, or discounts | Foreign dividends (may be exempt), interest income |
|
|
96
|
+
| **10(1)(d)** | Rent, royalties, premiums, or other profits from property | Rental income, royalty income |
|
|
97
|
+
| **10(1)(e)** | Gains not falling in (a)-(d) of an income nature | Miscellaneous income |
|
|
98
|
+
| **10(1)(f)** | Gains from sale of real property / intellectual property | Not usually relevant for SMBs |
|
|
99
|
+
| **10(1)(g)** | Other gains of an income nature | FX gains, insurance proceeds (if revenue nature) |
|
|
100
|
+
|
|
101
|
+
**For most SMBs on Form C-S:** All income falls under Section 10(1)(a) — trade/business income. The total from the P&L statement is the starting point.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Tax Exemptions
|
|
106
|
+
|
|
107
|
+
Two mutually exclusive exemption schemes reduce the effective tax rate for qualifying companies.
|
|
108
|
+
|
|
109
|
+
### Start-Up Tax Exemption (SUTE)
|
|
110
|
+
|
|
111
|
+
For newly incorporated companies in their **first three YAs**.
|
|
112
|
+
|
|
113
|
+
| Band | Chargeable Income | Exemption Rate | Tax Saved |
|
|
114
|
+
|------|-------------------|----------------|-----------|
|
|
115
|
+
| First $100,000 | Up to $100,000 | 75% | Up to $12,750 |
|
|
116
|
+
| Next $100,000 | $100,001 to $200,000 | 50% | Up to $8,500 |
|
|
117
|
+
| **Maximum saving** | | | **$21,250 per YA** |
|
|
118
|
+
|
|
119
|
+
**Conditions:** The company must be incorporated in Singapore, have no more than 20 shareholders throughout the basis period, and all shareholders must be individuals. There are anti-avoidance rules for companies set up to split income.
|
|
120
|
+
|
|
121
|
+
### Partial Tax Exemption (PTE)
|
|
122
|
+
|
|
123
|
+
For all other companies (not on SUTE).
|
|
124
|
+
|
|
125
|
+
| Band | Chargeable Income | Exemption Rate | Tax Saved |
|
|
126
|
+
|------|-------------------|----------------|-----------|
|
|
127
|
+
| First $10,000 | Up to $10,000 | 75% | Up to $1,275 |
|
|
128
|
+
| Next $190,000 | $10,001 to $200,000 | 50% | Up to $16,150 |
|
|
129
|
+
| **Maximum saving** | | | **$17,425 per YA** |
|
|
130
|
+
|
|
131
|
+
**Note:** PTE applies automatically unless SUTE is elected. For the `jaz tax sg-cs` input, set `exemptionType` to `'sute'`, `'pte'`, or `'none'`.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## CIT Rebate
|
|
136
|
+
|
|
137
|
+
IRAS occasionally grants a CIT rebate (percentage discount on gross tax, subject to a cap). Rebates vary by YA and are set in the annual Budget.
|
|
138
|
+
|
|
139
|
+
| YA | Rebate Rate | Cap |
|
|
140
|
+
|----|------------|-----|
|
|
141
|
+
| 2024 | 50% | $40,000 |
|
|
142
|
+
| 2025 | 50% | $40,000 |
|
|
143
|
+
| 2026 | 40% | $40,000 |
|
|
144
|
+
|
|
145
|
+
The `jaz tax sg-cs` engine applies the correct rebate for the given YA automatically. If a YA has no rebate in the schedule, the rebate is zero.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## One-Tier Dividend System
|
|
150
|
+
|
|
151
|
+
Singapore operates a **one-tier corporate tax system**. Once a company pays tax on its chargeable income, all dividends paid to shareholders from that income are **tax-exempt** in the hands of the shareholders.
|
|
152
|
+
|
|
153
|
+
**For CIT computation:**
|
|
154
|
+
- Dividend income received from Singapore-resident companies is **fully exempt** under Section 13(26)
|
|
155
|
+
- This income should be added back as a non-taxable item (`addBacks.exemptDividends`) and excluded from chargeable income
|
|
156
|
+
- The dividend itself is not subject to withholding tax
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Withholding Tax
|
|
161
|
+
|
|
162
|
+
Withholding tax applies to certain payments to non-residents (royalties, interest, technical fees, management fees, rent). For most SMBs filing Form C-S:
|
|
163
|
+
|
|
164
|
+
- WHT is **not a Form C-S field** — it is remitted separately to IRAS
|
|
165
|
+
- If WHT applies, the company cannot file Form C-S (one of the disqualifying criteria is claiming foreign tax credit)
|
|
166
|
+
- If you encounter WHT obligations, recommend Form C and a tax agent
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Tax Computation Flow (High Level)
|
|
171
|
+
|
|
172
|
+
This is the conceptual flow from accounting profit to net tax payable. Each step maps to sections of the `SgFormCsInput` type.
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Accounting Profit (from P&L)
|
|
176
|
+
+ Add-backs (non-deductible expenses)
|
|
177
|
+
- Further deductions (non-taxable income, IFRS 16 reversal)
|
|
178
|
+
= Adjusted Profit / Loss
|
|
179
|
+
- Capital Allowances (current year + brought forward)
|
|
180
|
+
- Enhanced Deductions (R&D, IP, donations 250%)
|
|
181
|
+
= Chargeable Income before Losses
|
|
182
|
+
- Loss Relief (unabsorbed losses brought forward)
|
|
183
|
+
- Donation Relief (unabsorbed donations brought forward)
|
|
184
|
+
= Chargeable Income
|
|
185
|
+
- Exemption (SUTE or PTE)
|
|
186
|
+
= Taxable Income
|
|
187
|
+
x 17%
|
|
188
|
+
= Gross Tax
|
|
189
|
+
- CIT Rebate
|
|
190
|
+
= Net Tax Payable
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Practitioner Tips
|
|
196
|
+
|
|
197
|
+
**Start with the P&L.** Every CIT computation starts from the accounting net profit or loss. Pull the P&L from Jaz for the basis period. The bottom line is your `accountingProfit` input.
|
|
198
|
+
|
|
199
|
+
**Revenue determines form type.** If revenue exceeds $5M, the company cannot file Form C-S. If revenue is $200K or below, it qualifies for C-S Lite (fewer fields, simpler process).
|
|
200
|
+
|
|
201
|
+
**Ask about SUTE eligibility.** New companies in their first 3 YAs can save up to $21,250/YA with SUTE. Always ask: "Is this company within its first three Years of Assessment?" and "Does it have 20 or fewer individual shareholders?"
|
|
202
|
+
|
|
203
|
+
**Accounting depreciation is ALWAYS added back.** This is the single most common add-back. Depreciation per the books is non-deductible — capital allowances (tax depreciation) replace it. No exceptions.
|
|
204
|
+
|
|
205
|
+
**Keep it stateless.** The `jaz tax sg-cs` engine is a pure computation tool. It does not store or retrieve prior-year data. The agent must provide carry-forward balances (unabsorbed losses, unabsorbed CA, unabsorbed donations) from the user or prior-year workpapers.
|
|
206
|
+
|
|
207
|
+
**Common SMB profile:** Revenue under $5M, standard trade income, no foreign tax credits, no group relief. This describes the vast majority of companies that file Form C-S.
|