Build BPJS Contribution File (BPJS Ketenagakerjaan & Kesehatan)
Skill: Convert payroll into the BPJS contribution file for Ketenagakerjaan and Kesehatan
Region: Indonesia (Indonesia) Category: Payroll — Jaminan Sosial (social security) Does: Takes monthly payroll and produces the BPJS contribution file — the iuran upload for BPJS Ketenagakerjaan (JHT, JP, JKK, JKM) and BPJS Kesehatan — splitting iuran between tenaga kerja (employee) and pemberi kerja (employer) on each worker's upah. System: BPJS Ketenagakerjaan (SIPP Online) & BPJS Kesehatan (e-Dabu / EDABU)
BPJS contributions are reported and paid monthly through the BPJS portals (SIPP Online for Ketenagakerjaan, e-Dabu for Kesehatan), not via DJP. Contribution rates, the upah ceilings (batas atas upah), and the JKK risk-class rates are set by regulation and change periodically — always confirm the current rates and the active upload layout before generating files.
When this applies
- You are an employer (pemberi kerja) with workers (tenaga kerja) enrolled in BPJS.
- Each month you submit the iuran based on each worker's reported upah (basic wage + fixed allowances), split into employer and employee shares.
- Employee shares (JHT 2%, JP 1%, BPJS Kesehatan 1%) are deducted from net pay; employer shares are an additional cost.
Input data required
| Group | Fields |
|---|---|
| Pemberi kerja | company name, NPP (Nomor Pendaftaran Perusahaan) BPJS TK, kode perusahaan Kesehatan |
| Tenaga kerja | name, NIK, nomor kepesertaan BPJS TK & Kesehatan, tanggal lahir |
| Upah | upah bulanan (basic + tunjangan tetap); status (kawin/anak) for Kesehatan family |
| Program flags | JHT, JP, JKK (risk class), JKM, BPJS Kesehatan participation |
| Period | masa iuran (month / year) |
Program and rate mapping
| Program | Iuran (typical) | Borne by |
|---|---|---|
| JHT (Jaminan Hari Tua) | 5.7% of upah → 3.7% employer + 2% employee | both |
| JP (Jaminan Pensiun) | 3% of upah (capped) → 2% employer + 1% employee | both |
| JKK (Jaminan Kecelakaan Kerja) | 0.24%–1.74% by risk class | employer |
| JKM (Jaminan Kematian) | 0.3% of upah | employer |
| BPJS Kesehatan | 5% of upah (capped) → 4% employer + 1% employee | both |
Calculation rules
- Iuran per program = dasar upah × tariff, split per the table into pemberi kerja and tenaga kerja shares.
- Ceilings (batas atas upah): JP has a wage ceiling (reviewed yearly); BPJS Kesehatan is capped at a maximum upah; JHT/JKK/JKM use full reported upah. Confirm the current ceilings.
- JKK uses the company's risk class (tingkat risiko) rate (0.24%–1.74%).
- BPJS Kesehatan covers up to 5 family members on the 5% base; additional family members carry a separate per-head iuran.
- File totals = sum of all worker iuran per program; the kode iuran / virtual account amount must equal the upload total before payment.
Worked example (one worker, monthly)
Masa Iuran 05/2026
Pemberi Kerja: PT Sumber Makmur, NPP 1234567 (JKK risk class II = 0.54%)
Tenaga Kerja : Budi Santoso, NIK 3201..., upah Rp 10.000.000
BPJS Ketenagakerjaan:
JHT 5.7% = 570.000 (employer 370.000 + employee 200.000)
JP 3.0% = 300.000 (employer 200.000 + employee 100.000) ; subject to JP wage ceiling
JKK 0.54% = 54.000 (employer)
JKM 0.3% = 30.000 (employer)
Subtotal = 954.000 (employer 654.000 + employee 300.000)
BPJS Kesehatan 5% = 500.000 (employer 400.000 + employee 100.000) ; subject to upah cap
Employee deduction this month = 200.000 + 100.000 + 100.000 = 400.000
Employer cost this month = 654.000 + 400.000 = 1.054.000
Uploaded as the monthly iuran file in SIPP Online (Ketenagakerjaan) and e-Dabu (Kesehatan); iuran is paid against the virtual account before the deadline.
Validation checklist
- Correct NPP / kode perusahaan and masa iuran; each worker has valid nomor kepesertaan and NIK
- Reported upah = basic + tunjangan tetap; JP and Kesehatan ceilings applied; JHT/JKK/JKM on full upah
- JKK rate matches the company's risk class; JKM 0.3%
- Employer vs employee split correct (JHT 3.7/2, JP 2/1, Kesehatan 4/1); JKK/JKM employer-only
- BPJS Kesehatan family members within the 5-person base; extra members billed separately
- File totals per program reconcile; virtual account amount matches the upload
- Submitted via SIPP Online / e-Dabu and paid before the monthly deadline
- Built per the current BPJS rates, ceilings, and upload layout
Last updated: 2026-06-04 — confirm the active schema version, field codes, and DJP/Coretax requirements against the current Direktorat Jenderal Pajak specifications before use.