Use this skill with your AI agent
Paste this skill into your AI agent's context, or save the file to your project. Works with any AI agent that reads markdown.
| 1 | --- |
| 2 | name: id-payroll-pph21 |
| 3 | description: Use this skill whenever asked to calculate, review, or advise on Indonesian payroll — PPh 21 (income tax withholding), BPJS Kesehatan (health insurance), BPJS Ketenagakerjaan (JHT, JP, JKK, JKM employment social security), biaya jabatan, or PTKP thresholds. Trigger on phrases like "PPh 21", "PPh Pasal 21", "pajak penghasilan", "BPJS", "gaji Indonesia", "payroll Indonesia", "potong pajak karyawan", "TER PPh 21", "PTKP", or any Indonesia employment income tax / social security request. ALWAYS read this skill before touching any Indonesia payroll or PPh 21 work. |
| 4 | version: 1.0 |
| 5 | jurisdiction: ID |
| 6 | tax_year: 2025 |
| 7 | category: international |
| 8 | depends_on: |
| 9 | - foundation |
| 10 | --- |
| 11 | |
| 12 | # Indonesia Payroll — PPh 21 & BPJS Contributions Skill v1.0 |
| 13 | |
| 14 | --- |
| 15 | |
| 16 | ## Section 1 — Quick reference |
| 17 | |
| 18 | | Field | Value | |
| 19 | |---|---| |
| 20 | | Country | Indonesia (Republik Indonesia) | |
| 21 | | Tax | PPh 21 — Pajak Penghasilan Pasal 21 (Employment Income Tax Withholding) | |
| 22 | | Currency | IDR (Indonesian Rupiah / Rp) | |
| 23 | | Tax year | Calendar year (1 Jan – 31 Dec) | |
| 24 | | Current tax year | 2025 | |
| 25 | | Tax authority | Direktorat Jenderal Pajak (DJP) — Directorate General of Taxes | |
| 26 | | Return forms | SPT Tahunan PPh Orang Pribadi (1770/1770S/1770SS) | |
| 27 | | Monthly withholding | E-Bupot PPh 21/26 via DJP Online | |
| 28 | | Filing deadline | 31 March (annual); 20th of following month (monthly E-Bupot) | |
| 29 | | Governing law | UU PPh No. 36/2008, as amended by UU HPP No. 7/2021; PP 58/2023; PMK 168/2023 | |
| 30 | | Source credit | `steevenz/id-payroll-calculator` (MIT) + `KejawenLab/PPH21` (MIT) + DJP / official regulations | |
| 31 | | Contributor | Open Accountants Community | |
| 32 | | Validated by | Pending — requires sign-off by a qualified Indonesian tax consultant | |
| 33 | | Skill version | 1.0 | |
| 34 | |
| 35 | --- |
| 36 | |
| 37 | ## Section 2 — PPh 21 progressive tax brackets (Tarif Pasal 17 UU HPP) |
| 38 | |
| 39 | Tax is computed on **Penghasilan Kena Pajak (PKP)** — taxable income after deductions and PTKP. |
| 40 | |
| 41 | These brackets are from UU HPP No. 7/2021, effective from 1 January 2022 onward. They are permanent and unchanged through 2025/2026. |
| 42 | |
| 43 | | Annual PKP (IDR) | Rate | Max tax in bracket | |
| 44 | |---|---|---| |
| 45 | | 0 – 60,000,000 | 5% | 3,000,000 | |
| 46 | | 60,000,001 – 250,000,000 | 15% | 28,500,000 | |
| 47 | | 250,000,001 – 500,000,000 | 25% | 62,500,000 | |
| 48 | | 500,000,001 – 5,000,000,000 | 30% | 1,350,000,000 | |
| 49 | | Over 5,000,000,000 | 35% | — | |
| 50 | |
| 51 | > **Note:** The `steevenz/id-payroll-calculator` and `KejawenLab/PPH21` repos use the older pre-HPP brackets (first bracket 0–50M, no 35% bracket). The brackets above reflect the current law. |
| 52 | |
| 53 | **No-NPWP surcharge:** Employees without an NPWP (tax ID number) are subject to an additional 20% surcharge on the calculated PPh 21 liability (per `steevenz/id-payroll-calculator` `Pph21.php`). |
| 54 | |
| 55 | --- |
| 56 | |
| 57 | ## Section 3 — PTKP (Penghasilan Tidak Kena Pajak / Non-Taxable Income) |
| 58 | |
| 59 | PTKP is deducted from annual net income before applying the progressive brackets. Amounts are per PMK 101/PMK.010/2016, unchanged through 2025. |
| 60 | |
| 61 | | Status code | Description | Annual PTKP (IDR) | |
| 62 | |---|---|---| |
| 63 | | TK/0 | Single, no dependents | 54,000,000 | |
| 64 | | TK/1 | Single, 1 dependent | 58,500,000 | |
| 65 | | TK/2 | Single, 2 dependents | 63,000,000 | |
| 66 | | TK/3 | Single, 3 dependents | 67,500,000 | |
| 67 | | K/0 | Married, no dependents | 58,500,000 | |
| 68 | | K/1 | Married, 1 dependent | 63,000,000 | |
| 69 | | K/2 | Married, 2 dependents | 67,500,000 | |
| 70 | | K/3 | Married, 3 dependents | 72,000,000 | |
| 71 | |
| 72 | Additional rules: |
| 73 | - Maximum 3 dependents (tanggungan) are recognized |
| 74 | - If wife's income is combined (penghasilan digabung), add an additional IDR 54,000,000 |
| 75 | |
| 76 | Source: `steevenz/id-payroll-calculator` → `State.php` → `$listOfPTKP` array. |
| 77 | |
| 78 | --- |
| 79 | |
| 80 | ## Section 4 — Biaya Jabatan (Position Deduction) |
| 81 | |
| 82 | | Parameter | Value | |
| 83 | |---|---| |
| 84 | | Rate | 5% of annual gross income | |
| 85 | | Monthly maximum | IDR 500,000 | |
| 86 | | Annual maximum | IDR 6,000,000 | |
| 87 | | Applies to | Permanent employees (pegawai tetap) only | |
| 88 | |
| 89 | Employees earning at or below the province minimum wage are exempt from biaya jabatan (per `steevenz/id-payroll-calculator` logic). |
| 90 | |
| 91 | Source: UU DJP No. PER-32/PJ/2015 Pasal 21 ayat 3; `PayrollCalculator.php`. |
| 92 | |
| 93 | --- |
| 94 | |
| 95 | ## Section 5 — BPJS Kesehatan (Health Insurance) |
| 96 | |
| 97 | | Component | Rate | Paid by | |
| 98 | |---|---|---| |
| 99 | | Employer contribution | 4% of gross monthly salary | Employer | |
| 100 | | Employee contribution | 1% of gross monthly salary | Employee (payroll deduction) | |
| 101 | | **Total** | **5%** | | |
| 102 | |
| 103 | | Parameter | Value | |
| 104 | |---|---| |
| 105 | | Maximum wage basis | IDR 12,000,000/month | |
| 106 | | Additional dependents | If employee has > 5 family dependents, additional 1% deduction per extra dependent | |
| 107 | |
| 108 | Source: `steevenz/id-payroll-calculator` → `PayrollCalculator.php` (employer 4%, employee 1%). |
| 109 | |
| 110 | --- |
| 111 | |
| 112 | ## Section 6 — BPJS Ketenagakerjaan (Employment Social Security) |
| 113 | |
| 114 | ### 6a — JHT (Jaminan Hari Tua / Old-Age Savings) |
| 115 | |
| 116 | | Component | Rate | Paid by | |
| 117 | |---|---|---| |
| 118 | | Employer contribution | 3.70% of gross monthly salary | Employer | |
| 119 | | Employee contribution | 2.00% of gross monthly salary | Employee (payroll deduction) | |
| 120 | | **Total** | **5.70%** | | |
| 121 | |
| 122 | Source: `steevenz/id-payroll-calculator` → `PayrollCalculator.php`. |
| 123 | |
| 124 | ### 6b — JP (Jaminan Pensiun / Pension Insurance) |
| 125 | |
| 126 | | Component | Rate | Paid by | |
| 127 | |---|---|---| |
| 128 | | Employer contribution | 2.00% of gross monthly salary | Employer | |
| 129 | | Employee contribution | 1.00% of gross monthly salary | Employee (payroll deduction) | |
| 130 | | **Total** | **3.00%** | | |
| 131 | |
| 132 | | Parameter | Value | |
| 133 | |---|---| |
| 134 | | Maximum wage basis | IDR 10,547,400/month (effective 1 March 2025) | |
| 135 | |
| 136 | When salary exceeds the wage ceiling, contributions are calculated on the ceiling amount, not actual salary. Example: for salary IDR 15,000,000, employer JP = 2% × 10,547,400 = IDR 210,948; employee JP = 1% × 10,547,400 = IDR 105,474. |
| 137 | |
| 138 | Source: `steevenz/id-payroll-calculator` → `PayrollCalculator.php` (cap logic at `7000000` in repo, now updated to IDR 10,547,400 per BPJS Ketenagakerjaan 2025 regulation). |
| 139 | |
| 140 | ### 6c — JKK (Jaminan Kecelakaan Kerja / Work Accident Insurance) |
| 141 | |
| 142 | Paid entirely by the employer. Rate depends on the company's industry risk grade: |
| 143 | |
| 144 | | Risk grade | Industry type | Rate | |
| 145 | |---|---|---| |
| 146 | | Grade 1 | Very low risk (e.g. financial services, offices) | 0.24% | |
| 147 | | Grade 2 | Low risk (e.g. retail, hospitality) | 0.54% | |
| 148 | | Grade 3 | Medium risk (e.g. manufacturing, light industry) | 0.89% | |
| 149 | | Grade 4 | High risk (e.g. transportation, heavy industry) | 1.27% | |
| 150 | | Grade 5 | Very high risk (e.g. mining, construction) | 1.74% | |
| 151 | |
| 152 | Source: `steevenz/id-payroll-calculator` → `State.php` → `$listOfJKKRiskGradePercentage` array. |
| 153 | |
| 154 | ### 6d — JKM (Jaminan Kematian / Death Insurance) |
| 155 | |
| 156 | | Component | Rate | Paid by | |
| 157 | |---|---|---| |
| 158 | | Employer contribution | 0.30% of gross monthly salary | Employer | |
| 159 | | Employee contribution | — | — | |
| 160 | | **Total** | **0.30%** | | |
| 161 | |
| 162 | Source: `steevenz/id-payroll-calculator` → `PayrollCalculator.php`. |
| 163 | |
| 164 | ### 6e — JKP (Jaminan Kehilangan Pekerjaan / Job Loss Insurance) |
| 165 | |
| 166 | | Component | Rate | Paid by | |
| 167 | |---|---|---| |
| 168 | | Contribution | 0.46% | Government + reallocation from JKK/JKM surplus | |
| 169 | |
| 170 | JKP was introduced by PP 37/2021 (effective February 2022). The 0.46% is funded jointly: 0.22% from employer contribution reallocated from JKK/JKM, 0.14% from government, and 0.10% from reallocation of BPJS Ketenagakerjaan surplus. **No additional payroll deduction for employer or employee.** This program is listed for completeness but does not change the payroll calculation. |
| 171 | |
| 172 | --- |
| 173 | |
| 174 | ## Section 7 — Summary of all payroll contributions |
| 175 | |
| 176 | | Program | Employer | Employee | Total | |
| 177 | |---|---|---|---| |
| 178 | | BPJS Kesehatan | 4.00% | 1.00% | 5.00% | |
| 179 | | JHT | 3.70% | 2.00% | 5.70% | |
| 180 | | JP (capped at IDR 10,547,400) | 2.00% | 1.00% | 3.00% | |
| 181 | | JKK (varies by risk grade) | 0.24%–1.74% | — | 0.24%–1.74% | |
| 182 | | JKM | 0.30% | — | 0.30% | |
| 183 | | **Total (using JKK grade 2)** | **10.54%** | **4.00%** | **14.54%** | |
| 184 | |
| 185 | --- |
| 186 | |
| 187 | ## Section 8 — TER (Tarif Efektif Rata-rata / Average Effective Rate) |
| 188 | |
| 189 | Since 1 January 2024, monthly PPh 21 withholding for permanent employees uses the TER scheme (PP 58/2023, PMK 168/2023) instead of the old cumulative method. |
| 190 | |
| 191 | **How TER works:** |
| 192 | 1. Months January–November: `PPh 21 = Gross Monthly Income × TER rate` |
| 193 | 2. December (or final month of employment): recalculate full-year liability using progressive brackets (Section 2), then subtract all TER withheld in months 1–11 |
| 194 | |
| 195 | ### TER category assignment |
| 196 | |
| 197 | | TER Category | PTKP Status | |
| 198 | |---|---| |
| 199 | | A | TK/0, TK/1, K/0 | |
| 200 | | B | TK/2, TK/3, K/1, K/2 | |
| 201 | | C | K/3 | |
| 202 | |
| 203 | ### TER Category A — selected rates (common salary ranges) |
| 204 | |
| 205 | | Monthly gross income (IDR) | TER rate | |
| 206 | |---|---| |
| 207 | | 0 – 5,400,000 | 0% | |
| 208 | | 5,400,001 – 5,650,000 | 0.25% | |
| 209 | | 5,650,001 – 5,950,000 | 0.50% | |
| 210 | | 5,950,001 – 6,300,000 | 0.75% | |
| 211 | | 6,300,001 – 6,750,000 | 1.00% | |
| 212 | | 6,750,001 – 7,500,000 | 1.25% | |
| 213 | | 7,500,001 – 8,550,000 | 1.50% | |
| 214 | | 8,550,001 – 9,650,000 | 1.75% | |
| 215 | | 9,650,001 – 10,050,000 | 2.00% | |
| 216 | | 10,050,001 – 10,350,000 | 2.25% | |
| 217 | | 10,350,001 – 10,700,000 | 2.50% | |
| 218 | | 10,700,001 – 11,050,000 | 3.00% | |
| 219 | | 11,050,001 – 11,600,000 | 3.50% | |
| 220 | | 11,600,001 – 12,500,000 | 4.00% | |
| 221 | | 12,500,001 – 13,750,000 | 5.00% | |
| 222 | | 13,750,001 – 15,100,000 | 6.00% | |
| 223 | | 15,100,001 – 16,950,000 | 7.00% | |
| 224 | | 16,950,001 – 19,750,000 | 8.00% | |
| 225 | | 19,750,001 – 24,150,000 | 9.00% | |
| 226 | | 24,150,001 – 26,450,000 | 10.00% | |
| 227 | | 26,450,001 – 28,000,000 | 11.00% | |
| 228 | | 28,000,001 – 30,050,000 | 12.00% | |
| 229 | | 30,050,001 – 32,400,000 | 13.00% | |
| 230 | | 32,400,001 – 35,400,000 | 14.00% | |
| 231 | | 35,400,001 – 39,100,000 | 15.00% | |
| 232 | | 39,100,001 – 43,850,000 | 16.00% | |
| 233 | | 43,850,001 – 47,800,000 | 17.00% | |
| 234 | | 47,800,001 – 51,400,000 | 18.00% | |
| 235 | | 51,400,001 – 56,300,000 | 19.00% | |
| 236 | | 56,300,001 – 62,200,000 | 20.00% | |
| 237 | | 62,200,001 – 68,600,000 | 21.00% | |
| 238 | | 68,600,001 – 77,500,000 | 22.00% | |
| 239 | | 77,500,001 – 89,000,000 | 23.00% | |
| 240 | | 89,000,001 – 103,000,000 | 24.00% | |
| 241 | | 103,000,001 – 125,000,000 | 25.00% | |
| 242 | | 125,000,001 – 157,000,000 | 26.00% | |
| 243 | | 157,000,001 – 206,000,000 | 27.00% | |
| 244 | | 206,000,001 – 337,000,000 | 28.00% | |
| 245 | | 337,000,001 – 454,000,000 | 29.00% | |
| 246 | | 454,000,001 – 550,000,000 | 30.00% | |
| 247 | | 550,000,001 – 695,000,000 | 31.00% | |
| 248 | | 695,000,001 – 910,000,000 | 32.00% | |
| 249 | | 910,000,001 – 1,400,000,000 | 33.00% | |
| 250 | | Over 1,400,000,000 | 34.00% | |
| 251 | |
| 252 | ### TER Category B — selected rates (common salary ranges) |
| 253 | |
| 254 | | Monthly gross income (IDR) | TER rate | |
| 255 | |---|---| |
| 256 | | 0 – 6,200,000 | 0% | |
| 257 | | 6,200,001 – 6,500,000 | 0.25% | |
| 258 | | 6,500,001 – 6,850,000 | 0.50% | |
| 259 | | 6,850,001 – 7,300,000 | 0.75% | |
| 260 | | 7,300,001 – 9,200,000 | 1.00% | |
| 261 | | 9,200,001 – 10,750,000 | 1.50% | |
| 262 | | 10,750,001 – 11,250,000 | 2.00% | |
| 263 | | 11,250,001 – 11,600,000 | 2.50% | |
| 264 | | 11,600,001 – 12,600,000 | 3.00% | |
| 265 | | 12,600,001 – 13,600,000 | 4.00% | |
| 266 | | 13,600,001 – 14,950,000 | 5.00% | |
| 267 | | 14,950,001 – 16,400,000 | 6.00% | |
| 268 | | 16,400,001 – 18,450,000 | 7.00% | |
| 269 | | 18,450,001 – 21,850,000 | 8.00% | |
| 270 | | 21,850,001 – 26,000,000 | 9.00% | |
| 271 | | 26,000,001 – 27,700,000 | 10.00% | |
| 272 | | Over 27,700,000 | 11%–34% (see PP 58/2023 Annex) | |
| 273 | |
| 274 | ### TER Category C — selected rates (common salary ranges) |
| 275 | |
| 276 | | Monthly gross income (IDR) | TER rate | |
| 277 | |---|---| |
| 278 | | 0 – 6,600,000 | 0% | |
| 279 | | 6,600,001 – 6,950,000 | 0.25% | |
| 280 | | 6,950,001 – 7,350,000 | 0.50% | |
| 281 | | 7,350,001 – 7,800,000 | 0.75% | |
| 282 | | 7,800,001 – 8,850,000 | 1.00% | |
| 283 | | 8,850,001 – 9,800,000 | 1.25% | |
| 284 | | 9,800,001 – 10,950,000 | 1.50% | |
| 285 | | 10,950,001 – 11,200,000 | 1.75% | |
| 286 | | 11,200,001 – 12,050,000 | 2.00% | |
| 287 | | 12,050,001 – 12,950,000 | 3.00% | |
| 288 | | 12,950,001 – 14,150,000 | 4.00% | |
| 289 | | 14,150,001 – 15,550,000 | 5.00% | |
| 290 | | 15,550,001 – 17,050,000 | 6.00% | |
| 291 | | 17,050,001 – 19,500,000 | 7.00% | |
| 292 | | 19,500,001 – 22,700,000 | 8.00% | |
| 293 | | 22,700,001 – 26,600,000 | 9.00% | |
| 294 | | 26,600,001 – 28,100,000 | 10.00% | |
| 295 | | Over 28,100,000 | 11%–34% (see PP 58/2023 Annex) | |
| 296 | |
| 297 | ### TER Harian (Daily Rate) — for non-permanent employees |
| 298 | |
| 299 | | Daily gross income (IDR) | TER rate | |
| 300 | |---|---| |
| 301 | | ≤ 450,000 | 0% | |
| 302 | | 450,001 – 2,500,000 | 0.50% | |
| 303 | | > 2,500,000 | Use 50% × gross × progressive rates (Pasal 17) | |
| 304 | |
| 305 | --- |
| 306 | |
| 307 | ## Section 9 — Annual PPh 21 computation method (December recalculation) |
| 308 | |
| 309 | ``` |
| 310 | Step 1: Gross annual income (gaji + tunjangan tetap + overtime + bonus + THR) |
| 311 | Step 2: − Biaya jabatan (5%, max IDR 6,000,000/year) |
| 312 | Step 3: − Iuran pensiun (employee JP contribution, if applicable) |
| 313 | Step 4: = Penghasilan Neto (net income) |
| 314 | Step 5: − PTKP (based on marital/dependent status) |
| 315 | Step 6: = PKP (Penghasilan Kena Pajak / taxable income) |
| 316 | Step 7: Apply progressive brackets (Section 2) → PPh 21 terutang (annual liability) |
| 317 | Step 8: − TER amounts withheld Jan–Nov |
| 318 | Step 9: = PPh 21 for December (or refund if negative) |
| 319 | ``` |
| 320 | |
| 321 | --- |
| 322 | |
| 323 | ## Section 10 — Worked example: monthly payroll calculation |
| 324 | |
| 325 | **Scenario:** Permanent employee (pegawai tetap), single with no dependents (TK/0), has NPWP. Monthly base salary IDR 10,000,000. Company risk grade 2 (low). No overtime, no bonuses this month. |
| 326 | |
| 327 | ### A — Monthly gross earnings |
| 328 | |
| 329 | | Component | Amount (IDR) | |
| 330 | |---|---| |
| 331 | | Base salary (gaji pokok) | 10,000,000 | |
| 332 | | Fixed allowances (tunjangan tetap) | 0 | |
| 333 | | **Monthly gross** | **10,000,000** | |
| 334 | |
| 335 | ### B — Employer BPJS contributions (company cost, not deducted from employee) |
| 336 | |
| 337 | | Program | Rate | Amount (IDR) | |
| 338 | |---|---|---| |
| 339 | | BPJS Kesehatan | 4.00% × 10,000,000 | 400,000 | |
| 340 | | JHT | 3.70% × 10,000,000 | 370,000 | |
| 341 | | JP | 2.00% × 10,000,000 | 200,000 | |
| 342 | | JKK (grade 2) | 0.54% × 10,000,000 | 54,000 | |
| 343 | | JKM | 0.30% × 10,000,000 | 30,000 | |
| 344 | | **Total employer cost** | | **1,054,000** | |
| 345 | |
| 346 | ### C — Employee deductions (withheld from salary) |
| 347 | |
| 348 | | Program | Rate | Amount (IDR) | |
| 349 | |---|---|---| |
| 350 | | BPJS Kesehatan | 1.00% × 10,000,000 | 100,000 | |
| 351 | | JHT | 2.00% × 10,000,000 | 200,000 | |
| 352 | | JP | 1.00% × 10,000,000 | 100,000 | |
| 353 | | **Total employee BPJS** | | **400,000** | |
| 354 | |
| 355 | ### D — Monthly PPh 21 withholding (TER method, Jan–Nov) |
| 356 | |
| 357 | Status TK/0 → TER Category A. Monthly gross = IDR 10,000,000. |
| 358 | |
| 359 | From TER Category A table: IDR 9,650,001 – 10,050,000 → rate = **2.00%** |
| 360 | |
| 361 | ``` |
| 362 | PPh 21 monthly (TER) = 10,000,000 × 2.00% = IDR 200,000 |
| 363 | ``` |
| 364 | |
| 365 | ### E — Take-home pay |
| 366 | |
| 367 | | Component | Amount (IDR) | |
| 368 | |---|---| |
| 369 | | Monthly gross | 10,000,000 | |
| 370 | | − Employee BPJS | (400,000) | |
| 371 | | − PPh 21 (TER) | (200,000) | |
| 372 | | **Take-home pay** | **9,400,000** | |
| 373 | |
| 374 | ### F — December recalculation (annual true-up) |
| 375 | |
| 376 | | Step | Description | Amount (IDR) | |
| 377 | |---|---|---| |
| 378 | | Gross annual income | 10,000,000 × 12 | 120,000,000 | |
| 379 | | − Biaya jabatan | 5% × 120,000,000 = 6,000,000 (at cap) | (6,000,000) | |
| 380 | | − Iuran pensiun (JP employee) | 100,000 × 12 | (1,200,000) | |
| 381 | | **Penghasilan neto** | | **112,800,000** | |
| 382 | | − PTKP (TK/0) | | (54,000,000) | |
| 383 | | **PKP** | | **58,800,000** | |
| 384 | |
| 385 | Annual tax on PKP of 58,800,000: |
| 386 | |
| 387 | | Bracket | Taxable in bracket | Rate | Tax | |
| 388 | |---|---|---|---| |
| 389 | | 0 – 58,800,000 | 58,800,000 | 5% | 2,940,000 | |
| 390 | | **Total PPh 21 annual** | | | **2,940,000** | |
| 391 | |
| 392 | PPh 21 for December: |
| 393 | ``` |
| 394 | PPh 21 annual = IDR 2,940,000 |
| 395 | − TER withheld (Jan–Nov) = 200,000 × 11 = IDR 2,200,000 |
| 396 | PPh 21 December = IDR 740,000 |
| 397 | ``` |
| 398 | |
| 399 | --- |
| 400 | |
| 401 | ## Section 11 — Payroll calculation methods |
| 402 | |
| 403 | The `steevenz/id-payroll-calculator` supports three PPh 21 calculation methods: |
| 404 | |
| 405 | | Method | Indonesian | Description | |
| 406 | |---|---|---| |
| 407 | | NETT | Pajak ditanggung perusahaan | Employer bears the tax; employee receives full salary | |
| 408 | | GROSS | Pajak ditanggung karyawan | Employee bears the tax; PPh 21 deducted from salary | |
| 409 | | GROSS-UP | Tunjangan pajak | Employer adds a tax allowance equal to the PPh 21 liability, then deducts it — net effect same as NETT but appears on payslip | |
| 410 | |
| 411 | --- |
| 412 | |
| 413 | ## Section 12 — Filing guidance |
| 414 | |
| 415 | ### Who must file? |
| 416 | |
| 417 | All resident individuals with income above the PTKP threshold must file an annual SPT. |
| 418 | |
| 419 | ### Which form? |
| 420 | |
| 421 | | Form | Who | |
| 422 | |---|---| |
| 423 | | 1770SS | Single employer, gross income ≤ IDR 60,000,000/year | |
| 424 | | 1770S | Single employer, gross income > IDR 60,000,000/year | |
| 425 | | 1770 | Multiple income sources / business income | |
| 426 | |
| 427 | ### Key dates |
| 428 | |
| 429 | | Event | Deadline | |
| 430 | |---|---| |
| 431 | | Tax year end | 31 December | |
| 432 | | Monthly E-Bupot PPh 21/26 | 20th of following month | |
| 433 | | Annual SPT filing | 31 March | |
| 434 | | E-filing extension | Via DJP Online at https://djponline.pajak.go.id | |
| 435 | |
| 436 | ### Documents needed |
| 437 | |
| 438 | - Bukti Potong 1721-A1 (withholding certificate from employer) |
| 439 | - BPJS contribution statements |
| 440 | - Additional income documentation (if applicable) |
| 441 | - NPWP (Nomor Pokok Wajib Pajak / Tax ID) |
| 442 | |
| 443 | --- |
| 444 | |
| 445 | ## Section 13 — Conservative defaults |
| 446 | |
| 447 | When in doubt: |
| 448 | |
| 449 | | Situation | Conservative position | |
| 450 | |---|---| |
| 451 | | Employee NPWP status unknown | Assume no NPWP → apply 20% surcharge on PPh 21; flag for confirmation | |
| 452 | | PTKP status unclear | Use TK/0 (lowest PTKP = highest tax); flag for reviewer | |
| 453 | | Company risk grade unknown | Use grade 2 (0.54%) as default; flag for confirmation | |
| 454 | | Employee permanent status unclear | Treat as permanent (pegawai tetap); flag for reviewer | |
| 455 | | Salary above JP cap | Cap JP contributions at IDR 10,547,400 wage basis | |
| 456 | | TER category unclear | Use Category A (most conservative); flag for reviewer | |
| 457 | | BPJS Kesehatan dependents > 5 | Add 1% deduction per extra dependent; confirm family count | |
| 458 | | Bonus / THR month | Include in gross for TER calculation that month; December true-up will reconcile | |
| 459 | | Mid-year joiner | Pro-rate PTKP for partial year; apply TER monthly as normal | |
| 460 | |
| 461 | --- |
| 462 | |
| 463 | ## Section 14 — Classification rules for bank statement |
| 464 | |
| 465 | | Pattern / Keyword | Classification | Notes | |
| 466 | |---|---|---| |
| 467 | | Gaji / Salary / Payroll | Employment income (PPh 21) | Main salary | |
| 468 | | Tunjangan / Allowance | Employment income (PPh 21) | Fixed or variable allowance | |
| 469 | | Bonus / Gratifikasi | Employment income (PPh 21) | Irregular income, included in TER month | |
| 470 | | THR / Tunjangan Hari Raya | Employment income (PPh 21) | Holiday allowance | |
| 471 | | Lembur / Overtime | Employment income (PPh 21) | Overtime pay | |
| 472 | | BPJS / Iuran | Payroll deduction | Social security contribution | |
| 473 | | Potongan Pajak / PPh 21 | Tax withholding | Income tax withheld | |
| 474 | | Honorarium / Fee | PPh 21 (non-employee) or PPh 23 | Depends on relationship | |
| 475 | | Dividen / Dividend | PPh 23 or Final | Investment income | |
| 476 | | Bunga / Interest | PPh 23 or Final | Interest income | |
| 477 | | Sewa / Rent | PPh 23 or PPh 4(2) | Rental income | |
| 478 | |
| 479 | --- |
| 480 | |
| 481 | ## Section 15 — Sources |
| 482 | |
| 483 | | Source | URL | |
| 484 | |---|---| |
| 485 | | DJP (Direktorat Jenderal Pajak) | https://www.pajak.go.id | |
| 486 | | DJP Online | https://djponline.pajak.go.id | |
| 487 | | UU HPP No. 7/2021 | Revenue Code — Pasal 17 ayat (1) huruf a | |
| 488 | | PP 58/2023 (TER PPh 21) | https://peraturan.bpk.go.id/Details/266564/pp-no-58-tahun-2023 | |
| 489 | | PMK 168/2023 (TER implementation) | https://jdih.kemenkeu.go.id | |
| 490 | | `steevenz/id-payroll-calculator` (MIT, 21★) | https://github.com/steevenz/id-payroll-calculator | |
| 491 | | `KejawenLab/PPH21` (MIT, 6★) | https://github.com/KejawenLab/PPH21 | |
| 492 | | BPJS Kesehatan | https://www.bpjs-kesehatan.go.id | |
| 493 | | BPJS Ketenagakerjaan | https://www.bpjsketenagakerjaan.go.id | |
| 494 | |
| 495 | --- |
| 496 | |
| 497 | *OpenAccountants — open-source tax computation skills* |
| 498 | *This is not tax advice. All outputs must be reviewed by a qualified professional before filing.* |
| 499 |
Run this skill, then get an accountant to check it
After running the full skill pack in your AI agent, sign up and upload your worksheet. We'll connect you with a trusted accountant in our network who can review your numbers before you file.
Quality
Q2: Research-verified
Deep research against tax authority sources. Not yet tested on real data.
Needs real client data + practitioner sign-off to reach Q1.
Accountant Review
About
Use this skill whenever asked to calculate, review, or advise on Indonesian payroll — PPh 21 (income tax withholding), BPJS Kesehatan (health insurance), BPJS Ketenagakerjaan (JHT, JP, JKK, JKM employment social security), biaya jabatan, or PTKP thresholds. Trigger on phrases like "PPh 21", "PPh Pasal 21", "pajak penghasilan", "BPJS", "gaji Indonesia", "payroll Indonesia", "potong pajak karyawan", "TER PPh 21", "PTKP", or any Indonesia employment income tax / social security request. ALWAYS read this skill before touching any Indonesia payroll or PPh 21 work.
Use this skill
This skill is open source and free to use in any AI agent. Copy it, download it, or clone the repo. If you find an error, flag it — a licensed accountant will review.