WhatsApp us

Blog6 min read29 Oct 2026

Indonesian payroll sheet for BPJS, PPh 21 and THR

One payroll sheet for Indonesia with BPJS employer and employee rates, PPh 21 under the TER method, and THR timing. Columns, calculation order and checks.

Indonesian payroll sheet for BPJS, PPh 21 and THR

By KYN AI Advisory Team — AI implementation specialists, Singapore

An Indonesian monthly payroll needs three calculations in a fixed order: BPJS contributions from the wage base, PPh 21 income tax withheld with the monthly effective rate (TER), and Tunjangan Hari Raya (THR), the religious holiday allowance, paid once a year. This article gives the columns for one sheet, the rates to check each month, and the tests that catch errors before pay day. Rates change, so every figure below links to its source and you should re-check it before each year's run.

What columns does the sheet need?

Build one row per employee per month. Keep inputs, calculations and outputs in separate column groups.

Inputs

  • Employee ID, legal name, NPWP or NIK
  • Marital and dependants status code (the PTKP category)
  • Basic wage and fixed allowances
  • Variable pay this month (overtime, bonus)
  • Workplace risk class for JKK
  • Joining date and contract type

BPJS calculations

  • Kesehatan wage base, employer share, employee share
  • JHT, JP, JKK, JKM employer and employee shares

Tax calculations

  • Gross income for tax
  • TER category (A, B or C) and TER rate
  • PPh 21 withheld

Outputs

  • Take-home pay
  • Total employer cost
  • Remittance amounts by agency

Freeze the input columns once payroll is approved. Changes after approval go through a new version, not an overwrite.

What are the BPJS rates?

Two agencies are involved: BPJS Kesehatan (health) and BPJS Ketenagakerjaan (employment). The rates in this table are from a payroll guide published by Gadjian, and a second guide from Kantorku lists the same rates for 2026.

| Program | Employer | Employee | |---|---|---| | BPJS Kesehatan | 4% | 1% | | JHT (old-age savings) | 3.7% | 2% | | JP (pension) | 2% | 1% | | JKK (work accident) | 0.24% to 1.74% by risk class | none | | JKM (death) | 0.3% | none |

Kesehatan has a wage ceiling of Rp12,000,000 per month, and JP has its own ceiling that is reviewed each year. Both guides are commercial payroll publishers, not the agencies. Take the current JP ceiling from BPJS Ketenagakerjaan before you set the cell, and put it in a settings tab with the date you checked it, not inside formulas.

Two traps recur:

  1. The wrong base. BPJS uses wage as the regulation defines it. Decide with your adviser which allowances count, and apply the rule to every employee.
  2. The ceiling applied to the wrong program. Cap Kesehatan and JP at their own ceilings. JHT, JKK and JKM have none in either guide.

How does PPh 21 work with TER?

Since PMK 168/2023, monthly withholding for permanent employees uses the effective average rate (TER). DJP's explanation says the monthly TER applies in every pay period except the last one of the tax year. In the last period, the progressive rates of Article 17(1) of the Income Tax Law apply instead. TER rates are grouped into Categories A, B and C by the employee's PTKP status.

The sheet logic:

  1. Look up the employee's PTKP code and map it to category A, B or C.
  2. Take gross monthly income for tax.
  3. Look up the TER percentage for that category and income band, from the table in PMK 168/2023.
  4. Multiply and record the PPh 21.
  5. In the final pay period of the year, compute annual tax with the Article 17 rates, subtract tax already withheld, and withhold the difference.

Put the TER table in its own tab, with the source and the date. The final-month true-up is where most spreadsheets fail, because it needs the year's gross income, deductible contributions and the sum of tax withheld to date. Add three year-to-date columns and fill them every month, so December is not a rebuild.

How does THR fit into the sheet?

THR is a statutory allowance, not a bonus. Under Ministry of Manpower regulation 6/2016, an employer pays it no later than seven days before the religious holiday, and a worker with 12 months of continuous service receives one month of wages. The Cabinet Secretariat's report on the rule states both points. The article dates from 2017, so check the Ministry's current circular each year.

Workers with fewer than 12 months of service receive a proportional amount in the Ministry's usual guidance. Confirm the formula in the year's circular before you build it.

In the sheet:

  • Add a THR accrual column. Accrue 1/12 of a month's wage each month, so the cash cost does not arrive as a surprise.
  • Add a holiday date cell per religion group in your settings tab, and a pay-by date cell equal to that date minus seven days.
  • Treat the THR payment as income for PPh 21 in the month it is paid. Tax it with the same TER logic, and do not skip it in the year-end true-up.

Set a reminder 30 days before the pay-by date. A late THR is a compliance event, not an HR inconvenience.

What checks should run before pay day?

Put these on a checks tab. Any red cell stops the run.

  • Totals tie. Sum of employee net pay plus tax plus BPJS plus other deductions equals total employer cost minus employer-only contributions.
  • Ceilings respected. No Kesehatan or JP wage base above its ceiling.
  • Rates match the settings tab. No hand-typed percentage in any row.
  • Category mapping complete. Every employee has a PTKP code and a TER category.
  • Month-on-month variance. Net pay moved more than a set percentage compared with last month: list the employee for review.
  • New and leaving staff. Joiners and leavers have the correct number of days.
  • Duplicates. One row per employee ID.

These checks take minutes to read and prevent most corrections.

Where does a spreadsheet stop working?

At about the point where one person maintains it. The signs are: more than one entity, staff in several provinces with different wage rules, frequent mid-month changes, or a need to produce agency remittance files and payslips every month. Then the sheet becomes a system: the same logic in code, rates in a table with effective dates, a log of every change, and a person approving each run.

Where KYN fits

KYN built payroll on 2026 CPF rules for its own books, with payslips, bank and CPF files, and an allowlist of who may run it. The same structure applies to Indonesia: rates in a dated table, calculations from the table, a logged approval before any file is produced. Systems run in your own cloud account. Money and filings wait for a named person.

A payroll sheet that calculates BPJS, PPh 21 and THR starts with a 14-day review of your current spreadsheet, pay components and employee records. The built version ships in under 90 days. See finance systems and security.

Frequently asked questions

Do I use TER for every month of the year?

For permanent employees, TER applies to every month except the last pay period of the tax year, where the Article 17 progressive rates apply to annual income. The adjustment reconciles the year's tax. DJP sets this out in its TER explanation.

Who pays BPJS, the employer or the employee?

Both, in different shares. The employee share is deducted from wages; the employer share is an additional cost. JKK and JKM are employer-only in the guides cited above.

When must THR be paid?

No later than seven days before the religious holiday, as the Cabinet Secretariat's report on regulation 6/2016 states. Put the pay-by date in the sheet and set a reminder.

Checked 30 October 2026.

Curious whether Marketing agents fits your business? Talk to KYN on WhatsApp — no forms, just a conversation.

Start Building →

Written 29 Oct 2026 · Checked 29 Oct 2026